BMS合同管理生效状态修改

This commit is contained in:
秦鸿展
2026-02-27 14:50:13 +08:00
parent 16b0eaf50a
commit 1e8b71fbea
2 changed files with 31 additions and 7 deletions
@@ -164,11 +164,25 @@ public class ContractManageApplicationService {
* 处理数据
*/
private void handleData(ContractManageDO contractManageDO) {
//根据合同生效时间判断合同是否生效
if (DateUtil.compare(contractManageDO.getEffectiveDate(), new Date()) > 0) {
contractManageDO.setContractState(2);
} else {
contractManageDO.setContractState(1);
// 如果前端未传合同状态,则根据生效/到期时间自动计算;
// 如果前端已经传了 contractState,则尊重前端值
if (contractManageDO.getContractState() == null) {
// 合同状态(1-未生效,2-使用中,3-已过期,4-已作废)
Date now = DateUtil.beginOfDay(new Date());
Date effectiveDate = contractManageDO.getEffectiveDate();
Date expirationDate = contractManageDO.getExpirationDate();
if (effectiveDate != null && expirationDate != null) {
if (DateUtil.compare(now, effectiveDate) < 0) {
// 当前时间早于生效日期:未生效
contractManageDO.setContractState(1);
} else if (DateUtil.compare(now, expirationDate) > 0) {
// 当前时间晚于到期日期:已过期
contractManageDO.setContractState(3);
} else {
// 生效日期 <= 当前时间 <= 到期日期:使用中
contractManageDO.setContractState(2);
}
}
}
if(StringUtils.isNotEmpty(contractManageDO.getSettlementCustomersCode())){
AjaxResult ajaxResult = bmsServiceFeign.getCustomersInfoByCode(contractManageDO.getSettlementCustomersCode());
@@ -190,11 +204,19 @@ public class ContractManageApplicationService {
* @param contractManageDO
*/
private void checkContract(ContractManageDO contractManageDO) {
// 通用/特殊合同的唯一性应在“同一组织”内生效,不同组织之间互不影响
LoginUser loginUser = SecurityUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser) || loginUser.getUserPo() == null) {
throw new DigitalLogisticsException(UserError.TIMEOUT);
}
ContractManageDO commonQueryParam = new ContractManageDO();
commonQueryParam.setContractType(contractManageDO.getContractType());
commonQueryParam.setSettlementCustomersCode(contractManageDO.getSettlementCustomersCode());
commonQueryParam.setEffectiveDateString(DateUtil.format(contractManageDO.getEffectiveDate(),"yyyy-MM-dd"));
commonQueryParam.setExpirationDateString(DateUtil.format(contractManageDO.getExpirationDate(),"yyyy-MM-dd"));
// 按当前登录人的组织维度进行唯一性校验:不同组织下的通用/特殊合同互不影响
commonQueryParam.setOrganizationId(loginUser.getUserPo().getOrganizationId());
commonQueryParam.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
//通用合同
if(contractManageDO.getCommonContractFlag()==1){
commonQueryParam.setCommonContractFlag(1);