package com.winhc.repal.service.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.module.login.usersession.UserBean; import com.winhc.common.base.ApiDataResult; import com.winhc.common.enums.CodeMsg; import com.winhc.common.exception.CommonException; import com.winhc.repal.cloud.DataMiddlewareService; import com.winhc.repal.cloud.dto.GetCompanyRiskNumDTO; import com.winhc.repal.cloud.dto.GetCreditPunishmentLabelDTO; import com.winhc.repal.cloud.dto.GetFinanceDynamicNumDTO; import com.winhc.repal.cloud.vo.CompanyRiskNumVO; import com.winhc.repal.cloud.vo.CreditPunishmentLabelListVO; import com.winhc.repal.cloud.vo.FinanceDynamicNumVO; import com.winhc.repal.entity.*; import com.winhc.repal.enums.*; import com.winhc.repal.model.bo.RepalCustomerInfoBO; import com.winhc.repal.model.bo.UserContextBO; import com.winhc.repal.model.dto.*; import com.winhc.repal.model.vo.*; import com.winhc.repal.repository.RepalCustomerMapper; import com.winhc.repal.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.winhc.repal.util.UserContextUtil; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.winhc.common.model.base.VOPage; import com.winhc.repal.model.cvt.RepalCustomerConvert; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @description RepalCustomer 接口实现类 * @author Generator * @date 2022-04-08 */ @Service public class RepalCustomerServiceImpl extends ServiceImpl implements RepalCustomerService { @Autowired private RepalCustomerMapper repalCustomerMapper; @Autowired private RepalBookService repalBookService; @Autowired private RepalBillService repalBillService; @Autowired private RepalBillOperLogService repalBillOperLogService; @Autowired private RepalCustChargeRelService repalCustChargeRelService; @Autowired private RepalGroupMemberService repalGroupMemberService; @Autowired private RepalRemindHistoryService repalRemindHistoryService; @Autowired private RepalLinkService repalLinkService; @Autowired private DataMiddlewareService dataMiddlewareService; @Autowired private RepalChangeRecordService repalChangeRecordService; @Autowired private RepalRolePermissionService repalRolePermissionService; @Override public List getCustList(Integer custType) { //不校验权限,返回全部客户供应商列表 UserContextBO userContextBO = UserContextUtil.getUser(); Long repalGroupId = repalGroupMemberService.getUserGroupId(userContextBO.getUserId()); List repalCustomers = list(Wrappers.lambdaQuery(RepalCustomer.class) .eq(RepalCustomer::getRepalGroupId,repalGroupId) .eq(RepalCustomer::getDeleted,Dict.DeletedStatusEnunm.否.getCode()) .eq(RepalCustomer::getCustType,custType)); if(CollUtil.isEmpty(repalCustomers)){ return new ArrayList<>(); } List result = new ArrayList<>(repalCustomers.size()); for(RepalCustomer repalCustomer:repalCustomers){ RepalCustomerSimpleVO repalCustomerSimpleVO = new RepalCustomerSimpleVO(); result.add(repalCustomerSimpleVO); BeanUtils.copyProperties(repalCustomer,repalCustomerSimpleVO); } return result; } @Override public VOPage find(RepalCustomerQueryDTO dto,UserBean userBean) { //权限 boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), Dict.custTypeEnum.客户.getCode().equals(dto.getCustType()) ? PermissionEnum.QUERY_ALL_CUST.getCode() : PermissionEnum.QUERY_ALL_SUPPLY.getCode()); //查组织id RepalGroupMember repalGroupMember = repalGroupMemberService.getOne(Wrappers.lambdaQuery(RepalGroupMember.class) .eq(RepalGroupMember::getUserId,userBean.getUserId()) .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode()),false); if(ObjectUtil.isNull(repalGroupMember)){ return new VOPage<>(); } Page page = new Page<>(dto.getPageNum(),dto.getPageSize()); int billType = Dict.custTypeEnum.客户.getCode().equals(dto.getCustType()) ? RepalBillTypeEnum.RECEIVABLE.getCode() : RepalBillTypeEnum.RECEIPT.getCode(); page = repalCustomerMapper.getCustPage(page, repalGroupMember.getRepalGroupId(),dto.getCustProperty(),dto.getSortType(),dto.getCustType(),billType,allFlag,userBean.getUserId()); VOPage result = new VOPage<>(dto.getPageNum(), dto.getPageSize(), page.getTotal(), new ArrayList<>()); if(CollUtil.isEmpty(page.getRecords())){ return result; } //查询负责人 List custIds = page.getRecords().stream().map(RepalCustomerInfoBO::getCustId).collect(Collectors.toList()); List rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class) .in(RepalCustChargeRel::getCustId,custIds)); Map> relMap = rels.stream().collect(Collectors.groupingBy(RepalCustChargeRel::getCustId)); Map memberMap = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class) .in(RepalGroupMember::getUserId,rels.stream().map(RepalCustChargeRel::getMemberUserId).collect(Collectors.toList()))) .stream().collect(Collectors.toMap(RepalGroupMember::getUserId,Function.identity())); List voList = new ArrayList<>(); for(RepalCustomerInfoBO customerInfo:page.getRecords()){ RepalCustomerInfoVO vo = new RepalCustomerInfoVO(); BeanUtils.copyProperties(customerInfo,vo); vo.setReceivableStr(customerInfo.getReceivable().stripTrailingZeros().toPlainString()); vo.setTotalMoneyStr(customerInfo.getTotalMoney().stripTrailingZeros().toPlainString()); //查询未读动态数量 if(Dict.custTypeEnum.客户.getCode().equals(dto.getCustType())) { List repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class) .eq(RepalBill::getCustomerId, customerInfo.getCustId()) .eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode())); if (CollUtil.isNotEmpty(repalBills)) { RepalBillRemindUnReadVO unRead = repalRemindHistoryService.getRemindUnReadVO(repalBills, userBean.getUserId()); if (ObjectUtil.isNotNull(unRead) && unRead.getUnreadTotalCount() > 0) { vo.setDynamicCountList(Stream.of(unRead.getUnreadOverdueCount(), unRead.getUnreadRiskCount(), unRead.getUnreadRankCount(), unRead.getUnreadFinanceCount()).collect(Collectors.toList())); } } } //负责人 if(relMap.containsKey(customerInfo.getCustId())){ List repalCustChargeRels = relMap.get(customerInfo.getCustId()); List memberList = new ArrayList<>(); vo.setCharges(memberList); for(RepalCustChargeRel rel:repalCustChargeRels){ RepalGroupMemberVO member = new RepalGroupMemberVO(); memberList.add(member); RepalGroupMember groupMember = memberMap.getOrDefault(rel.getMemberUserId(),new RepalGroupMember()); member.setMemberUserName(groupMember.getMemberUserName()); member.setUserId(groupMember.getUserId()); member.setId(groupMember.getId()); member.setRepalGroupId(groupMember.getRepalGroupId()); member.setRoleType(groupMember.getRoleType()); } } voList.add(vo); } result.setDataList(voList); return result; } @Override @Transactional public RepalCustomerDetailVO addCustomer(RepalCustomerDTO dto,UserBean userBean) { boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), Dict.custTypeEnum.客户.getCode().equals(dto.getCustType()) ? PermissionEnum.ADD_CUST.getCode() : PermissionEnum.ADD_SUPPLY.getCode()); if(!allFlag){ throw new CommonException(CodeMsg.FAILED,"暂无此权限,可联系超级管理员在我的-成员管理页面开通"); } //查组织id RepalGroupMember repalGroupMember = repalGroupMemberService.getOne(Wrappers.lambdaQuery(RepalGroupMember.class) .eq(RepalGroupMember::getUserId,userBean.getUserId()) .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode()),false); if(ObjectUtil.isNull(repalGroupMember)){ throw new CommonException(CodeMsg.FAILED,"您还未加入该组织,请联系超级管理员"); } RepalCustomer repalCustomer = new RepalCustomer(); BeanUtils.copyProperties(dto,repalCustomer); repalCustomer.setRepalGroupId(repalGroupMember.getRepalGroupId()); //校验非空字段 if(StrUtil.isBlank(dto.getCustName())){ throw new CommonException(CodeMsg.FAILED,"客户名不能为空"); } if(ObjectUtil.isNull(dto.getCustProperty())){ throw new CommonException(CodeMsg.FAILED,"客户性质不能为空"); } save(repalCustomer); //保存联系人 if(CollUtil.isNotEmpty(dto.getLinks())){ List links = new ArrayList<>(); for(RepalLinkDTO linkDto: dto.getLinks()){ RepalLink link = new RepalLink(); BeanUtils.copyProperties(linkDto,link); link.setCustId(repalCustomer.getCustId()); links.add(link); } repalLinkService.saveBatch(links); } //保存客户和负责人的关系 if(CollUtil.isNotEmpty(dto.getCharges())){ List rels = new ArrayList<>(); for(Long relUserId: dto.getCharges()){ RepalCustChargeRel rel = new RepalCustChargeRel(); rel.setCustId(repalCustomer.getCustId()); rel.setMemberUserId(relUserId); rels.add(rel); } repalCustChargeRelService.saveBatch(rels); } //添加操作日志 Dict.ActionCodeEnum actionCodeEnum = Dict.ActionCodeEnum.新增客户; if(Dict.custTypeEnum.供应商.getCode().equals(dto.getCustType())){ actionCodeEnum = Dict.ActionCodeEnum.新增供应商; } RepalBillOperLog repalBillOperLog = new RepalBillOperLog(); repalBillOperLog.setActionCode(actionCodeEnum.getCode()); repalBillOperLog.setUserId(userBean.getUserId()); repalBillOperLog.setOperTime(LocalDateTime.now()); repalBillOperLog.setBizId(String.valueOf(repalCustomer.getCustId())); repalBillOperLog.setBizType(actionCodeEnum.getBizType()); repalBillOperLog.setActionName(actionCodeEnum.name()); repalBillOperLogService.save(repalBillOperLog); return getDetailById(repalCustomer.getCustId(),userBean,dto.getCustType()); } @Override public RepalCustomerDetailVO updateCustomer(RepalCustomerUpdateDTO dto, UserBean userBean) { boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), Dict.custTypeEnum.客户.getCode().equals(dto.getCustType()) ? PermissionEnum.UPDATE_CUST.getCode() : PermissionEnum.UPDATE_SUPPLY.getCode()); if(!allFlag){ throw new CommonException(CodeMsg.FAILED,"暂无此权限,可联系超级管理员在我的-成员管理页面开通"); } RepalCustomer repalCustomer = getById(dto.getCustId()); if(ObjectUtil.isNull(repalCustomer)){ throw new CommonException(CodeMsg.FAILED,"客户或供应商不存在"); } RepalBillOperLog repalBillOperLog = new RepalBillOperLog(); List operLogContents = new ArrayList<>(); if(!ObjectUtil.equal(repalCustomer.getCustName(),dto.getCustName())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("custName"); contentVO.setPropertyCN("客户名称"); contentVO.setOldValue(repalCustomer.getCustName()); contentVO.setNewValue(dto.getCustName()); operLogContents.add(contentVO); repalCustomer.setCustName(dto.getCustName()); repalCustomer.setCompanyId(dto.getCompanyId()); } if(!ObjectUtil.equal(repalCustomer.getCustProperty(),dto.getCustProperty())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("custProperty"); contentVO.setPropertyCN("客户性质"); contentVO.setOldValue(String.valueOf(repalCustomer.getCustProperty())); contentVO.setNewValue(String.valueOf(dto.getCustProperty())); operLogContents.add(contentVO); repalCustomer.setCustProperty(dto.getCustProperty()); } if(!ObjectUtil.equal(repalCustomer.getIndustry(),dto.getIndustry())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("industry"); contentVO.setPropertyCN("所属行业"); contentVO.setOldValue(repalCustomer.getIndustry()); contentVO.setNewValue(dto.getIndustry()); operLogContents.add(contentVO); repalCustomer.setIndustry(dto.getIndustry()); } if(!ObjectUtil.equal(repalCustomer.getIndustry(),dto.getIndustry())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("address"); contentVO.setPropertyCN("办公地址"); contentVO.setOldValue(repalCustomer.getAddress()); contentVO.setNewValue(dto.getAddress()); operLogContents.add(contentVO); repalCustomer.setAddress(dto.getAddress()); } if(!ObjectUtil.equal(repalCustomer.getAttachment(),dto.getAttachment())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("attachment"); contentVO.setPropertyCN("附件"); contentVO.setOldValue(repalCustomer.getAttachment()); contentVO.setNewValue(dto.getAttachment()); operLogContents.add(contentVO); repalCustomer.setAttachment(dto.getAttachment()); } if(!ObjectUtil.equal(repalCustomer.getRemark(),dto.getRemark())){ RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("remark"); contentVO.setPropertyCN("备注信息"); contentVO.setOldValue(repalCustomer.getRemark()); contentVO.setNewValue(dto.getRemark()); operLogContents.add(contentVO); repalCustomer.setRemark(dto.getRemark()); } updateById(repalCustomer); if(CollUtil.isNotEmpty(dto.getCharges())){ List rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class).eq(RepalCustChargeRel::getCustId,dto.getCustId())); List members = new ArrayList<>(); //删除旧负责人 if(CollUtil.isNotEmpty(rels)){ repalCustChargeRelService.removeByIds(rels.stream().map(RepalCustChargeRel::getId).collect(Collectors.toList())); members = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class) .in(RepalGroupMember::getUserId,rels.stream().map(RepalCustChargeRel::getMemberUserId).collect(Collectors.toList())) .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode())); } List newMembers = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class) .in(RepalGroupMember::getUserId,dto.getCharges()) .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode())); //新增负责人 List newRels = new ArrayList<>(); for(Long relUserId: dto.getCharges()){ RepalCustChargeRel rel = new RepalCustChargeRel(); rel.setCustId(repalCustomer.getCustId()); rel.setMemberUserId(relUserId); newRels.add(rel); } repalCustChargeRelService.saveBatch(newRels); RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("charges"); contentVO.setPropertyCN("负责人"); contentVO.setOldValue(JSON.toJSONString(members.stream().map(RepalGroupMember::getMemberUserName).collect(Collectors.toList()))); contentVO.setNewValue(JSON.toJSONString(newMembers.stream().map(RepalGroupMember::getMemberUserName).collect(Collectors.toList()))); operLogContents.add(contentVO); } if(CollUtil.isNotEmpty(dto.getLinks())){ List links = repalLinkService.list(Wrappers.lambdaQuery(RepalLink.class).eq(RepalLink::getCustId,dto.getCustId()).eq(RepalLink::getDeleted,Dict.DeletedStatusEnunm.否.getCode())); //遍历修改老数据 if(CollUtil.isNotEmpty(links)){ for(RepalLink repalLink:links){ Optional optionalRepalLink = dto.getLinks().stream().filter(x->repalLink.getId().equals(x.getId())).findFirst(); if(optionalRepalLink.isPresent()){ BeanUtils.copyProperties(optionalRepalLink.get(),repalLink); }else { repalLink.setDeleted(Dict.DeletedStatusEnunm.是.getCode()); } repalLinkService.updateById(repalLink); } } //遍历新数据 List newlinks = new ArrayList<>(); for(RepalLinkDTO linkDto: dto.getLinks()){ if(ObjectUtil.isNotNull(linkDto.getId())){ continue; } RepalLink link = new RepalLink(); BeanUtils.copyProperties(linkDto,link); link.setCustId(repalCustomer.getCustId()); newlinks.add(link); } repalLinkService.saveBatch(newlinks); RepalOperLogContentVO contentVO = new RepalOperLogContentVO(); contentVO.setPropertyName("links"); contentVO.setPropertyCN("联系人"); contentVO.setOldValue(JSON.toJSONString(links)); contentVO.setNewValue(JSON.toJSONString(dto.getLinks())); operLogContents.add(contentVO); } Dict.ActionCodeEnum actionCodeEnum = Dict.ActionCodeEnum.修改客户; if(Dict.custTypeEnum.供应商.getCode().equals(repalCustomer.getCustType())){ actionCodeEnum = Dict.ActionCodeEnum.修改供应商; } repalBillOperLog.setActionCode(actionCodeEnum.getCode()); repalBillOperLog.setUserId(userBean.getUserId()); repalBillOperLog.setOperTime(LocalDateTime.now()); repalBillOperLog.setBizId(String.valueOf(dto.getCustId())); repalBillOperLog.setBizType(actionCodeEnum.getBizType()); repalBillOperLog.setActionName(actionCodeEnum.name()); repalBillOperLog.setActionContent(JSON.toJSONString(operLogContents)); repalBillOperLogService.save(repalBillOperLog); return getDetailById(dto.getCustId(),userBean,dto.getCustType()); } @Override public RepalCustomerDetailVO getDetailById(Long custId,UserBean userBean,Integer custType) { //不做权限判断,默认通过列表的权限 RepalCustomer repalCustomer = getById(custId); if(ObjectUtil.isNull(repalCustomer)){ throw new CommonException(CodeMsg.FAILED,"客户或供应商不存在"); } RepalCustomerDetailVO result = new RepalCustomerDetailVO(); BeanUtils.copyProperties(repalCustomer,result); //查询负责人 List rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class) .eq(RepalCustChargeRel::getCustId,custId)); if(CollUtil.isNotEmpty(rels)){ List repalGroupMembers = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class) .in(RepalGroupMember::getUserId,rels.stream().map(RepalCustChargeRel::getMemberUserId).collect(Collectors.toList()))); List memberList = new ArrayList<>(); result.setCharges(memberList); for(RepalGroupMember groupMember:repalGroupMembers){ RepalGroupMemberVO member = new RepalGroupMemberVO(); memberList.add(member); member.setMemberUserName(groupMember.getMemberUserName()); member.setUserId(groupMember.getUserId()); member.setId(groupMember.getId()); member.setRepalGroupId(groupMember.getRepalGroupId()); member.setRoleType(groupMember.getRoleType()); } } // 标签 if (Dict.custTypeEnum.客户.getCode().equals(custType) && StrUtil.isNotBlank(repalCustomer.getCompanyId())) { // 失信限高标签 ApiDataResult> labelResult = dataMiddlewareService.getCreditPunishmentLabelList(new GetCreditPunishmentLabelDTO(Collections.singletonList(repalCustomer.getCompanyId()))); if (Objects.nonNull(labelResult) && CollUtil.isNotEmpty(labelResult.getData())) { result.setLabelList(labelResult.getData().get(0).getLabelList()); } // 财产数量 ApiDataResult> financeResult = dataMiddlewareService.getFinanceDynamicNumV8List(new GetFinanceDynamicNumDTO().setCompanyIdList(Collections.singletonList(repalCustomer.getCompanyId()))); if (Objects.nonNull(financeResult) && CollUtil.isNotEmpty(financeResult.getData())) { result.setAssetsNum(financeResult.getData().get(0).getFinanceDynamicNum()); } // 风险数量 ApiDataResult> riskResult = dataMiddlewareService.getCompanyRiskNumList(new GetCompanyRiskNumDTO(Collections.singletonList(repalCustomer.getCompanyId()))); if (Objects.nonNull(riskResult) && CollUtil.isNotEmpty(riskResult.getData())) { result.setRiskNum(riskResult.getData().get(0).getRiskNum()); } } //账款汇总 List repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class).eq(RepalBill::getCustomerId,custId).eq(RepalBill::getDeleted,Dict.DeletedStatusEnunm.否.getCode())); if(CollUtil.isNotEmpty(repalBills)){ if(Dict.custTypeEnum.客户.getCode().equals(custType)) { result.setRepalBillCount(repalBills.size()); result.setReceivableStr(repalBills.stream().map(RepalBill::getReceivable).reduce(BigDecimal.ZERO,BigDecimal::add).stripTrailingZeros().toPlainString()); result.setTotalMoneyStr(repalBills.stream().map(RepalBill::getTotalMoney).reduce(BigDecimal.ZERO,BigDecimal::add).stripTrailingZeros().toPlainString()); result.setTotalOverdueStr(repalBills.stream().filter(x-> RepalBillStatusEnum.OVERDUE.getCode().equals(x.getRepalBillStatus())).map(RepalBill::getReceivable).reduce(BigDecimal.ZERO,BigDecimal::add).stripTrailingZeros().toPlainString()); result.setTotalReceiptStr(repalBills.stream().map(RepalBill::getReceipt).reduce(BigDecimal.ZERO,BigDecimal::add).stripTrailingZeros().toPlainString()); //动态 RepalBillRemindUnReadVO unRead = repalRemindHistoryService.getRemindUnReadVO(repalBills, userBean.getUserId()); if (ObjectUtil.isNotNull(unRead) && unRead.getUnreadTotalCount() > 0) { result.setDynamicCountList(Stream.of(unRead.getUnreadOverdueCount(), unRead.getUnreadRiskCount(), unRead.getUnreadRankCount(), unRead.getUnreadFinanceCount()).collect(Collectors.toList())); } } //账款记录 List repalChangeRecordList = repalChangeRecordService.list(Wrappers.lambdaQuery(RepalChangeRecord.class) .in(RepalChangeRecord::getRepalBillId, repalBills.stream().map(RepalBill::getId).collect(Collectors.toList())) .eq(RepalChangeRecord::getDeleted, DeletedStatusEnum.NORMAL.getCode()) .orderByDesc(RepalChangeRecord::getId)); if (CollUtil.isNotEmpty(repalChangeRecordList)) { result.setChangeList(repalChangeRecordList.stream().map(t -> { RepalBillDetailVO.BillMoneyChange billMoneyChange = new RepalBillDetailVO.BillMoneyChange(); billMoneyChange.setChangeTime(t.getTimeCreated()); billMoneyChange.setChangeDesc(t.getOperUserName() + " 增加回款 " + t.getTransMoney().stripTrailingZeros().toPlainString()); return billMoneyChange; }).collect(Collectors.toList())); } }else { result.setRepalBillCount(0); result.setReceivableStr("0"); result.setTotalMoneyStr("0"); result.setTotalOverdueStr("0"); result.setTotalReceiptStr("0"); result.setDynamicCountList(Arrays.asList(0,0,0,0)); } //联系人 List repalLinks = repalLinkService.list(Wrappers.lambdaQuery(RepalLink.class).eq(RepalLink::getCustId,custId).eq(RepalLink::getDeleted,Dict.DeletedStatusEnunm.否.getCode())); if(CollUtil.isNotEmpty(repalLinks)){ List repalLinkVOs = new ArrayList<>(); result.setLinks(repalLinkVOs); for(RepalLink repalLink:repalLinks){ RepalLinkVO repalLinkVO = new RepalLinkVO(); repalLinkVOs.add(repalLinkVO); BeanUtils.copyProperties(repalLink,repalLinkVO); } } return result; } @Override @Transactional public Boolean deleteCustomer(Long custId, UserBean userBean) { RepalCustomer repalCustomer = getById(custId); if(ObjectUtil.isNull(custId)){ throw new CommonException(CodeMsg.FAILED,"客户或供应商不存在"); } boolean allFlag = repalRolePermissionService.checkUserPermission(UserContextUtil.getUser().getUserId(), Dict.custTypeEnum.客户.getCode().equals(repalCustomer.getCustType()) ? PermissionEnum.UPDATE_CUST.getCode() : PermissionEnum.UPDATE_SUPPLY.getCode()); if(!allFlag){ throw new CommonException(CodeMsg.FAILED,"暂无此权限,可联系超级管理员在我的-成员管理页面开通"); } repalCustomer.setDeleted(Dict.DeletedStatusEnunm.是.getCode()); updateById(repalCustomer); //删除客户对应的账款 List repalBills = repalBillService.list(Wrappers.lambdaQuery(RepalBill.class) .eq(RepalBill::getCustomerId,custId) .eq(RepalBill::getDeleted, Dict.DeletedStatusEnunm.否.getCode())); if(CollUtil.isNotEmpty(repalBills)){ throw new CommonException(CodeMsg.FAILED,"请先删除该"+(Dict.custTypeEnum.客户.getCode().equals(repalCustomer.getCustType()) ? Dict.custTypeEnum.客户.name() : Dict.custTypeEnum.供应商.name())+"的关联账款"); } //操作记录 Dict.ActionCodeEnum actionCodeEnum = Dict.ActionCodeEnum.删除客户; if(Dict.custTypeEnum.供应商.getCode().equals(repalCustomer.getCustType())){ actionCodeEnum = Dict.ActionCodeEnum.删除供应商; } RepalBillOperLog repalBillOperLog = new RepalBillOperLog(); repalBillOperLog.setActionCode(actionCodeEnum.getCode()); repalBillOperLog.setUserId(userBean.getUserId()); repalBillOperLog.setOperTime(LocalDateTime.now()); repalBillOperLog.setBizId(String.valueOf(custId)); repalBillOperLog.setBizType(actionCodeEnum.getBizType()); repalBillOperLog.setActionName(actionCodeEnum.name()); repalBillOperLogService.save(repalBillOperLog); return Boolean.TRUE; } }