123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- 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<RepalCustomerMapper, RepalCustomer> 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<RepalCustomerSimpleVO> getCustList(Integer custType) {
- //不校验权限,返回全部客户供应商列表
- UserContextBO userContextBO = UserContextUtil.getUser();
- Long repalGroupId = repalGroupMemberService.getUserGroupId(userContextBO.getUserId());
- List<RepalCustomer> 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<RepalCustomerSimpleVO> 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<RepalCustomerInfoVO> 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<RepalCustomerInfoBO> 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<RepalCustomerInfoVO> result = new VOPage<>(dto.getPageNum(), dto.getPageSize(), page.getTotal(), new ArrayList<>());
- if(CollUtil.isEmpty(page.getRecords())){
- return result;
- }
- //查询负责人
- List<Long> custIds = page.getRecords().stream().map(RepalCustomerInfoBO::getCustId).collect(Collectors.toList());
- List<RepalCustChargeRel> rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class)
- .in(RepalCustChargeRel::getCustId,custIds));
- Map<Long, List<RepalCustChargeRel>> relMap = rels.stream().collect(Collectors.groupingBy(RepalCustChargeRel::getCustId));
- Map<Long, RepalGroupMember> 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<RepalCustomerInfoVO> 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<RepalBill> 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<RepalCustChargeRel> repalCustChargeRels = relMap.get(customerInfo.getCustId());
- List<RepalGroupMemberVO> 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<RepalLink> 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<RepalCustChargeRel> 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<RepalOperLogContentVO> 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<RepalCustChargeRel> rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class).eq(RepalCustChargeRel::getCustId,dto.getCustId()));
- List<RepalGroupMember> 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<RepalGroupMember> newMembers = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class)
- .in(RepalGroupMember::getUserId,dto.getCharges())
- .eq(RepalGroupMember::getDeleted,Dict.DeletedStatusEnunm.否.getCode()));
- //新增负责人
- List<RepalCustChargeRel> 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<RepalLink> 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<RepalLinkDTO> 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<RepalLink> 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<RepalCustChargeRel> rels = repalCustChargeRelService.list(Wrappers.lambdaQuery(RepalCustChargeRel.class)
- .eq(RepalCustChargeRel::getCustId,custId));
- if(CollUtil.isNotEmpty(rels)){
- List<RepalGroupMember> repalGroupMembers = repalGroupMemberService.list(Wrappers.lambdaQuery(RepalGroupMember.class)
- .in(RepalGroupMember::getUserId,rels.stream().map(RepalCustChargeRel::getMemberUserId).collect(Collectors.toList())));
- List<RepalGroupMemberVO> 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<List<CreditPunishmentLabelListVO>> 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<List<FinanceDynamicNumVO>> 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<List<CompanyRiskNumVO>> 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<RepalBill> 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<RepalChangeRecord> 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<RepalLink> repalLinks = repalLinkService.list(Wrappers.lambdaQuery(RepalLink.class).eq(RepalLink::getCustId,custId).eq(RepalLink::getDeleted,Dict.DeletedStatusEnunm.否.getCode()));
- if(CollUtil.isNotEmpty(repalLinks)){
- List<RepalLinkVO> 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<RepalBill> 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;
- }
- }
|