|
|
@@ -82,33 +82,34 @@ public class contractService {
|
|
|
Date END_DATE = contractBO.get("END_DATE", Date.class);
|
|
|
|
|
|
//通过 合同周期个数和合同周期类型计算结束日期
|
|
|
- if (END_DATE == null || END_DATE.before(START_DATE)) if (OCCURRENCES != null && OCCURRENCES > 0) {
|
|
|
- // 使用 Calendar 进行日期操作
|
|
|
- Calendar calendar = Calendar.getInstance();
|
|
|
- calendar.setTime(START_DATE);
|
|
|
- if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_HALFYEAR)) {
|
|
|
- calendar.add(Calendar.MONTH, OCCURRENCES * 6);
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
- END_DATE = calendar.getTime();
|
|
|
- } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_MONTH)) {
|
|
|
- calendar.add(Calendar.MONTH, OCCURRENCES);
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
- END_DATE = calendar.getTime();
|
|
|
- } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_QUARTER)) {
|
|
|
- calendar.add(Calendar.MONTH, OCCURRENCES * 3);
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
- END_DATE = calendar.getTime();
|
|
|
- } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_YEAR)) {
|
|
|
- calendar.add(Calendar.MONTH, OCCURRENCES * 12);
|
|
|
- calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
- END_DATE = calendar.getTime();
|
|
|
- } else {
|
|
|
- resultDto.put("success", false);
|
|
|
- resultDto.put("msg", "周期类型输入错误!");
|
|
|
- return resultDto;
|
|
|
+ if (START_DATE != null && StringUtils.isNotBlank(PERIOD_TYPE) && (END_DATE == null || END_DATE.before(START_DATE)))
|
|
|
+ if (OCCURRENCES != null && OCCURRENCES > 0) {
|
|
|
+ // 使用 Calendar 进行日期操作
|
|
|
+ Calendar calendar = Calendar.getInstance();
|
|
|
+ calendar.setTime(START_DATE);
|
|
|
+ if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_HALFYEAR)) {
|
|
|
+ calendar.add(Calendar.MONTH, OCCURRENCES * 6);
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ END_DATE = calendar.getTime();
|
|
|
+ } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_MONTH)) {
|
|
|
+ calendar.add(Calendar.MONTH, OCCURRENCES);
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ END_DATE = calendar.getTime();
|
|
|
+ } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_QUARTER)) {
|
|
|
+ calendar.add(Calendar.MONTH, OCCURRENCES * 3);
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ END_DATE = calendar.getTime();
|
|
|
+ } else if (PERIOD_TYPE.equals(cttConstant.PERIOD_TYPE_YEAR)) {
|
|
|
+ calendar.add(Calendar.MONTH, OCCURRENCES * 12);
|
|
|
+ calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
+ END_DATE = calendar.getTime();
|
|
|
+ } else {
|
|
|
+ resultDto.put("success", false);
|
|
|
+ resultDto.put("msg", "周期类型输入错误!");
|
|
|
+ return resultDto;
|
|
|
+ }
|
|
|
+ contractBO.set("END_DATE", END_DATE);
|
|
|
}
|
|
|
- contractBO.set("END_DATE", END_DATE);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
contractBO.set("ADJUST_SETUP_FEE", contractBO.get("SETUP_FEE"));
|
|
|
@@ -124,18 +125,15 @@ public class contractService {
|
|
|
DBSql.update("update BO_EU_DNCTT_CONTRACT set IS_SDT_DEFAULT=0 where ACCOUNT_ID=?", new Object[]{contractBO.getString("ACCOUNT_ID")});
|
|
|
}
|
|
|
|
|
|
-
|
|
|
//2025年10月25日 生成合同编号
|
|
|
-
|
|
|
+ contractServiceLogger.info("生成合同编号");
|
|
|
String contractNo = contractBO.getString("NO");
|
|
|
if (StringUtils.isBlank(contractNo) || contractNo.indexOf("XHT") != 0) {
|
|
|
-
|
|
|
//框架协议子合同编号:框架协议合同编码-S001
|
|
|
String FRAMEWORK = contractBO.getString("FRAMEWORK");
|
|
|
if (StringUtils.isNotBlank(FRAMEWORK)) {
|
|
|
-
|
|
|
- String orgContractNo = DBSql.getString("select NO from BO_EU_DNCTT_CONTRACT where ID=? ORDER BY NO DESC", new Object[]{FRAMEWORK});
|
|
|
- List<String> noList = DBSql.getList("select NO from BO_EU_DNCTT_CONTRACT where FRAMEWORK=? order by NO desc", String.class, new Object[]{FRAMEWORK});
|
|
|
+ String orgContractNo = DBSql.getString("select NO from BO_EU_DNCTT_CONTRACT where ID=? AND NO LIKE '%XHT%' ORDER BY NO DESC", new Object[]{FRAMEWORK});
|
|
|
+ List<String> noList = DBSql.getList("select NO from BO_EU_DNCTT_CONTRACT where FRAMEWORK=? AND NO LIKE ? order by NO desc", String.class, new Object[]{FRAMEWORK, orgContractNo + "-S%"});
|
|
|
if (noList.size() > 0) {
|
|
|
String lastNo = noList.get(0);
|
|
|
lastNo = lastNo.replace(orgContractNo + "-S", "");
|
|
|
@@ -148,7 +146,6 @@ public class contractService {
|
|
|
contractBO.set("NO", contractNo);
|
|
|
}
|
|
|
} else {
|
|
|
-
|
|
|
// contractNo = SDK.getRuleAPI().executeAtScript("@sequence(@companyId_contract_@year,5)");
|
|
|
String varname = uc.getCompanyModel().getId() + "_contract_" + LocalDate.now().getYear();
|
|
|
contractNo = SDK.getRuleAPI().executeAtScript("@sequence(" + varname + ",5)");
|
|
|
@@ -167,10 +164,13 @@ public class contractService {
|
|
|
}
|
|
|
}
|
|
|
contractNo = "XHT-" + cssx + "-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + contractNo;
|
|
|
+
|
|
|
contractBO.set("NO", contractNo);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ contractServiceLogger.info("生成合同编号" + contractNo);
|
|
|
+
|
|
|
if (idApply) SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
|
|
|
else {
|
|
|
dn.recordFormChanges.record(uc, contractBO, "合同编辑");
|
|
|
@@ -237,7 +237,7 @@ public class contractService {
|
|
|
return resultDto;
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
- contractServiceLogger.info("合同报错-info--失败。。。");
|
|
|
+ contractServiceLogger.info("合同报错-info--失败。。。" + e.getMessage());
|
|
|
}
|
|
|
resultDto.put("success", false);
|
|
|
return resultDto;
|
|
|
@@ -1997,8 +1997,7 @@ public class contractService {
|
|
|
contractCost.put("PURCHASE_PERIOD_TYPE", service.getString("PURCHASE_PERIOD_TYPE"));//采购周期
|
|
|
|
|
|
String PURCHASE_START_DATE = service.getString("PURCHASE_START_DATE");
|
|
|
- if (StringUtils.isBlank(PURCHASE_START_DATE))
|
|
|
- PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
|
+ if (StringUtils.isBlank(PURCHASE_START_DATE)) PURCHASE_START_DATE = contract.getString("START_DATE");
|
|
|
contractCost.put("PURCHASE_START_DATE", PURCHASE_START_DATE);//采购开始日期
|
|
|
|
|
|
contractCost.put("CONTRACT_START_DATE", contract.getString("START_DATE"));
|
|
|
@@ -2179,8 +2178,7 @@ public class contractService {
|
|
|
*/
|
|
|
public static BigDecimal multiply(Object obj1, Object obj2) {
|
|
|
try {
|
|
|
- if (obj1 == null || obj2 == null)
|
|
|
- return BigDecimal.ZERO;
|
|
|
+ if (obj1 == null || obj2 == null) return BigDecimal.ZERO;
|
|
|
|
|
|
BigDecimal num1 = new BigDecimal(String.valueOf(obj1));
|
|
|
BigDecimal num2 = new BigDecimal(String.valueOf(obj2));
|