Przeglądaj źródła

Donenow采购接收出现重复接收的bug

zhangyao 4 miesięcy temu
rodzic
commit
733d8b93db

+ 6 - 5
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/controller/IVTController.java

@@ -249,12 +249,12 @@ public class IVTController extends BaseController {
 
             String unBack = "0";
             BO subBo = new BO();
-            set.add(getString(map,"PURCHASE_ORDER_NO"));
-            RowMap rowMap = DBSql.getMap("select ORDER_PRODUCT_ID,sum(QUANTITY_RECEIVED) QUANTITY_RECEIVED from BO_EU_DNIVT_RECEIVE WHERE  ORDER_PRODUCT_ID=? group by ORDER_PRODUCT_ID", new Object[]{getString(map,"ID")});
+            set.add(getString(map, "PURCHASE_ORDER_NO"));
+            RowMap rowMap = DBSql.getMap("select ORDER_PRODUCT_ID,sum(QUANTITY_RECEIVED) QUANTITY_RECEIVED from BO_EU_DNIVT_RECEIVE WHERE  ORDER_PRODUCT_ID=? group by ORDER_PRODUCT_ID", new Object[]{getString(map, "ID")});
             if (null != rowMap) {
-                unBack = getUnBack(getString(map,"QUANTITY"), rowMap.getString("QUANTITY_RECEIVED"));
+                unBack = getUnBack(getString(map, "QUANTITY"), rowMap.getString("QUANTITY_RECEIVED"));
                 if (Integer.valueOf(unBack) <= 0) {
-                   // System.out.println("采购数量小于已接收数量:" +getString(map,"QUANTITY") + "-----" + rowMap.getString("QUANTITY_RECEIVED"));
+                    // System.out.println("采购数量小于已接收数量:" +getString(map,"QUANTITY") + "-----" + rowMap.getString("QUANTITY_RECEIVED"));
                     // continue;
                 }
                 subBo.set("QUANTITY_RECEIVED", rowMap.get("QUANTITY_RECEIVED"));
@@ -274,6 +274,7 @@ public class IVTController extends BaseController {
             subBo.set("ORDER_PRODUCT_ID", map.get("ID"));
             subBo.set("NOW_COUNT", 0);
             subBo.set("CONTRACT_COST_ID", map.get("CONTRACT_COST_ID"));
+            subBo.set("STATUS", "待接收");
             subBo.setBindId(createBOProcessInstance.getId());
             list.add(subBo);
         }
@@ -340,7 +341,7 @@ public class IVTController extends BaseController {
      * @param var1
      * @return
      */
-    public String getString(Map<String, Object> map,String var1) {
+    public String getString(Map<String, Object> map, String var1) {
         Object var2;
         return (var2 = map.get(var1)) == null ? "" : TypeUtil.convert(var2, String.class);
     }

+ 11 - 5
com.awspaas.user.apps.donenow_ivt/src/com/awspaas/user/apps/donenow_ivt/event/DoWorkThread.java

@@ -35,6 +35,7 @@ public class DoWorkThread extends Thread {
         BO formData = process.getFormData();
         String boName = process.getParameterOfString("$BONAME");
 
+
         //采购接收主表保存
         if (IVTConstant.BO_EU_DNIVT_RECEIVE_MAIN.equals(boName)) {
             String bindId = process.getProcessInstance().getId();
@@ -45,11 +46,18 @@ public class DoWorkThread extends Thread {
             //循环开始
             for (BO bo : list) {
                 String BEN_RECEIVE = BigDecimalUtil.isNull(bo.getString("BEN_RECEIVE"));
+                //本次接收数量为0,则跳过
                 int intBenReceive = Integer.valueOf(BEN_RECEIVE).intValue();//本次接收数量
 
                 //本次接收数量为0,则跳过
-                if (intBenReceive == 0)
+                if (intBenReceive == 0) continue;
+
+                //多次保存,导致重复接收订单
+                if (bo.getString("STATUS").equals("待接收") == false) {
                     continue;
+                }
+                bo.set("STATUS", "已接收");
+                SDK.getBOAPI().update(IVTConstant.BO_EU_DNIVT_RECEIVE_SUB, bo);
 
                 RowMap rowMap = DBSql.getMap("select ORDER_PRODUCT_ID,sum(QUANTITY_RECEIVED) QUANTITY_RECEIVED from BO_EU_DNIVT_RECEIVE WHERE  ORDER_PRODUCT_ID=? group by ORDER_PRODUCT_ID", new Object[]{bo.getString("ORDER_PRODUCT_ID")});
                 BO receiveBo = new BO();
@@ -193,8 +201,7 @@ public class DoWorkThread extends Thread {
                                         SDK.getBOAPI().create(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT, newCostProductBo, processInstance, uc);
                                         break;
                                     }
-                                    if (intBenReceive <= 0)
-                                        break;
+                                    if (intBenReceive <= 0) break;
                                 }
 
                             }
@@ -231,8 +238,7 @@ public class DoWorkThread extends Thread {
                                         SDK.getBOAPI().create(IVTConstant.BO_EU_DNCTT_CONTRACT_COST_PRODUCT, newCostProductBo, processInstance, uc);
                                         break;
                                     }
-                                    if (outBenReceive <= 0)
-                                        break;
+                                    if (outBenReceive <= 0) break;
                                 }
                             }
                         }