Bläddra i källkod

Merge branch 'master' of http://210.51.45.41:3000/itcat_admin/aws_donenow

HULEI 2 månader sedan
förälder
incheckning
6ad9a7e224

+ 2 - 2
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/contractFormBeforeSave.java

@@ -45,7 +45,7 @@ public class contractFormBeforeSave extends InterruptListener {
                 LocalDate END_DATE = getLocalDate(formData.get("END_DATE"));//合同结束日期
 
                 //修改了合同开始日期
-                if (START_DATE.isEqual(ORG_START_DATE) == false) {
+                if (START_DATE != null && ORG_START_DATE != null && START_DATE.isEqual(ORG_START_DATE) == false) {
                     //已审批服务周期,则不能修改合同开始时间
                     if (DBSql.getInt("SELECT count(1) FROM BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD WHERE APPROVE_AND_POST_USER_ID IS NOT NULL AND LENGTH(APPROVE_AND_POST_USER_ID)>1 AND APPROVE_AND_POST_DATE IS NOT NULL AND CONTRACT_ID=? ", new Object[]{orgData.getId()}) > 0) {
                         throw new BPMNError("500", "已审批服务周期,则不能修改合同开始时间");
@@ -53,7 +53,7 @@ public class contractFormBeforeSave extends InterruptListener {
                 }
 
                 //修改了合同结束日期
-                if (END_DATE.isEqual(ORG_END_DATE) == false) {
+                if (END_DATE != null && ORG_END_DATE != null && END_DATE.isEqual(ORG_END_DATE) == false) {
 
                     String END_DATE_STR = END_DATE.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
 

+ 97 - 20
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/service/contractService.java

@@ -123,8 +123,30 @@ public class contractService {
                 DBSql.update("update BO_EU_DNCTT_CONTRACT set IS_SDT_DEFAULT=0 where ACCOUNT_ID=?", new Object[]{contractBO.getString("ACCOUNT_ID")});
             }
 
-            if (idApply)
-                SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_APPLY", contractBO);//更新合同
+
+            //2025年10月25日  生成合同编号
+
+            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");
+                        }
+                        //如果 cssx="上海市" 则输出 SH
+                        cssx = getCityAbbreviation(cssx);
+                    }
+                }
+                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);//更新合同
             else {
                 dn.recordFormChanges.record(uc, contractBO, "合同编辑");
                 SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", contractBO);
@@ -138,8 +160,7 @@ public class contractService {
 
             RowMap dto = new RowMap(contractBO.asMap());//合同对象
 
-            if (idApply)
-                insertContract(uc, dto);//创建合同详情,用于提交后查看和修改相关配置项、工单、服务等
+            if (idApply) insertContract(uc, dto);//创建合同详情,用于提交后查看和修改相关配置项、工单、服务等
             else {
                 //更新
                 DBSql.update("update BO_EU_DNCTT_CONTRACT_RATE set CONTRACT_ID=? where BINDID=?", new Object[]{dto.getString("ID"), dto.getString("BINDID")});
@@ -176,7 +197,8 @@ public class contractService {
                 } catch (Exception e) {
 
                     e.printStackTrace();
-                    contractServiceLogger.info("info--失败。。。");
+
+                    contractServiceLogger.info("新增服务--info--失败。。。" + e.getMessage());
 
                     resultDto.put("success", false);
                     resultDto.put("msg", e.getMessage());
@@ -189,7 +211,7 @@ public class contractService {
             return resultDto;
         } catch (Exception e) {
             e.printStackTrace();
-            contractServiceLogger.info("info--失败。。。");
+            contractServiceLogger.info("合同报错-info--失败。。。");
         }
         resultDto.put("success", false);
         return resultDto;
@@ -270,7 +292,31 @@ public class contractService {
         //更新
         DBSql.update("update BO_EU_DNCTT_CONTRACT_RATE set PROCESSDEFID=?,BINDID=?,CONTRACT_ID=? where BINDID=?", new Object[]{processDefId, contractBINDID, exitsBOID, APPLY_BINDID});
         DBSql.update("update BO_EU_DNCTT_CONTRACT_MILESTONE set PROCESSDEFID=?,BINDID=?,CONTRACT_ID=? where BINDID=?", new Object[]{processDefId, contractBINDID, exitsBOID, APPLY_BINDID});
-        DBSql.update("update BO_EU_DNCTT_CONTRACT_SERVICE set PROCESSDEFID=?,BINDID=?,CONTRACT_ID=? where BINDID=?", new Object[]{processDefId, contractBINDID, exitsBOID, APPLY_BINDID});
+
+        // DBSql.update("update BO_EU_DNCTT_CONTRACT_SERVICE set PROCESSDEFID=?,BINDID=?,CONTRACT_ID=? where BINDID=?", new Object[]{processDefId, contractBINDID, exitsBOID, APPLY_BINDID});
+
+        // 合同服务
+        List<BO> serviceList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE").addQuery("BINDID =", APPLY_BINDID).list();
+        for (BO service : serviceList) {
+
+            ProcessInstance costServiceProcessInst = SDK.getProcessAPI().createBOProcessInstance("obj_58693e03feac4879901430440b42efd9", uc.getUID(), "合同服务管理");
+
+            Map<String, Object> serviceMap = service.asMap();
+
+            BO serviceBO = new BO();
+            for (String key : excludesArray) {
+                serviceMap.remove(key);
+            }
+            serviceBO.setAll(serviceMap);
+
+            serviceBO.setBindId(costServiceProcessInst.getId());
+            serviceBO.set("CONTRACT_ID", exitsBOID);
+            dn.recordFormChanges.record(uc, serviceBO, "合同服务新增");
+
+            SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_SERVICE", serviceBO, uc);
+
+        }
+
         DBSql.update("update BO_EU_DNCTT_CONTRACT_BLOCK set PROCESSDEFID=?,BINDID=?,CONTRACT_ID=? where BINDID=?", new Object[]{processDefId, contractBINDID, exitsBOID, APPLY_BINDID});
     }
 
@@ -303,6 +349,10 @@ public class contractService {
                 //如果服务周期的结束时间不等于合同的结束时间,则需要延长服务周期或缩短
                 String PERIOD = service.getString("PERIOD");//服务起止日期
                 String ADJUST_PERIOD = service.getString("ADJUST_PERIOD");//服务调整的起止日期
+
+                contractServiceLogger.info("PERIOD---" + PERIOD);
+                contractServiceLogger.info("ADJUST_PERIOD---" + ADJUST_PERIOD);
+
                 LocalDate PERIOD_END;
                 if (StringUtils.isNotBlank(PERIOD)) {
                     PERIOD_END = getLocalDate(PERIOD.split("~")[1]);
@@ -327,11 +377,11 @@ public class contractService {
                 contractServiceLogger.info("合同结束日期--" + LocalDateYYYYMMDD(END_DATE));
 
 
-                if (PERIOD_END.isEqual(END_DATE)) {
+                if (!PERIOD_END.isEqual(END_DATE)) {
                     if (PERIOD_END.isBefore(END_DATE)) {
                         contractServiceLogger.info("服务周期延长--" + service.getString("NAME"));
                         //延长
-                        List<BO> servicePeriodList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD").connection(conn).addQuery("CONTRACT_SERVICE_ID =", service.getString("CONTRACT_SERVICE_ID")).addQuery("PERIOD_END_DATE >=", PERIOD_END).orderBy("PERIOD_BEGIN_DATE").desc().list();
+                        List<BO> servicePeriodList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD").connection(conn).addQuery("CONTRACT_SERVICE_ID =", service.getId()).addQuery("PERIOD_END_DATE >=", LocalDateYYYYMMDD(PERIOD_END)).orderBy("PERIOD_BEGIN_DATE").desc().list();
 
                         BO servicePeriod = servicePeriodList.get(0);
                         LocalDate period_begin_date = getLocalDate(servicePeriod.get("PERIOD_BEGIN_DATE"));
@@ -413,10 +463,10 @@ public class contractService {
                                 }
                             }
                         }
-                    } else {
+                    } else if (PERIOD_END.isAfter(END_DATE)) {
                         contractServiceLogger.info("服务周期缩短--" + service.getString("NAME"));
                         //缩短
-                        List<BO> servicePeriodList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD").connection(conn).addQuery("CONTRACT_SERVICE_ID =", service.getString("CONTRACT_SERVICE_ID")).addQuery("PERIOD_END_DATE >=", END_DATE).orderBy("PERIOD_BEGIN_DATE").asc().list();
+                        List<BO> servicePeriodList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD").connection(conn).addQuery("CONTRACT_SERVICE_ID =", service.getId()).addQuery("PERIOD_END_DATE >=", LocalDateYYYYMMDD(END_DATE)).orderBy("PERIOD_BEGIN_DATE").asc().list();
 
                         BO servicePeriod = servicePeriodList.get(0);
                         servicePeriod.set("PERIOD_END_DATE", END_DATE);
@@ -448,10 +498,12 @@ public class contractService {
             conn.commit();
             return true;
         } catch (SQLException e) {
+
+            contractServiceLogger.info("AddServiceServiceBundle--error--失败。。。" + e.getMessage());
+
             e.printStackTrace();
-            conn.rollback();
 
-            contractServiceLogger.error("AddServiceServiceBundle--error--失败。。。", e);
+            conn.rollback();
 
         } finally {
             if (conn != null) DBSql.close(conn);
@@ -839,6 +891,9 @@ public class contractService {
 
         //更新合同服务上的
         DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_SERVICE set PERIOD=?,ADJUST_PERIOD=? where ID=? and BINDID=?", new Object[]{PERIOD, ADJUST_PERIOD, service.get("ID"), service.get("BINDID")});
+        service.set("PERIOD", PERIOD);
+        service.set("ADJUST_PERIOD", ADJUST_PERIOD);
+
         return true;
     }
 
@@ -1968,7 +2023,7 @@ public class contractService {
                     }
                 }
 
-                RowMap ca = DBSql.getMap("select TAX_REGION_ID,IS_TAX_EXEMPT from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{cad.get("ACCOUNT_ID")});
+                RowMap ca = DBSql.getMap("select NAME,TAX_REGION_ID,IS_TAX_EXEMPT from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{cad.get("ACCOUNT_ID")});
                 String tax_category_name = null;//税收种类
                 String tax_region_name = null;//税区
                 double tax_rate = 0;//税率
@@ -1994,10 +2049,24 @@ public class contractService {
                 // cad.set("EXTENDED_COST", tax_rate);
                 // cad.extended_cost = GetCost(id);
 
+                contractServiceLogger.info("定期服务计算税额");
+                contractServiceLogger.info("是否免税" + ca.get("IS_TAX_EXEMPT"));
+                contractServiceLogger.info(ca.getString("NAME") + cad.get("ACCOUNT_ID") + "是否免税" + ca.get("IS_TAX_EXEMPT"));
                 //是否免税
-                if (!ca.getString("IS_TAX_EXEMPT").equals("1") && ca.get("EXTENDED_PRICE") != null && tax_rate > 0) {
-                    double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) * (1 - 1 / (1 + tax_rate));//税额
-                    cad.set("TAX_DOLLARS", tax_dollars);
+                if (ca.get("IS_TAX_EXEMPT") != null && ca.getString("IS_TAX_EXEMPT").equals("1")) {
+
+                } else {
+
+                    contractServiceLogger.info("cad.extended_price:" + cad.get("EXTENDED_PRICE"));
+                    contractServiceLogger.info("tax_rate:" + tax_rate);
+
+                    if (cad.get("EXTENDED_PRICE") != null && tax_rate > 0) {
+                        double tax_dollars = cad.get("EXTENDED_PRICE", Double.class) * (1 - 1 / (1 + tax_rate));//税额
+                        contractServiceLogger.info("cad.tax_dollars:" + tax_dollars);
+                        //截取前四位
+                        tax_dollars = Math.round(tax_dollars * 10000) / 10000.0;
+                        cad.set("TAX_DOLLARS", tax_dollars);
+                    }
                 }
 
                 //计费客户
@@ -2213,21 +2282,29 @@ public class contractService {
                         throw new RuntimeException("该服务已经生成发票,请先删除发票");
                 }
 
-                if (bo.get("TYPE_ID").equals(cttConstant.ACCOUNT_DEDUCTION_TYPE_SERVICE)) //类型:服务
+                if (bo.getString("TYPE_ID").equals(String.valueOf(cttConstant.ACCOUNT_DEDUCTION_TYPE_SERVICE))) //类型:服务
                 {
+                    /*
                     BO ccsp = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD").addQuery("CONTRACT_ID =", bo.getString("CONTRACT_ID")).addQuery("ID =", bo.getString("OBJECT_ID")).detail();
                     ccsp.set("APPROVE_AND_POST_DATE", null);
                     ccsp.set("APPROVE_AND_POST_USER_ID", null);
                     SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD", ccsp, connUpdate);
+                    */
+                    DBSql.update(connUpdate, "update BO_EU_DNCTT_CONTRACT_SERVICE_PERIOD set APPROVE_AND_POST_DATE=null,APPROVE_AND_POST_USER_ID=null where ID=?", new Object[]{bo.getString("OBJECT_ID")});
 
-                } else if (bo.get("TYPE_ID").equals(cttConstant.ACCOUNT_DEDUCTION_TYPE_INITIAL_COST)) //类型:初始费用
+                } else if (bo.getString("TYPE_ID").equals(String.valueOf(cttConstant.ACCOUNT_DEDUCTION_TYPE_INITIAL_COST))) //类型:初始费用
                 {
+                    /*
                     BO ccc = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT").addQuery("ID =", bo.getString("CONTRACT_ID")).detail();
                     ccc.set("SETUP_FEE_APPROVE_AND_POST_USER_ID", null);
                     ccc.set("SETUP_FEE_APPROVE_AND_POST_DATE", null);
                     SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", ccc, connUpdate);
+
+                     */
+
+                    DBSql.update(connUpdate, "update BO_EU_DNCTT_CONTRACT set SETUP_FEE_APPROVE_AND_POST_USER_ID=null,SETUP_FEE_APPROVE_AND_POST_DATE=null where ID=?", new Object[]{bo.getString("OBJECT_ID")});
                 }
-                bo.set("CLOSED", 1);
+                //bo.set("CLOSED", 1);
                 dn.recordFormChanges.record(uc, bo, "撤销定期服务");
                 SDK.getBOAPI().remove("BO_EU_DNCRM_ACCOUNT_DEDUCTION", bo.getId(), connUpdate);
                 //SDK.getBOAPI().update("BO_EU_DNCRM_ACCOUNT_DEDUCTION", bo, connUpdate);

+ 25 - 15
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderFormAfter.java

@@ -6,6 +6,7 @@ import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
 import com.actionsoft.bpms.commons.database.RowMap;
 import com.actionsoft.bpms.util.DBSql;
 import com.actionsoft.sdk.local.SDK;
+import com.actionsoft.sdk.local.api.Logger;
 import org.apache.commons.lang3.StringUtils;
 
 import java.time.LocalDate;
@@ -15,6 +16,8 @@ import java.util.List;
 import static com.awspaas.user.apps.donenow_ivt.utils.CityAbbreviationUtil.getCityAbbreviation;
 
 public class ivtOrderFormAfter extends ExecuteListener {
+    private static final Logger logger = SDK.getLogAPI().getLogger(ivtOrderFormAfter.class);//记录日志
+
     public String getDescription() {
         return "采购订单表单保存后,数据处理事件";
     }
@@ -26,6 +29,8 @@ public class ivtOrderFormAfter extends ExecuteListener {
      */
     @Override
     public void execute(ProcessExecutionContext processExecutionContext) throws Exception {
+
+        logger.info("采购订单表单保存后,数据处理事件");
         BO orderBO = SDK.getBOAPI().getByProcess("BO_EU_DNIVT_ORDER", processExecutionContext.getProcessInstance().getId());
         List<BO> orderProducts = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").bindId(orderBO.getBindId()).list();
         List<BO> costProducts = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_COST_PRODUCT").addQuery("ORDER_ID=", orderBO.getId()).list();
@@ -47,30 +52,35 @@ public class ivtOrderFormAfter extends ExecuteListener {
 
 
         //采购订单编号
+        String purchaseOrderNo = orderBO.getString("PURCHASE_ORDER_NO");
+        logger.info("采购订单编号:" + purchaseOrderNo);
+        if (StringUtils.isBlank(purchaseOrderNo)) {
 
-        String purchaseOrderNo = SDK.getRuleAPI().executeAtScript("@sequenceYear(@companyId_purchase_order,4,0,130)");
+            purchaseOrderNo = SDK.getRuleAPI().executeAtScript("@sequenceYear(@companyId_purchase_order,4,0,130)", processExecutionContext.getUserContext());
 
-        String DISTRICT_ID = DBSql.getString("select DISTRICT_ID from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{orderBO.getString("VENDOR_ACCOUNT_ID")});
+            String DISTRICT_ID = DBSql.getString("select DISTRICT_ID from BO_EU_DNCRM_ACCOUNT where ID=?", new Object[]{orderBO.getString("VENDOR_ACCOUNT_ID")});
 
-        String cssx = "SH";//城市缩写
+            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");
+            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);
             }
-        }
-        purchaseOrderNo = "CHT-" + cssx + "-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + purchaseOrderNo;
+            purchaseOrderNo = "CHT-" + cssx + "-" + LocalDate.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) + "-" + purchaseOrderNo;
 
-        orderBO.set("PURCHASE_ORDER_NO", purchaseOrderNo);
+            orderBO.set("PURCHASE_ORDER_NO", purchaseOrderNo);
 
-        SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT", orderBO);
+            logger.info("采购订单编号:" + purchaseOrderNo);
 
+            SDK.getBOAPI().update("BO_EU_DNIVT_ORDER", orderBO);
 
+        }
     }
 }

+ 22 - 2
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderProcessAfterComplete.java

@@ -42,17 +42,24 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
 
         BO purchaseOrder = SDK.getBOAPI().getByProcess("BO_EU_DNIVT_ORDER", BINDID);
         purchaseOrder.set("STATUS_ID", "2152");//采购中
-        SDK.getBOAPI().update("BO_EU_DNIVT_ORDER", purchaseOrder);
+        //SDK.getBOAPI().update("BO_EU_DNIVT_ORDER", purchaseOrder);
 
         String orderId = purchaseOrder.getId(); // 获取订单ID
         System.out.println("采购订单审批完成,开始自动生成付款计划,订单ID:" + orderId);
 
         List<BO> orderProducts = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").bindId(BINDID).list();
+
+        boolean isAllService = true;
+
         for (BO orderProduct : orderProducts) {
 
             orderProduct.set("ORDER_ID", purchaseOrder.getId());
             SDK.getBOAPI().update("BO_EU_DNIVT_ORDER_PRODUCT", orderProduct);
 
+            if (orderProduct.get("CONTRACT_SERVICE_ID") == null || StringUtils.isBlank(orderProduct.getString("CONTRACT_SERVICE_ID"))) {
+                isAllService = false;
+            }
+
             if (StringUtils.isNotBlank(orderProduct.getString("CONTRACT_COST_ID"))) {
                 BO cost = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_COST", orderProduct.getString("CONTRACT_COST_ID"));
 
@@ -90,7 +97,7 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
                     if (costProduct.getString("COST_CODE_ID").equals("307")) {
                         costProduct.set("STATUS_ID", "2159");//已配送
                     }
-
+                    costProduct.set("UNIT_COST", orderProduct.get("UNIT_COST"));
                     dn.recordFormChanges.record(uc, costProduct, "采购产品审批后新增");
                     SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProduct, processInstance, uc);
                 } else {
@@ -106,6 +113,8 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
                     costProduct.set("COST_CODE_ID", cost.getString("COST_CODE_ID"));
                     costProduct.set("COST_CODE_NAME", cost.getString("COST_CODE_NAME"));
 
+                    costProduct.set("UNIT_COST", orderProduct.get("UNIT_COST"));
+
                     //服务采购审批完成,状态直接改为已配送。
                     if (costProduct.getString("COST_CODE_ID").equals("307")) {
                         costProduct.set("STATUS_ID", "2159");//已配送
@@ -141,6 +150,15 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
 
         }
 
+        if (isAllService) {
+
+            purchaseOrder.set("STATUS_ID", "2150");//已配送
+
+        }
+        SDK.getBOAPI().update("BO_EU_DNIVT_ORDER", purchaseOrder);
+
+        String VENDOR_ACCOUNT_ID = purchaseOrder.getString("VENDOR_ACCOUNT_ID");//供应商账户ID
+
         //生成付款计划-- 胡磊 旧版
         //createPaymentPlan(uc,orderId);
 
@@ -203,6 +221,8 @@ public class ivtOrderProcessAfterComplete extends ExecuteListener {
                         paymentPlan.set("CONTRACT_SERVICE_ID", service.getId());
                         paymentPlan.set("PAY_DESC", orderProduct.getString("NAME"));
 
+                        paymentPlan.set("ACCOUNT_PAYEE", VENDOR_ACCOUNT_ID);//收款单位
+
                         SDK.getBOAPI().create("BO_EU_DNIVT_ORDER_PAYMENT_PLAN", paymentPlan, processInstance, uc);
 
                         System.out.println("==== 创建付款计划:" + paymentPlan.get("PLAN_DATE") + ",金额:" + paymentPlan.get("PLAN_AMOUNT") + " ====");

+ 41 - 0
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderProcessAfterDeleted.java

@@ -0,0 +1,41 @@
+package com.awspaas.user.apps.donenow_ivt.event;
+
+import com.actionsoft.bpms.bo.engine.BO;
+import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
+import com.actionsoft.bpms.bpmn.engine.listener.ExecuteListener;
+import com.actionsoft.bpms.util.DBSql;
+import com.actionsoft.sdk.local.SDK;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+/**
+ * 采购订单删除作废
+ */
+public class ivtOrderProcessAfterDeleted extends ExecuteListener {
+
+    public String getDescription() {
+        return "采购订单删除作废";
+    }
+
+    public void execute(ProcessExecutionContext ctx) throws Exception {
+        info("流程删除后事件被触发-->" + ctx.getProcessInstance());
+
+        String bindId = ctx.getProcessInstance().getId();
+
+        //BO order = SDK.getBOAPI().getByProcess("BO_EU_DNIVT_ORDER", bindId);
+        List<BO> orderProducts = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").addQuery("BINDID =", bindId).list();
+
+        for (BO op : orderProducts) {
+            String costProductID = DBSql.getString("SELECT ID FROM BO_EU_DNCTT_CONTRACT_COST_PRODUCT WHERE ORDER_ID=? AND CONTRACT_COST_ID=?", new Object[]{op.getString("ORDER_ID"), op.getString("CONTRACT_COST_ID")});
+
+            if (StringUtils.isNotBlank(costProductID))
+                DBSql.update("delete from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where ID=?", new Object[]{costProductID});
+        }
+
+        //SDK.getBOAPI().removeByBindId("BO_EU_DNIVT_ORDER", bindId);
+        //SDK.getBOAPI().removeByBindId("BO_EU_DNIVT_ORDER_PRODUCT", bindId);
+
+    }
+
+}

+ 31 - 0
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderProcessBeforeDeleted.java

@@ -0,0 +1,31 @@
+package com.awspaas.user.apps.donenow_ivt.event;
+
+import com.actionsoft.bpms.bo.engine.BO;
+import com.actionsoft.bpms.bpmn.engine.core.delegate.ProcessExecutionContext;
+import com.actionsoft.bpms.bpmn.engine.listener.InterruptListener;
+import com.actionsoft.bpms.util.DBSql;
+import com.actionsoft.sdk.local.SDK;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+public class ivtOrderProcessBeforeDeleted extends InterruptListener {
+    /**
+     *采购订单删除后,删除关联的采购合同产品
+     * @param ctx
+     * @return
+     * @throws Exception
+     */
+    @Override
+    public boolean execute(ProcessExecutionContext ctx) throws Exception {
+        String bindId = ctx.getProcessInstance().getId();
+        List<BO> orderProducts = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").addQuery("BINDID =", bindId).list();
+        for (BO op : orderProducts) {
+            String costProductID = DBSql.getString("SELECT ID FROM BO_EU_DNCTT_CONTRACT_COST_PRODUCT WHERE ORDER_ID=? AND CONTRACT_COST_ID=?", new Object[]{op.getString("ORDER_ID"), op.getString("CONTRACT_COST_ID")});
+            if (StringUtils.isNotBlank(costProductID))
+                DBSql.update("delete from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where ID=?", new Object[]{costProductID});
+        }
+
+        return true;
+    }
+}