package com.szwl.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.szwl.constant.ResponseCodesEnum;
import com.szwl.model.bo.R;
import com.szwl.model.bo.ResponseModel;
import com.szwl.model.entity.*;
import com.szwl.service.TAdminService;
import com.szwl.service.TEquipmentService;
import com.szwl.service.TProportionCheckService;
import com.szwl.service.TProportionService;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 分账表 前端控制器
*
*
* @author wuhs
* @since 2022-05-10
*/
@RestController
@RequestMapping("/tProportion")
public class TProportionController {
@Autowired
TProportionCheckService tProportionCheckService;
@Autowired
TProportionService tProportionService;
@Autowired
TEquipmentService tEquipmentService;
@Autowired
TAdminService adminService;
@ApiOperation(value = "获取分销信息列表 分页 商户")
@GetMapping("/pageProportion")
public ResponseModel> pageProportion(String adminId,String type,long current, long size ) {
TAdmin admin = adminService.getById(adminId);
if(StringUtils.isEmpty(adminId)){
return R.fail(ResponseCodesEnum.A0100);
}
if(type.equals("0")){
//未审核
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if(admin.getType()>1){
query.eq(TProportionCheck::getAdminId,admin.getId());
query.in(TProportionCheck::getCheckType,"0","2","3");
}
// 公司平台
// 申泽平台管理员
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportionCheck::getAdminId,adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportionCheck::getAdminId,adminIds);
}
query.orderByDesc(TProportionCheck::getCreateDate);
Page page = new Page<>(current, size, true);
IPage iPage = tProportionCheckService.page(page, query);
List records = iPage.getRecords();
if(records.size()>0){
for(TProportionCheck proportionCheck:records){
if(proportionCheck.getEquipmentId()!=null){
TEquipment equipment = tEquipmentService.getById(proportionCheck.getEquipmentId());
if(equipment != null) {
if(StringUtils.isNotEmpty(equipment.getName())){
proportionCheck.setEquipmentName(equipment.getName());
}else {
proportionCheck.setEquipmentName(equipment.getClientId());
}
}
}
}
}
return R.ok(iPage);
}else {
//已审核
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if(admin.getType()>1){
query.eq(TProportion::getAdminId,admin.getId());
}
// 公司平台
// 申泽平台管理员
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportion::getAdminId,adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportion::getAdminId,adminIds);
}
query.orderByDesc(TProportion::getCreateDate);
Page page = new Page<>(current, size, true);
IPage iPage = tProportionService.page(page, query);
List records = iPage.getRecords();
if(records.size()>0){
for(TProportion proportion:records){
if(proportion.getEquipmentId()!=null){
TEquipment equipment = tEquipmentService.getById(proportion.getEquipmentId());
if(equipment != null) {
if(StringUtils.isNotEmpty(equipment.getName())){
proportion.setEquipmentName(equipment.getName());
}else {
proportion.setEquipmentName(equipment.getClientId());
}
}
}
}
}
return R.ok(iPage);
}
}
@ApiOperation(value = "获取分销信息列表 分页 平台")
@GetMapping("/pageProportionAdmin")
public ResponseModel> pageProportionAdmin(String adminId,String userName,String type,long current, long size ) {
TAdmin admin = adminService.getById(adminId);
if(StringUtils.isEmpty(adminId)){
return R.fail(ResponseCodesEnum.A0100);
}
//未审核
LambdaQueryWrapper query = Wrappers.lambdaQuery();
if(admin.getType()>1){
query.eq(TProportionCheck::getAdminId,admin.getId());
}
if(type.equals("0")){
query.eq(TProportionCheck::getCheckType,type);
}
// 申泽平台管理员
if (admin.getId() == 2738) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.isNull(TAdmin::getCompanyType).or()
.eq(TAdmin::getCompanyType, "0");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportionCheck::getAdminId,adminIds);
}
// 七云平台管理员
if (admin.getId() == 2739) {
LambdaQueryWrapper adminQuery = Wrappers.lambdaQuery();
adminQuery.eq(TAdmin::getCompanyType, "1");
List adminIds = adminService.list(adminQuery).stream()
.map(TAdmin::getId).collect(Collectors.toList());
query.in(TProportionCheck::getAdminId,adminIds);
}
if(StringUtils.isNotEmpty(userName)){
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TAdmin::getUsername,userName);
List list = adminService.list(query1);
if(list.size()>0){
query.eq(TProportionCheck::getAdminId,list.get(0).getId());
}
}
query.orderByDesc(TProportionCheck::getCreateDate);
Page page = new Page<>(current, size, true);
IPage iPage = tProportionCheckService.page(page, query);
List records = iPage.getRecords();
if(records.size()>0){
for(TProportionCheck proportionCheck:records){
if(proportionCheck.getEquipmentId()!=null){
TEquipment equipment = tEquipmentService.getById(proportionCheck.getEquipmentId());
if(equipment != null) {
if(StringUtils.isNotEmpty(equipment.getName())){
proportionCheck.setEquipmentName(equipment.getName());
}else {
proportionCheck.setEquipmentName(equipment.getClientId());
}
}
}
}
}
return R.ok(iPage);
}
@ApiOperation(value = "查找机器分销信息信息")
@PostMapping("/getOne")
public ResponseModel> getOne(String adminId, String clientId) {
TAdmin admin = adminService.getById(adminId);
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportion::getAdminId,adminId);
query.eq(TProportion::getClientId,clientId);
List list = tProportionService.list(query);
if(list.size()>0){
//已经注册,就要查看是否有提交审核的
// LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
// query1.eq(TProportionCheck::getAdminId,adminid);
// query1.eq(TProportionCheck::getClientId,clientId);
// List list1 = tProportionCheckService.list(query1);
// if(list1.size()>0){
// int i = 0;
// for(TProportionCheck tProportionCheck:list1){
// if(tProportionCheck.getCheckType().equals("0")||tProportionCheck.getCheckType().equals("3")){
// i++;
// }
// }
// if(i==0){
// return R.ok(list.get(0));
// }else {
// for(int j=list1.size()-1;j>=0;j--){
// if(!list1.get(j).getCheckType().equals("2")&!list1.get(j).getCheckType().equals("1")){
// if(list1.get(j).getCheckType().equals("3")){
// Date data = new Date();
// long time = data.getTime();
// long updateTime = list1.get(j).getModifyDate().getTime();
// if(3*24*60*60*1000l>time-updateTime){
// //拒绝的审核,超过3天后不显示
// return R.ok(list.get(0));
// }else {
// return R.ok(list.get(j));
// }
// }
// return R.ok(list.get(j));
// }
// }
// }
// }else {
// return R.ok(list.get(0));
// }
TProportion tProportion = list.get(0);
if(tProportion.getAgencyId()!=null){
TAdmin admin1 = adminService.getById(tProportion.getAgencyId());
tProportion.setAgencyName(admin1.getUsername());
}
if(tProportion.getMerchantId()!=null){
TAdmin admin2 = adminService.getById(tProportion.getMerchantId());
tProportion.setMerchantName(admin2.getUsername());
}
if(tProportion.getPersonageId()!=null){
TAdmin admin3 = adminService.getById(tProportion.getId());
tProportion.setPersonageName(admin3.getUsername());
}
return R.ok(tProportion);
}else {
return R.fail("尚未注册!");
}
}
@ApiOperation(value = "保存或提交审核")
@PostMapping("/save")
public ResponseModel> save(@RequestBody TProportion tProportion) {
if(tProportion.getAdminId()==null||StringUtils.isEmpty(tProportion.getClientId())){
R.fail("信息有空!");
}
TAdmin admin = adminService.getById(tProportion.getAdminId());
//查找机器,看改商家是否有该机器
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TEquipment::getAdminId,tProportion.getAdminId());
query1.eq(TEquipment::getClientId,tProportion.getClientId());
List equipmentList = tEquipmentService.list(query1);
if(equipmentList.size()<=0){
return R.fail("找不到该机器!");
}
TEquipment equipment = equipmentList.get(0);
//查看是否有审核中的
LambdaQueryWrapper queryCheck = Wrappers.lambdaQuery();
queryCheck.eq(TProportionCheck::getAdminId,tProportion.getAdminId());
queryCheck.eq(TProportionCheck::getClientId,tProportion.getClientId());
queryCheck.eq(TProportionCheck::getCheckType,"0");
List listCheck = tProportionCheckService.list(queryCheck);
if(listCheck.size()>0){
return R.fail("已有审核,如需修改请先取消原来的审核!");
}
Long agencyId = null;
Long merchantId = null;
Long personageId = null;
//查找个分账人的id
if(tProportion.getType()>0){
//1个
LambdaQueryWrapper queryTAdmin = Wrappers.lambdaQuery();
queryTAdmin.eq(TAdmin::getUsername,tProportion.getAgencyName());
List admins = adminService.list(queryTAdmin);
if(admins.size()>0){
TAdmin tAdmin = admins.get(0);
agencyId = tAdmin.getId();
}else {
return R.fail("找不到第一个分账人!");
}
}
if(tProportion.getType()>1){
//2个
LambdaQueryWrapper queryTAdmin1 = Wrappers.lambdaQuery();
queryTAdmin1.eq(TAdmin::getUsername,tProportion.getMerchantName());
List admins1 = adminService.list(queryTAdmin1);
if(admins1.size()>0){
TAdmin tAdmin = admins1.get(0);
merchantId = tAdmin.getId();
}else {
return R.fail("找不到第二个分账人!");
}
}
if(tProportion.getType()>2){
//3个
LambdaQueryWrapper queryTAdmin2 = Wrappers.lambdaQuery();
queryTAdmin2.eq(TAdmin::getUsername,tProportion.getPersonageName());
List admins2 = adminService.list(queryTAdmin2);
if(admins2.size()>0){
TAdmin tAdmin = admins2.get(0);
personageId = tAdmin.getId();
}else {
return R.fail("找不到第三个分账人!");
}
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportion::getAdminId,tProportion.getAdminId());
query.eq(TProportion::getClientId,tProportion.getClientId());
List list = tProportionService.list(query);
if(list.size()>0){
//已有,属于第二次提交信息,需要审核
TProportion oldProportion = list.get(0);
//已有,判断是否为99%和1%组合
// if(tProportion.getProportion().compareTo(new BigDecimal("99"))==0&&tProportion.getAdminProportion().compareTo(new BigDecimal("1"))==0){
// oldProportion.setAgencyId(agencyId);
// oldProportion.setMerchantId(merchantId);
// oldProportion.setPersonageId(personageId);
// oldProportion.setAgencyProportion(BigDecimal.valueOf(0.00));
// oldProportion.setMerchantProportion(BigDecimal.valueOf(0.00));
// oldProportion.setPersonageProportion(BigDecimal.valueOf(0.00));
// oldProportion.setModifyDate(new Date());
// tProportionService.updateById(tProportion);
// return R.ok("修改成功");
// }else {
//提交审核
TProportionCheck proportionCheck = new TProportionCheck();
proportionCheck.setAdminId(tProportion.getAdminId());
proportionCheck.setEquipmentId(equipment.getId());
proportionCheck.setClientId(tProportion.getClientId());
proportionCheck.setType(tProportion.getType());
proportionCheck.setProportion(tProportion.getProportion());
proportionCheck.setAdminProportion(tProportion.getAdminProportion());
proportionCheck.setAgencyId(agencyId);
proportionCheck.setMerchantId(merchantId);
proportionCheck.setPersonageId(personageId);
proportionCheck.setAgencyProportion(tProportion.getAgencyProportion());
proportionCheck.setMerchantProportion(tProportion.getMerchantProportion());
proportionCheck.setPersonageProportion(tProportion.getPersonageProportion());
proportionCheck.setAgencyName(tProportion.getAgencyName());
proportionCheck.setMerchantName(tProportion.getMerchantName());
proportionCheck.setPersonageName(tProportion.getPersonageName());
proportionCheck.setEquipmentName(equipment.getName());
proportionCheck.setCreateDate(new Date());
proportionCheck.setModifyDate(new Date());
proportionCheck.setCheckType("0");
tProportionCheckService.save(proportionCheck);
return R.ok("已提交审核");
// }
}else {
//没有,判断是否为99%和1%组合
if(tProportion.getProportion().compareTo(new BigDecimal("99"))==0&&tProportion.getAdminProportion().compareTo(new BigDecimal("1"))==0){
tProportion.setAgencyId(agencyId);
tProportion.setMerchantId(merchantId);
tProportion.setPersonageId(personageId);
tProportion.setEquipmentId(equipment.getId());
tProportion.setEquipmentName(equipment.getName());
tProportion.setAgencyProportion(BigDecimal.valueOf(0.00));
tProportion.setMerchantProportion(BigDecimal.valueOf(0.00));
tProportion.setPersonageProportion(BigDecimal.valueOf(0.00));
tProportion.setCreateDate(new Date());
tProportion.setModifyDate(new Date());
tProportionService.save(tProportion);
return R.ok("添加成功");
}else {
//提交审核
TProportionCheck proportionCheck = new TProportionCheck();
proportionCheck.setAdminId(tProportion.getAdminId());
proportionCheck.setEquipmentId(equipment.getId());
proportionCheck.setEquipmentName(equipment.getName());
proportionCheck.setClientId(tProportion.getClientId());
proportionCheck.setType(tProportion.getType());
proportionCheck.setProportion(tProportion.getProportion());
proportionCheck.setAdminProportion(tProportion.getAdminProportion());
proportionCheck.setAgencyId(agencyId);
proportionCheck.setMerchantId(merchantId);
proportionCheck.setPersonageId(personageId);
proportionCheck.setAgencyProportion(tProportion.getAgencyProportion());
proportionCheck.setMerchantProportion(tProportion.getMerchantProportion());
proportionCheck.setPersonageProportion(tProportion.getPersonageProportion());
proportionCheck.setAgencyName(tProportion.getAgencyName());
proportionCheck.setMerchantName(tProportion.getMerchantName());
proportionCheck.setPersonageName(tProportion.getPersonageName());
proportionCheck.setCreateDate(new Date());
proportionCheck.setModifyDate(new Date());
proportionCheck.setCheckType("0");
tProportionCheckService.save(proportionCheck);
return R.ok("已提交审核");
}
// tProportion.setSettleableBalance(BigDecimal.valueOf(0.00));
// tProportion.setCreateDate(new Date());
// tProportion.setModifyDate(new Date());
// tProportionService.save(tProportion);
}
}
@ApiOperation(value = "")
@GetMapping("/getById")
public ResponseModel> getById( String id,String type) {
if(StringUtils.isEmpty(id)&&StringUtils.isEmpty(type)){
return R.fail(ResponseCodesEnum.A0100);
}
if(type.equals("0")){
//未审核
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportionCheck::getId,id);
List list = tProportionCheckService.list(query);
TProportionCheck tProportionCheck = list.get(0);
return R.ok(tProportionCheck);
}else {
//已审核
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportion::getId,id);
List list = tProportionService.list(query);
TProportion tProportion = list.get(0);
return R.ok(tProportion);
}
}
@ApiOperation(value = "获取机器分销信息")
@GetMapping("/getProportion")
public ResponseModel getProportion(@RequestParam String equipmentId) {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportion::getEquipmentId,Long.valueOf(equipmentId));
List list = tProportionService.list(query);
TProportion tProportion = list.get(0);
return R.ok(tProportion);
}
@ApiOperation(value = "批量设置机器分销")
@GetMapping("/setProportion")
public ResponseModel> setProportion() {
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TAdmin::getIfForeign,"0");
List list = adminService.list(query);
List equipmentList = new ArrayList<>();
if(list.size()>0){
for(TAdmin admin:list){
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TEquipment::getAdminId,admin.getId());
List list1 = tEquipmentService.list(query1);
if(list1.size()>0){
for(TEquipment equipment:list1){
String s = equipment.getClientId().substring(equipment.getClientId().length() - 1, equipment.getClientId().length());
if(!s.equals("x")){
equipmentList.add(equipment);
}
}
}
}
}
if(equipmentList.size()>0){
for(TEquipment equipment:equipmentList){
String clientId = equipment.getClientId();
LambdaQueryWrapper query2 = Wrappers.lambdaQuery();
query2.eq(TEquipment::getClientId,clientId);
List list2 = tEquipmentService.list(query2);
TEquipment equipment1 = list2.get(0);
if(equipment1!=null&&equipment1.getId()!=null){
TAdmin admin = adminService.getById(equipment1.getAdminId());
String name = admin.getName();
//查询机器是否已经有设置分销
LambdaQueryWrapper query1 = Wrappers.lambdaQuery();
query1.eq(TProportion::getClientId,equipment1.getClientId());
query1.eq(TProportion::getEquipmentId,equipment1.getId());
List list1 = tProportionService.list(query1);
if(list1.size()>0){
//已有
}else {
//没有,需要创建
//1,判断是否新机器
// Date createDate = equipment.getCreateDate();
// long time = createDate.getTime();
// DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String day= "2022-09-21 23:59:59";
// try {
// Date parse = simpleDateFormat.parse(day);
// if(time>parse.getTime()){
// return "新机器,不能已此方式生成分销!";
// }
// } catch (ParseException e) {
// e.printStackTrace();
// }
//先找到原账户的分销
LambdaQueryWrapper query3 = Wrappers.lambdaQuery();
query3.eq(TProportion::getAdminId,admin.getId());
List list3 = tProportionService.list(query3);
if(list3.size()>0){
TProportion adminProportion = list3.get(0);
if(StringUtils.isEmpty(adminProportion.getClientId())){
TProportion equipmentProportion = new TProportion();
equipmentProportion.setCreateDate(new Date());
equipmentProportion.setModifyDate(new Date());
equipmentProportion.setAdminId(admin.getId());
equipmentProportion.setClientId(equipment.getClientId());
equipmentProportion.setEquipmentId(equipment.getId());
equipmentProportion.setAdminProportion(adminProportion.getAdminProportion());
Integer type = adminProportion.getType();
if(type!=null){
switch (type) {
case 1:
equipmentProportion.setProportion(adminProportion.getAgencyProportion());
equipmentProportion.setAgencyProportion(new BigDecimal("0.00"));
equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
equipmentProportion.setType(0);
break;
case 2:
equipmentProportion.setProportion(adminProportion.getMerchantProportion());
equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
// if(adminProportion.getAgencyProportion().compareTo(new BigDecimal("0.00"))!=0){
// equipmentProportion.setAgencyId(admin.getAgencyId());
// TAdmin byId = adminService.getById(admin.getAgencyId());
// equipmentProportion.setAgencyName(byId.getUsername());
// }
equipmentProportion.setAgencyId(admin.getAgencyId());
TAdmin byId = adminService.getById(admin.getAgencyId());
equipmentProportion.setAgencyName(byId.getUsername());
equipmentProportion.setMerchantProportion(new BigDecimal("0.00"));
equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
equipmentProportion.setType(1);
break;
case 3:
equipmentProportion.setProportion(adminProportion.getPersonageProportion());
equipmentProportion.setAgencyProportion(adminProportion.getAgencyProportion());
// if(adminProportion.getAgencyProportion().compareTo(new BigDecimal("0.00"))!=0){
// equipmentProportion.setAgencyId(admin.getAgencyId());
// TAdmin byId = adminService.getById(admin.getAgencyId());
// equipmentProportion.setAgencyName(byId.getUsername());
// }
equipmentProportion.setAgencyId(admin.getAgencyId());
TAdmin byId1 = adminService.getById(admin.getAgencyId());
equipmentProportion.setAgencyName(byId1.getUsername());
equipmentProportion.setMerchantProportion(adminProportion.getMerchantProportion());
// if(adminProportion.getMerchantProportion().compareTo(new BigDecimal("0.00"))!=0){
// equipmentProportion.setMerchantId(admin.getMerchantId());
// TAdmin byId = adminService.getById(admin.getMerchantId());
// equipmentProportion.setMerchantName(byId.getUsername());
// }
equipmentProportion.setMerchantId(admin.getMerchantId());
TAdmin byId2 = adminService.getById(admin.getMerchantId());
equipmentProportion.setMerchantName(byId2.getUsername());
equipmentProportion.setPersonageProportion(new BigDecimal("0.00"));
equipmentProportion.setType(2);
break;
}
boolean save = tProportionService.save(equipmentProportion);
}
}
}else {
}
}
}
}
}
return R.ok();
}
}