Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
zhou-hongcheng
2026-03-17 17:43:22 +08:00
25 changed files with 223 additions and 40 deletions
@@ -5,9 +5,12 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson2.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mhd.basic.domain.contractManage.repository.po.ContractManagePO;
import com.mhd.basic.domain.contractManage.repository.todo.ContractManageDO;
import com.mhd.basic.domain.contractManage.service.ContractManageDomainService;
import com.mhd.basic.domain.contractManageDetail.entity.ContractManageDetail;
import com.mhd.basic.domain.contractManageDetail.repository.mapper.ContractManageDetailMapper;
import com.mhd.basic.domain.contractManageDetail.repository.po.ContractManageDetailPO;
import com.mhd.basic.domain.contractManageDetail.repository.todo.ContractManageDetailDO;
import com.mhd.basic.domain.contractManageDetail.service.ContractManageDetailDomainService;
@@ -61,6 +64,8 @@ public class ContractManageApplicationService {
@Autowired
private ContractManageDetailDomainService contractManageDetailDomainService;
@Autowired
private ContractManageDetailMapper contractManageDetailMapper;
@Autowired
private BmsServiceFeign bmsServiceFeign;
@Autowired
@@ -261,15 +266,16 @@ public class ContractManageApplicationService {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
//根据合同编码查询保存合同信息
ContractManagePO contractManagePO = contractManageDomainService.getInfoByCode(contractManageDO.getContractNumber());
ContractManagePO contractManagePO = contractManageDomainService.getInfoByCode1(contractManageDO.getOriginalContractNumber());
//保存合同详情科目
List<ContractManageDetailDTO> contractManageDetailDTOList = contractManageDO.getContractManageDetailDTOList();
if(null != contractManageDetailDTOList && contractManageDetailDTOList.size()>0){
//查询费用科目、计费周期数据字典
List<SysDictData> billingAttributesList = dictTypeService.selectDictDataByType(DictCode.BILLING_ATTRIBUTES.getCode());
int delete = contractManageDetailMapper.delete(new LambdaQueryWrapper<ContractManageDetail>().eq(ContractManageDetail::getContractManageId, contractManageDO.getContractManageId()));
for (ContractManageDetailDTO contractManageDetailDTO : contractManageDetailDTOList) {
ContractManageDetailDO contractManageDetailDO = new ContractManageDetailDO();
BeanUtils.copyProperties(contractManageDetailDTO,contractManageDetailDO);
BeanUtils.copyProperties(contractManageDetailDTO,contractManageDetailDO,"contractManageDetailId");
//根据费用科目查询费用信息
if(StringUtils.isNotEmpty(contractManageDetailDTO.getSecondSubjectCode())){
ExpenseAccountPO expenseAccountPO = expenseAccountDomainService.getInfoByCode(contractManageDetailDTO.getSecondSubjectCode());
@@ -332,10 +338,11 @@ public class ContractManageApplicationService {
if(null != contractManagePO){
contractManageDetailDO.setContractManageId(contractManagePO.getContractManageId());
}
//contractManageDetailDO.setContractManageId(contractManageDO.getContractManageId());
contractManageDetailDO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
contractManageDetailDO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
contractManageDetailDO.setOrganizationName(loginUser.getUserPo().getOrganizationName());
contractManageDetailDomainService.saveOrUpdate(contractManageDetailDO);
contractManageDetailDomainService.insert(contractManageDetailDO);
}
}
}
@@ -481,4 +488,4 @@ public class ContractManageApplicationService {
public ContractManagePO getGeneralContract() {
return contractManageDomainService.getGeneralContract();
}
}
}
@@ -1,6 +1,8 @@
package com.mhd.basic.domain.contractManage.entity;
import com.baomidou.mybatisplus.annotation.FieldStrategy;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.mhd.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
@@ -68,14 +70,17 @@ public class ContractManage extends BaseVOEntity{
@ApiModelProperty("结算主体")
@Excel(name = "结算主体")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String settlementCustomers;
@ApiModelProperty("结算主体id")
@Excel(name = "结算主体id")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private Long settlementCustomersId;
@ApiModelProperty("结算主体code")
@Excel(name = "结算主体code")
@TableField(updateStrategy = FieldStrategy.IGNORED)
private String settlementCustomersCode;
@ApiModelProperty("我司身份(1-甲方,2-乙方)")
@@ -143,6 +143,42 @@ public class ContractManageDomainService {
return contractManagePO;
}
public ContractManagePO getInfoByCode1(String contractNumber) {
ContractManagePO contractManagePO = new ContractManagePO();
LambdaQueryWrapper<ContractManage> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ContractManage::getOriginalContractNumber,contractNumber);
queryWrapper.eq(ContractManage::getDelFlag,1);
ContractManage contractManage = contractManageService.getOne(queryWrapper);
if(null != contractManage){
BeanUtils.copyProperties(contractManage,contractManagePO);
//得到合同后,查询合同明细
List<ContractManageDetailPO> contractManageDetailPOList = contractManageDetailDomainService.queryListByManageId(contractManagePO.getContractManageId());
List<ContractManageDetailPO> contractManageDetailSaveList = new ArrayList<>();
if(contractManageDetailPOList != null && contractManageDetailPOList.size()>0){
//将临时合同中没有,但是通用合同中有的数据过滤出(使用 ObjectUtil.equal 避免 firstSubjectCode/secondSubjectCode 为 null 时 NPE
contractManageDetailSaveList = contractManageDetailPOList.stream().filter(item -> contractManageDetailPOList.stream().anyMatch(item1 -> ObjectUtil.equal(item1.getFirstSubjectCode(), item.getFirstSubjectCode()) && ObjectUtil.equal(item1.getSecondSubjectCode(), item.getSecondSubjectCode()) && item1.getSubjectType()==1)).collect(Collectors.toList());
//首先根据结算科目类型将临时合同过滤出
List<ContractManageDetailPO> tempContractManageDetailPOList = contractManageDetailPOList.stream().filter(item -> item.getSubjectType()==2).collect(Collectors.toList());
//遍历两个集合,将相同费用科目code的数据,进行比较,如果结算科目类型是临时且合同有效期有效,则使用该条数据,将另一条移除
for (ContractManageDetailPO manageDetailPO : tempContractManageDetailPOList) {
for (ContractManageDetailPO contractManageDetailPO : contractManageDetailPOList) {
if(ObjectUtil.equal(contractManageDetailPO.getFirstSubjectCode(), manageDetailPO.getFirstSubjectCode()) && ObjectUtil.equal(contractManageDetailPO.getSecondSubjectCode(), manageDetailPO.getSecondSubjectCode())){
//判断如果是临时合同在有效期内,则将该条数据保存到集合contractManageDetailSaveList
DateTime start = DateUtil.parseDate(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
DateTime end = DateUtil.parseDateTime(DateUtil.format(manageDetailPO.getSubjectEffectiveDate(),"yyyy-MM-dd"));
DateTime now = DateUtil.beginOfDay(DateUtil.date());
if (now.isAfterOrEquals(start) && now.isBefore(end)) {
contractManageDetailSaveList.add(manageDetailPO);
}
}
}
}
}
contractManagePO.setContractManageDetailPOList(contractManageDetailSaveList);
}
return contractManagePO;
}
public void contractEffectiveDateSet() {
/*
1:查询合同有效期开始时间在今天(含)之前的,并且合同状态为未生效,设置为已生效状态
@@ -190,4 +226,4 @@ public class ContractManageDomainService {
}
return contractManagePO;
}
}
}