Browse Source

feat(srm): 完善供应商合同续签功能

- 在字典维护服务中添加创建日期自动设置功能
- 实现合同续签时新有效期必须大于源有效期的校验逻辑
- 优化续签标记处理:根据新有效期是否为空决定续签标记状态
- 支持永久有效期合同的续签场景处理
master
qiankanghui 1 day ago
parent
commit
594a61bc09
  1. 2
      src/main/java/com/xujie/modules/base/service/Impl/BaseDictMaintenanceServiceImpl.java
  2. 22
      src/main/java/com/xujie/modules/srm/service/impl/SrmSupplierServiceImpl.java

2
src/main/java/com/xujie/modules/base/service/Impl/BaseDictMaintenanceServiceImpl.java

@ -15,6 +15,7 @@ import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashSet;
import java.util.LinkedHashMap;
import java.util.List;
@ -77,6 +78,7 @@ public class BaseDictMaintenanceServiceImpl implements BaseDictMaintenanceServic
assertData(dictData, false);
assertDefaultUnique(dictData, null);
assertValueUnique(dictData, null);
dictData.setCreateDate(new Date());
if (!dictDataService.save(dictData)) {
throw new RuntimeException("保存失败");
}

22
src/main/java/com/xujie/modules/srm/service/impl/SrmSupplierServiceImpl.java

@ -168,16 +168,36 @@ public class SrmSupplierServiceImpl extends ServiceImpl<SrmSupplierMapper, SrmSu
}
srmSupplierMapper.createNewSupplierContract(data);
}else {
// 续签保存先查老数据校验新有效期必须大于源有效期源有效期为空则放行
if ("Y".equals(data.getRenewflag()) && data.getValidTo() != null) {
SrmSupplierContractData queryData = new SrmSupplierContractData();
queryData.setSite(data.getSite());
queryData.setContractId(data.getContractId());
List<SrmSupplierContractData> oldList = srmSupplierMapper.getNewSupplierContract(queryData);
if (oldList != null && !oldList.isEmpty()) {
Date oldValidTo = oldList.get(0).getValidTo();
if (oldValidTo != null && !data.getValidTo().after(oldValidTo)) {
throw new RuntimeException("续签的有效期必须大于源有效期!");
}
}
}
SysUserEntity currentUser = (SysUserEntity) SecurityUtils.getSubject().getPrincipal();
data.setUpdateBy(currentUser.getUsername());
srmSupplierMapper.updateSupplierContract(data);
//如果renew标记是Y 那么就吧所有提醒关闭
//如果renew标记是Y续签保存根据新的有效期是否有值来修改续签标记新有效期为空表示改为永久有效放行
if( "Y".equals(data.getRenewflag())){
if (data.getValidTo() != null) {
// 有新有效期本次续签完成关闭提醒标记保持Y后续继续监控新有效期
srmSupplierMapper.updateContractRequestStatus(data.getSite(),data.getContractId(),"已执行");
srmSupplierMapper.updateContractRenewFlag(data.getSite(),data.getContractId(),"Y");
} else {
// 无新有效期改为永久有效清除续签标记同时关闭本次提醒
srmSupplierMapper.updateContractRequestStatus(data.getSite(),data.getContractId(),"已执行");
srmSupplierMapper.updateContractRenewFlag(data.getSite(),data.getContractId(),"N");
}
}
}

Loading…
Cancel
Save