浏览代码

框架协议子合同编号

zhangyao 1 月之前
父节点
当前提交
f06bb8a887

+ 35 - 15
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -23,7 +23,6 @@ import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 
 import static com.awspaas.user.apps.donenow_ctt.service.CityAbbreviationUtil.getCityAbbreviation;
-import static org.apache.fop.fonts.type1.AdobeStandardEncoding.period;
 
 
 /**
@@ -130,25 +129,46 @@ public class contractService {
 
             String contractNo = contractBO.getString("NO");
             if (StringUtils.isBlank(contractNo) || contractNo.indexOf("XHT") != 0) {
-                contractNo = SDK.getRuleAPI().executeAtScript("@sequenceYear(@companyId_contract,5)");
-                String DISTRICT_ID = DBSql.getString("select DISTRICT_ID from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{contractBO.getString("ACCOUNT_ID")});
-                String cssx = "SH";//城市缩写
-                if (StringUtils.isNotBlank(DISTRICT_ID)) {
-                    RowMap city = DBSql.getMap("SELECT EXTTEXT1,EXTTEXT2 FROM BO_ACT_DICT_KV_ITEM WHERE DICTKEY = 'GB.ADDR' AND ITEMNO= ?", new Object[]{DISTRICT_ID});
-                    if (city != null) {
-                        cssx = city.getString("EXTTEXT1");
-                        if (!cssx.contains("市")) {
-                            cssx = city.getString("EXTTEXT2");
+
+                //框架协议子合同编号:框架协议合同编码-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});
+                    if (noList.size() > 0) {
+                        String lastNo = noList.get(0);
+                        lastNo = lastNo.replace(orgContractNo + "-S", "");
+                        // lastNo 去除前面的0
+                        lastNo = lastNo.replaceAll("^0+", "");
+                        contractNo = orgContractNo + "-S" + String.format("%03d", Integer.parseInt(lastNo) + 1);
+                        contractBO.set("NO", contractNo);
+                    } else {
+                        contractNo = orgContractNo + "-SOO1";
+                        contractBO.set("NO", contractNo);
+                    }
+                } else {
+                    contractNo = SDK.getRuleAPI().executeAtScript("@sequenceYear(@companyId_contract,5)");
+                    String DISTRICT_ID = DBSql.getString("select DISTRICT_ID from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{contractBO.getString("ACCOUNT_ID")});
+                    String cssx = "SH";//城市缩写
+                    if (StringUtils.isNotBlank(DISTRICT_ID)) {
+                        RowMap city = DBSql.getMap("SELECT EXTTEXT1,EXTTEXT2 FROM BO_ACT_DICT_KV_ITEM WHERE DICTKEY = 'GB.ADDR' AND ITEMNO= ?", new Object[]{DISTRICT_ID});
+                        if (city != null) {
+                            cssx = city.getString("EXTTEXT1");
+                            if (!cssx.contains("市")) {
+                                cssx = city.getString("EXTTEXT2");
+                            }
+                            //如果 cssx="上海市" 则输出 SH
+                            cssx = getCityAbbreviation(cssx);
                         }
-                        //如果 cssx="上海市" 则输出 SH
-                        cssx = getCityAbbreviation(cssx);
                     }
+                    contractNo = "XHT-" + cssx + "-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + contractNo;
+                    contractBO.set("NO", contractNo);
                 }
-                contractNo = "XHT-" + cssx + "-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + contractNo;
-                contractBO.set("NO", contractNo);
             }
 
-            if (idApply) SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
+            if (idApply)
+                SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
             else {
                 dn.recordFormChanges.record(uc, contractBO, "合同编辑");
                 SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", contractBO);