|
@@ -1,21 +1,39 @@
|
|
|
package com.winhc.repal.service.impl;
|
|
|
|
|
|
-import com.winhc.repal.entity.RepalCustomer;
|
|
|
+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.enums.CodeMsg;
|
|
|
+import com.winhc.common.exception.CommonException;
|
|
|
+import com.winhc.repal.entity.*;
|
|
|
+import com.winhc.repal.enums.Dict;
|
|
|
+import com.winhc.repal.model.bo.RepalCustomerInfoBO;
|
|
|
+import com.winhc.repal.model.dto.*;
|
|
|
+import com.winhc.repal.model.vo.*;
|
|
|
import com.winhc.repal.repository.RepalCustomerMapper;
|
|
|
-import com.winhc.repal.service.RepalCustomerService;
|
|
|
+import com.winhc.repal.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+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.conditions.update.UpdateWrapper;
|
|
|
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.dto.RepalCustomerDTO;
|
|
|
import com.winhc.repal.model.cvt.RepalCustomerConvert;
|
|
|
-import com.winhc.repal.model.vo.RepalCustomerVO;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.ArrayList;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Optional;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
/**
|
|
|
* @description RepalCustomer 接口实现类
|
|
@@ -24,37 +42,350 @@ import java.util.stream.Collectors;
|
|
|
*/
|
|
|
@Service
|
|
|
public class RepalCustomerServiceImpl extends ServiceImpl<RepalCustomerMapper, RepalCustomer> implements RepalCustomerService {
|
|
|
+ @Autowired
|
|
|
+ private RepalCustomerMapper repalCustomerMapper;
|
|
|
|
|
|
- @Override
|
|
|
- public void add(RepalCustomerDTO dto) {
|
|
|
- save(RepalCustomerConvert.DTOToEntity(dto));
|
|
|
+ @Autowired
|
|
|
+ private RepalBillService repalBillService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalBillOperLogService repalBillOperLogService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalCustChargeRelService repalCustChargeRelService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalGroupMemberService repalGroupMemberService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalRemindHistoryService repalRemindHistoryService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private RepalLinkService repalLinkService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public VOPage<RepalCustomerInfoVO> find(RepalCustomerQueryDTO dto) {
|
|
|
+ Page<RepalCustomerInfoBO> page = new Page<>(dto.getPageNum(),dto.getPageSize());
|
|
|
+ page = repalCustomerMapper.getCustPage(page, dto.getRepalGroupId(),dto.getCustProperty(),dto.getSortType(),dto.getCustType());
|
|
|
+ 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::getMemberId).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());
|
|
|
+ //查询未读动态数量
|
|
|
+ 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.stream().map(RepalBill::getId).collect(Collectors.toList()));
|
|
|
+ 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.getMemberId(),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
|
|
|
- public void update(Long custId, RepalCustomerDTO dto) {
|
|
|
- update(RepalCustomerConvert.DTOToEntity(dto),new UpdateWrapper<RepalCustomer>().lambda().eq(RepalCustomer::getCustId,custId));
|
|
|
+ @Transactional
|
|
|
+ public RepalCustomerDetailVO addCustomer(RepalCustomerDTO dto,UserBean userBean) {
|
|
|
+ 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,"您没有新增客户的权限");
|
|
|
+ }
|
|
|
+ //todo 其他校验权限
|
|
|
+
|
|
|
+ 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,"客户性质不能为空");
|
|
|
+ }
|
|
|
+ if(StrUtil.isBlank(dto.getIndustry())){
|
|
|
+ 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.setMemberId(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());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public void delete(Long custId) {
|
|
|
- removeById(custId);
|
|
|
+ public RepalCustomerDetailVO updateCustomer(RepalCustomerUpdateDTO dto, UserBean userBean) {
|
|
|
+ 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,"您没有新增客户的权限");
|
|
|
+ }
|
|
|
+ //todo 其他校验权限
|
|
|
+
|
|
|
+ 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::getMemberId).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.setMemberId(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());
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public RepalCustomerVO find(Long custId) {
|
|
|
- return RepalCustomerConvert.EntityToVO(getById(custId));
|
|
|
+ public RepalCustomerDetailVO getDetailById(Long custId) {
|
|
|
+ return null;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public List<RepalCustomerVO> find(RepalCustomerDTO dto) {
|
|
|
- return list(new QueryWrapper<>(RepalCustomerConvert.DTOToEntity(dto))).stream().map(RepalCustomerConvert::EntityToVO)
|
|
|
- .collect(Collectors.toList());
|
|
|
- }
|
|
|
+ @Transactional
|
|
|
+ public Boolean deleteCustomer(Long custId, UserBean userBean) {
|
|
|
+ //删除客户
|
|
|
+ RepalCustomer repalCustomer = getById(custId);
|
|
|
+ if(ObjectUtil.isNull(custId)){
|
|
|
+ throw new CommonException(CodeMsg.FAILED,"客户或供应商不存在");
|
|
|
+ }
|
|
|
+ //todo 权限判断
|
|
|
|
|
|
- @Override
|
|
|
- public VOPage<RepalCustomerVO> find(RepalCustomerDTO dto, Integer pageNum, Integer pageSize) {
|
|
|
- IPage<RepalCustomer> pageRepalCustomer = page(new Page<>(pageNum, pageSize), new QueryWrapper<>(RepalCustomerConvert.DTOToEntity(dto)));
|
|
|
- return new VOPage<>(pageNum,pageSize,pageRepalCustomer.getTotal(), pageRepalCustomer.getRecords().stream()
|
|
|
- .map(RepalCustomerConvert::EntityToVO).collect(Collectors.toList()));
|
|
|
+ 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)){
|
|
|
+ for(RepalBill repalBill:repalBills){
|
|
|
+ repalBillService.deleteRepalBillById(new DeleteRepalBillDTO().setRepalBillId(repalBill.getId()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //操作记录
|
|
|
+ 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;
|
|
|
}
|
|
|
}
|