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.eq(TProportionCheck::getCheckType, "0");
// 公司平台
// 申泽平台管理员
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(TProportionCheck::getAdminId, admin.getId());
}
query.in(TProportionCheck::getCheckType, "1", "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);
}
}
@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) {
if (adminId.equals("1")) {
LambdaQueryWrapper queryWrapper = Wrappers.lambdaQuery();
queryWrapper.eq(TEquipment::getClientId, clientId);
TEquipment equipment = tEquipmentService.getOne(queryWrapper);
adminId = String.valueOf(equipment.getAdminId());
}
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);
TEquipment equipment = tEquipmentService.getOne(query1);
if (equipment == null) {
return R.fail("找不到该机器!");
}
String name = equipment.getName();
String clientId = equipment.getClientId();
if (StringUtils.isEmpty(name)) {
name = clientId.substring(clientId.length() - 6);
}
//查看是否有审核中的
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());
TAdmin admins = adminService.getOne(queryTAdmin);
if (admins != null) {
agencyId = admins.getId();
} else {
return R.fail("找不到第一个分账人!");
}
}
if (tProportion.getType() > 1) {
//2个
LambdaQueryWrapper queryTAdmin1 = Wrappers.lambdaQuery();
queryTAdmin1.eq(TAdmin::getUsername, tProportion.getMerchantName());
TAdmin admins1 = adminService.getOne(queryTAdmin1);
if (admins1 != null) {
merchantId = admins1.getId();
} else {
return R.fail("找不到第二个分账人!");
}
}
if (tProportion.getType() > 2) {
//3个
LambdaQueryWrapper queryTAdmin2 = Wrappers.lambdaQuery();
queryTAdmin2.eq(TAdmin::getUsername, tProportion.getPersonageName());
TAdmin admins2 = adminService.getOne(queryTAdmin2);
if (admins2 != null) {
personageId = admins2.getId();
} else {
return R.fail("找不到第三个分账人!");
}
}
LambdaQueryWrapper query = Wrappers.lambdaQuery();
query.eq(TProportion::getAdminId, tProportion.getAdminId());
query.eq(TProportion::getClientId, tProportion.getClientId());
TProportion proportion = tProportionService.getOne(query);
if (proportion != null) {
//提交审核
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 {
//提交审核
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());
//没有,判断是否为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);
proportionCheck.setCheckType("1");
tProportionCheckService.save(proportionCheck);
return R.ok("添加成功");
} else {
proportionCheck.setCheckType("0");
tProportionCheckService.save(proportionCheck);
return R.ok("已提交审核");
}
}
}
@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);
TProportion proportion = tProportionService.getOne(query);
return R.ok(proportion);
}
@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();
}
}