فهرست منبع

合同产品拣货添加校验:
1、拣货数量不能小于0;
2、序列号产品拣货需要输入序列号;
3、序列号产品要按照入库时间,选择序列号;

zhangyao 4 ماه پیش
والد
کامیت
23dc2001d3

BIN
com.awspaas.user.apps.donenow_ctt/lib/com.awspaas.user.apps.donenow_ctt.jar


+ 113 - 15
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/controller/contractCostController.java

@@ -49,11 +49,9 @@ public class contractCostController {
         int warehouseProductAvailableQuantity = ObjToInt(DBSql.getString("SELECT SUM(AVAILABLE) FROM VIEW_EU_DNINVT_PRODUCT_INVENTORY where ID=?", new Object[]{warehouseProductId}));
         logger.info("可用库存数量:" + warehouseProductAvailableQuantity);
 
-        if (warehouseProductAvailableQuantity <= 0)
-            return ResponseObject.newErrResponse("库存数量不足");
+        if (warehouseProductAvailableQuantity <= 0) return ResponseObject.newErrResponse("库存数量不足");
 
-        if (warehouseProductQuantity <= 0)
-            return ResponseObject.newErrResponse("库存数量不足");
+        if (warehouseProductQuantity <= 0) return ResponseObject.newErrResponse("库存数量不足");
 
         if (warehouseProductAvailableQuantity <= warehouseProductQuantity)//可用库存数量
             warehouseProductQuantity = warehouseProductAvailableQuantity;
@@ -70,6 +68,10 @@ public class contractCostController {
         String binidid = processInstance.getId();
         newBO.setBindId(processInstance.getId());
         int quantity = contractCostQuantity - contractProductPickQuantity;//待拣货数量
+
+        if (quantity <= 0)
+            return ResponseObject.newErrResponse("无需拣货");
+
         if (quantity > warehouseProductQuantity) {
             newBO.set("PICK_QUANTITY", warehouseProductQuantity);
         } else {
@@ -78,6 +80,11 @@ public class contractCostController {
 
         SDK.getBOAPI().create("BO_EU_DNCTT_CONTRACT_PRODUCT_PICK", newBO, processInstance, uc);
 
+        ResponseObject ro = getPickSNList(uc, processInstance.getId(), warehouseProductId, newBO.get("PICK_QUANTITY", int.class));
+        if (ro.isOk() && ro.getData() != null) {
+            DBSql.update("UPDATE BO_EU_DNCTT_CONTRACT_PRODUCT_PICK SET PICKED_SNS=? WHERE BINDID=?", new Object[]{ro.getData().toString(), processInstance.getId()});
+        }
+
         String url = SDK.getFormAPI().getFormURL("", uc.getSessionId(), binidid, "", 1, "", "", "");
 
         url = SDK.getPortalAPI().getPortalUrl() + "/r" + url.substring(1);
@@ -94,12 +101,10 @@ public class contractCostController {
      * @return
      */
     private int ObjToInt(Object obj) {
-        if (obj == null)
-            return 0;
+        if (obj == null) return 0;
 
         String objStr = obj.toString();
-        if (objStr.equals(""))
-            return 0;
+        if (objStr.equals("")) return 0;
         //如果有小数点,只取整数
         if (objStr.contains(".")) {
             objStr = objStr.substring(0, objStr.indexOf("."));
@@ -188,6 +193,8 @@ public class contractCostController {
      */
     @Mapping(value = "com.awspaas.user.apps.donenow_ctt.getPickSNList")
     public ResponseObject getPickSNList(UserContext uc, String bindid, String warehouseProductId, Integer quantity) {
+        //移除上次选择
+        SDK.getBOAPI().removeByBindId("BO_EU_DNCTT_CONTRACT_PRODUCT_PICKSN", bindid);
         //库存数量
         RowMap stockMap = DBSql.getMap("SELECT * FROM BO_EU_DNIVT_WAREHOUSE_PRODUCT WHERE ID=?", new Object[]{warehouseProductId});
         //库存产品
@@ -198,11 +205,16 @@ public class contractCostController {
         List<String> selectedSns = new ArrayList<>();//默认选择
         for (RowMap lotMap : lotList) {
             String lotSNs = lotMap.getString("SN");
+            if (StringUtils.isBlank(lotSNs))
+                continue;
+
             List<String> lotsns = new ArrayList<>();//本批次允许拣货数量
             for (String SN : lotSNs.split(",")) {
                 boolean isPicked = false;
                 for (RowMap pickMap : pickList) {
                     String pickSNs = pickMap.getString("SN");
+                    if (StringUtils.isBlank(pickSNs))
+                        continue;
                     for (String pickSN : pickSNs.split(",")) {
                         if (SN.equals(pickSN)) {
                             //已被拣货
@@ -210,13 +222,8 @@ public class contractCostController {
                             break;
                         }
                     }
-                    if (isPicked)
-                        break;
+                    if (isPicked) break;
                 }
-
-                //还要排除取消接收的sn
-
-
                 if (!isPicked) {
                     lotsns.add(SN);
                 }
@@ -227,16 +234,107 @@ public class contractCostController {
                     BO bo = new BO();
                     bo.set("SN", sn);
                     bo.setBindId(bindid);
-                    SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_PRODUCT_PICKSN", bo, null);
+                    SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_PRODUCT_PICKSN", bo, uc);
                 }
+                quantity = 0;
             } else {
                 //全部拣货,不允许挑选
                 quantity -= lotsns.size();
                 selectedSns.addAll(lotsns);
             }
+            if (quantity <= 0)
+                break;
+        }
+
+        if (quantity > 0) {
+            //超过最大拣货数量
+            return ResponseObject.newErrResponse("超过最大拣货数量");
         }
         ResponseObject responseObject = ResponseObject.newOkResponse();
         responseObject.setData(StringUtils.join(selectedSns, ","));
         return responseObject;
     }
+
+
+    /**
+     * 重新关联采购单
+     */
+    @Mapping(value = "com.awspaas.user.apps.donenow_ctt.reAssociatePurchaseOrder")
+    public ResponseObject reAssociatePurchaseOrder(UserContext uc, String contractCostId) {
+        BO orderProductBO = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").addQuery("CONTRACT_COST_ID=", contractCostId).detail();//采购单
+
+        if (orderProductBO == null)
+            return ResponseObject.newErrResponse("未找到采购单");
+
+        if (DBSql.getString("SELECT STATUS_ID FROM BO_EU_DNIVT_ORDER WHERE ID=?", new Object[]{orderProductBO.getString("ORDER_ID")}).equals("2148") == false) {
+            return ResponseObject.newErrResponse("采购单未接收,请在全部产品接收后操作");
+        }
+
+        String sns = "";
+        int orderQuantity = 0;
+        String movePro = "";
+        //判断是否被移动到其他仓库
+        List<RowMap> lots = DBSql.getMaps("SELECT a.SN,a.QUANTITY,b.NAME,b.CATE_ID FROM BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT a JOIN BO_EU_DNIVT_WAREHOUSE b ON a.WAREHOUSE_ID=b.ID WHERE a.ORDER_PRODUCT_ID=?", new Object[]{orderProductBO.getId()});
+        if (lots.size() > 0) {
+            for (RowMap lot : lots) {
+                String SN = lot.getString("SN");
+                String NAME = lot.getString("NAME");
+                int QUANTITY = lot.getInt("QUANTITY");
+                int CATE_ID = lot.getInt("CATE_ID");
+                if (CATE_ID != 2)//如果不在虚拟仓库,说明已经移库
+                {
+                    if (StringUtils.isNotBlank(SN))
+                        movePro += "产品序列号:" + SN + ",数量:" + QUANTITY + "已被移动到仓库" + NAME + ",";
+                    else
+                        movePro += "数量:" + QUANTITY + "已被移动到仓库" + NAME + ",";
+
+                } else {
+                    if (StringUtils.isNotBlank(SN))
+                        sns = sns + "," + SN;
+                    orderQuantity = orderQuantity + QUANTITY;
+                }
+            }
+            if (StringUtils.isNotBlank(sns))
+                sns = sns + ",";
+            if (orderQuantity <= 0)
+                return ResponseObject.newErrResponse("采购单产品已全部关联,请勿重复操作!");
+
+        } else {
+            return ResponseObject.newErrResponse("采购单产品已全部关联,请勿重复操作!");
+        }
+
+        //已经存在的采购单产品
+        List<BO> costProductList = SDK.getBOAPI().query("BO_EU_DNCTT_CONTRACT_COST_PRODUCT").addQuery("ORDER_ID=", orderProductBO.getString("ORDER_ID")).addQuery("CONTRACT_COST_ID=", orderProductBO.getString("CONTRACT_COST_ID")).addQuery("CLOSED=", "0").list();
+
+        for (BO costProductBO : costProductList) {
+            int quantity = Integer.parseInt(costProductBO.get("QUANTITY").toString());
+            String sn = costProductBO.getString("SN");
+            if (StringUtils.isNotBlank(sns) && StringUtils.isNotBlank(sn)) {
+                for (String s : sn.split(",")) {
+                    sns = sns.replace("," + s + ",", ",");
+                }
+            }
+            orderQuantity = orderQuantity - quantity;
+        }
+
+        if (orderQuantity <= 0) {
+            return ResponseObject.newErrResponse("采购单产品已全部关联,本次操作无效!");
+        }
+        if (StringUtils.isNotBlank(sns))
+            sns = sns.substring(1, sns.length() - 1);
+
+        //创建新的采购单产品
+        BO newCostProductBO = costProductList.get(0);
+        newCostProductBO.set("SN", sns);
+        newCostProductBO.set("QUANTITY", orderQuantity);
+        newCostProductBO.set("ID", StringUtils.EMPTY);
+        SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", newCostProductBO, uc);
+
+        if (StringUtils.isNotBlank(movePro)) {
+            return ResponseObject.newOkResponse("采购单产品已全部关联,但存在已移动的仓库产品,请重新关联!" + movePro);
+        }
+
+        return ResponseObject.newOkResponse();
+    }
+
 }

+ 23 - 3
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costPickFormBeforeSave.java

@@ -7,6 +7,7 @@ import com.actionsoft.bpms.bpmn.engine.listener.ListenerConst;
 import com.actionsoft.bpms.util.DBSql;
 import com.actionsoft.exception.BPMNError;
 import com.actionsoft.sdk.local.SDK;
+import org.apache.commons.lang3.StringUtils;
 
 public class costPickFormBeforeSave extends InterruptListener {
     public String getDescription() {
@@ -33,16 +34,35 @@ public class costPickFormBeforeSave extends InterruptListener {
         //验库存
         //可用库存
         int warehouseProductAvailableQuantity = ObjToInt(DBSql.getString("SELECT SUM(AVAILABLE) FROM VIEW_EU_DNINVT_PRODUCT_INVENTORY where ID=?", new Object[]{warehouseProductId}));
-        if (warehouseProductAvailableQuantity <= 0) throw new BPMNError("", "库存数量不足");
+        if (warehouseProductAvailableQuantity <= 0) throw new BPMNError("pickError1", "库存数量不足");
 
-        if (PICK_QUANTITY > warehouseProductAvailableQuantity) throw new BPMNError("", "库存数量不足");
+        if (PICK_QUANTITY > warehouseProductAvailableQuantity) throw new BPMNError("pickError1", "库存数量不足");
 
         int contractCostQuantity = ObjToInt(SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_COST", contractCostId, "QUANTITY"));//全部拣货数量
         //已拣货数量
         int contractProductPickQuantity = ObjToInt(DBSql.getString("SELECT SUM(QUANTITY) FROM BO_EU_DNCTT_CONTRACT_COST_PRODUCT WHERE CONTRACT_COST_ID=?  AND CLOSED=0", new Object[]{contractCostId}));
         if (contractProductPickQuantity + PICK_QUANTITY > contractCostQuantity)
-            throw new BPMNError("", "拣货数量超出合同数量");
+            throw new BPMNError("pickError2", "拣货数量超出合同数量");
 
+        String SERIAL_NUMBERS = formData.getString("SERIAL_NUMBERS");
+        String PICKED_SNS = formData.getString("PICKED_SNS");
+        int snCnt = 0;
+        if (StringUtils.isNotBlank(SERIAL_NUMBERS)) {
+            snCnt = SERIAL_NUMBERS.split(",").length;
+        }
+        if (StringUtils.isNotBlank(PICKED_SNS)) {
+            snCnt = PICKED_SNS.split(",").length;
+        }
+
+        if (PICK_QUANTITY <= 0)
+            throw new BPMNError("pickError3", "拣货数量不能小于0");
+
+        if (snCnt != PICK_QUANTITY) {
+            //拣货数量和序列号个数不一致
+            if (DBSql.getString("SELECT IS_SERIALIZED FROM BO_EU_DNIVT_PRODUCT WHERE ID=?", new Object[]{formData.getString("PRODUCT_ID")}).equals("1")) {
+                throw new BPMNError("pickError4", "请填写序列号");
+            }
+        }
         //记录表单修改
         dn.recordFormChanges.execute(param);
         return true;

+ 5 - 0
com.awspaas.user.apps.donenow_ctt/src/com/awspaas/user/apps/donenow_ctt/event/costProductShipFormAfterSave.java

@@ -192,6 +192,11 @@ public class costProductShipFormAfterSave extends ExecuteListener {
                     DBSql.update(conn, "update BO_EU_DNCTT_CONTRACT_COST_PRODUCT set SHIPPING_CONTRACT_COST_ID=? where ID=?", new Object[]{costShipBO.getId(), productBO.getId()});
                 }
 
+
+                //配送成功后,更新产品成本:产品来源于采购---从采购单获取,成本取自采购单;库存拣货,成本取自库存产品
+
+
+
                 conn.commit();
             } catch (Exception e) {
                 conn.rollback();

BIN
com.awspaas.user.apps.donenow_ivt/lib/com.awspaas.user.apps.donenow_ivt.jar


+ 11 - 14
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/controller/ivtOrderController.java

@@ -603,20 +603,28 @@ public class ivtOrderController {
             purchaseOrder.setBindId(processInstance.getId());
             purchaseOrder.set("SUBMIT_TIME", getCurrentDateTime());//提交时间
             purchaseOrder.set("SUBMITTED_RESOURCE_ID", uc.getUID());//提交人
+            //采购客户
+            String PURCHASE_ACCOUNT_ID = costList.get(0).getString("ACCOUNT_ID");
+            purchaseOrder.set("PURCHASE_ACCOUNT_ID", PURCHASE_ACCOUNT_ID);
+
             SDK.getBOAPI().createDataBO("BO_EU_DNIVT_ORDER", purchaseOrder, uc, conn);
             //采购产品
             for (RowMap cost : costList) {
                 BO purchaseOrderProduct = new BO();
                 purchaseOrderProduct.setBindId(processInstance.getId());
 
+                //采购数量需要扣除拣货数量
+                int purchase_quantity = cost.getInt("QUANTITY") - DBSql.getInt("select sum(QUANTITY) AS QU from BO_EU_DNCTT_CONTRACT_COST_PRODUCT where CONTRACT_COST_ID=? and CLOSED=0", new Object[]{cost.getString("ID")});
+
                 purchaseOrderProduct.set("PURCHASE_ACCOUNT_ID", cost.getString("ACCOUNT_ID"));
                 purchaseOrderProduct.set("NAME", cost.getString("NAME"));
                 purchaseOrderProduct.set("PRODUCT_ID", cost.getString("PRODUCT_ID"));
-                purchaseOrderProduct.set("QUANTITY", cost.getString("QUANTITY"));
+                purchaseOrderProduct.set("QUANTITY", purchase_quantity);
                 purchaseOrderProduct.set("UNIT_COST", cost.getString("UNIT_COST"));
                 purchaseOrderProduct.set("TAX_CATEGORY_ID", cost.getString("TAX_CATEGORY_ID"));
-                // purchaseOrderProduct.set("UNIT_COST_ADD_TAX", cost.getString(""));//含税价
+                purchaseOrderProduct.set("WAREHOUSE_ID", DBSql.getString("SELECT ID FROM bo_eu_dnivt_warehouse WHERE CATE_ID=2 AND ORGID=? ", new Object[]{uc.getCompanyModel().getId()}));//采购仓库 固定仓库
 
+                // purchaseOrderProduct.set("UNIT_COST_ADD_TAX", cost.getString(""));//含税价
                 purchaseOrderProduct.set("COST_TOTAL", cost.getString("EXTENDED_COST"));
                 purchaseOrderProduct.set("CONTRACT_ID", cost.getString("CONTRACT_ID"));
                 purchaseOrderProduct.set("PROJECT_ID", cost.getString("PROJECT_ID"));
@@ -624,18 +632,7 @@ public class ivtOrderController {
                 purchaseOrderProduct.set("CONTRACT_COST_ID", cost.getString("ID"));
                 purchaseOrderProduct.set("CONTRACT_SERVICE_ID", cost.getString("SERVICE_ID"));
                 purchaseOrderProduct.set("ORDER_ID", purchaseOrder.getId());
-
-                SDK.getBOAPI().createDataBO("BO_EU_DNIVT_ORDER_PRODUCT", purchaseOrderProduct, uc, conn);
-
-
-                //提交采购订单添加成本产品
-                BO costProduct = new BO();
-                costProduct.setBindId(cost.getString("BINDID"));
-                costProduct.set("ORDER_ID", purchaseOrder.getId());
-                costProduct.set("CONTRACT_COST_ID", cost.getString("ID"));
-                costProduct.set("STATUS_ID", "2156");//采购中
-                costProduct.set("QUANTITY", cost.getString("QUANTITY"));
-                SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProduct, uc, conn);
+                SDK.getBOAPI().createDataBO("BO_EU_DNIVT_ORDER_PRODUCT", purchaseOrderProduct, uc, conn);  //采购项
             }
 
 

+ 20 - 3
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/DoWorkThread.java

@@ -93,12 +93,13 @@ public class DoWorkThread extends Thread {
                     warehouseProductLotBo.set("PRODUCT_ID", bo.getString("PRODUCT_ID"));
                     warehouseProductLotBo.set("WAREHOUSE_ID", bo.getString("WAREHOUSE_ID"));
                     warehouseProductLotBo.set("QUANTITY", bo.getString("BEN_RECEIVE"));
-                    warehouseProductLotBo.set("UNIT_COST", bo.getString("UNIT_COST"));
-                    warehouseProductLotBo.set("SN", bo.getString("SN"));
+                    warehouseProductLotBo.set("UNIT_COST", bo.getString("UNIT_COST"));//成本
+                    warehouseProductLotBo.set("SN", bo.getString("SN"));//序列号
                     warehouseProductLotBo.set("ORDER_PRODUCT_ID", bo.getString("ORDER_PRODUCT_ID"));
+                    warehouseProductLotBo.set("IN_DATE", new Date());
                     SDK.getBOAPI().createDataBO(IVTConstant.BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT, warehouseProductLotBo, uc);
                 } else {
-                    if(StringUtils.isNotBlank(bo.getString("SN"))) {
+                    if (StringUtils.isNotBlank(bo.getString("SN"))) {
                         if (intBenReceive > 0)
                             warehouseProductLotBo.set("SN", warehouseProductLotBo.getString("SN") + "," + bo.getString("SN"));
                         else {
@@ -239,6 +240,22 @@ public class DoWorkThread extends Thread {
                     contractProductBo.set("STATUS_ID", IVTConstant.STATUS_1236);//待配送
                     SDK.getBOAPI().update(IVTConstant.BO_EU_DNCTT_CONTRACT_COST, contractProductBo);
 
+                    //更新合同产品上面的合同产品状态
+
+                    BO costProduct = SDK.getBOAPI().query(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT).addQuery("ORDER_ID=", bo.getString("ORDER_ID")).addQuery("CONTRACT_COST_ID=", bo.getString("CONTRACT_COST_ID")).detail();
+                    if (costProduct != null) {
+                        costProduct.set("STATUS_ID", "2158");//待配送
+                        costProduct.set("SN", DBSql.getString("SELECT GROUP_CONCAT(SN) FROM BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT WHERE ORDER_PRODUCT_ID=?", new Object[]{costProduct.getId()}));
+                        try {
+                            //记录日志
+                            dn.recordFormChanges.record(uc, costProduct, "采购产品接收后更新");
+                        } catch (Exception e) {
+
+                        }
+                        SDK.getBOAPI().update(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT, costProduct);
+                    }
+
+
                 }
             }
             if (count == orderProductList.size() && count > 0) {

+ 77 - 0
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/ivtOrderProcessAfterComplete.java

@@ -0,0 +1,77 @@
+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.server.UserContext;
+import com.actionsoft.bpms.util.DBSql;
+import com.actionsoft.sdk.local.SDK;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+public class ivtOrderProcessAfterComplete extends ExecuteListener {
+    public String getDescription() {
+        return "流程结束事件:采购订单审批完成后触发";
+    }
+
+    private final String[] excludesArray = new String[]{"ID", "ORGID", "BINDID", "CREATEDATE", "CREATEUSER", "UPDATEDATE", "UPDATEUSER"};
+
+    /**
+     * 采购订单审批完成后触发
+     * @param processExecutionContext
+     * @throws Exception
+     */
+    @Override
+    public void execute(ProcessExecutionContext processExecutionContext) throws Exception {
+        String BINDID = processExecutionContext.getProcessInstance().getId();
+        UserContext uc = processExecutionContext.getUserContext();
+
+        BO purchaseOrder = SDK.getBOAPI().getByProcess("BO_EU_DNIVT_ORDER", BINDID);
+        purchaseOrder.set("STATUS_ID", "2148");//已提交
+        SDK.getBOAPI().update("BO_EU_DNIVT_ORDER", purchaseOrder);
+
+        List<BO> orderProducts = SDK.getBOAPI().query("BO_EU_DNIVT_ORDER_PRODUCT").bindId(BINDID).list();
+        for (BO orderProduct : orderProducts) {
+
+            orderProduct.set("ORDER_ID", purchaseOrder.getId());
+            SDK.getBOAPI().update("BO_EU_DNIVT_ORDER_PRODUCT", orderProduct);
+
+            if (StringUtils.isNotBlank(orderProduct.getString("CONTRACT_COST_ID"))) {
+                BO cost = SDK.getBOAPI().get("BO_EU_DNCTT_CONTRACT_COST", orderProduct.getString("CONTRACT_COST_ID"));
+
+                cost.set("STATUS_ID", "1235");//更新状态 采购中
+
+                SDK.getBOAPI().update("BO_EU_DNCTT_CONTRACT_COST", cost);
+
+                //排除重复提交
+                String sql = "SELECT ID FROM BO_EU_DNCTT_CONTRACT_COST_PRODUCT WHERE ORDER_ID=? AND CONTRACT_COST_ID=?";
+                String id = DBSql.getString(sql, new Object[]{purchaseOrder.getId(), cost.getId()});
+                SDK.getBOAPI().remove("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", id);//删除旧数据
+
+                //提交采购订单添加成本产品
+                BO costProduct = new BO();
+                costProduct.setBindId(cost.getString("BINDID"));
+                costProduct.set("ORDER_ID", purchaseOrder.getId());
+                costProduct.set("CONTRACT_COST_ID", cost.getString("ID"));
+                costProduct.set("STATUS_ID", "2156");//采购中
+                costProduct.set("QUANTITY", orderProduct.get("QUANTITY"));
+                costProduct.set("WAREHOUSE_ID", orderProduct.get("WAREHOUSE_ID"));
+                costProduct.set("SN", DBSql.getString("SELECT GROUP_CONCAT(SN) FROM BO_EU_DNIVT_WAREHOUSE_PRODUCT_LOT WHERE ORDER_PRODUCT_ID=?", new Object[]{costProduct.getId()}));
+                costProduct.set("OLD_QUANTITY", costProduct.get("QUANTITY"));//配送数量
+
+                try {
+                    //记录日志
+                    dn.recordFormChanges.record(uc, costProduct, "采购产品审批后新增");
+                } catch (Exception e) {
+
+                }
+
+                SDK.getBOAPI().createDataBO("BO_EU_DNCTT_CONTRACT_COST_PRODUCT", costProduct, uc);
+
+            }
+
+        }
+
+    }
+}