Browse Source

ERP同步按站点进行对接

eganwu 1 year ago
parent
commit
57fcde6083

+ 6 - 6
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -374,7 +374,7 @@ public class aftersalesmag extends Controller {
         if (ischeck) {
             //对接erp生成erp发货单
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-                ERPDocking erpDocking = new ERPDocking();
+                ERPDocking erpDocking = new ERPDocking(siteid);
                 String result = erpDocking.createErpSareturn(rows.get(0), rowsdetail, this, sa_aftersalesmagid);
                 if (!result.equals("true")) {
                     System.out.println(result);
@@ -383,7 +383,7 @@ public class aftersalesmag extends Controller {
             }
         } else {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-                ERPDocking erpDocking = new ERPDocking();
+                ERPDocking erpDocking = new ERPDocking(siteid);
                 String result = erpDocking.recheckErpSareturn(rows.get(0).getString("billno"), true, this, sa_aftersalesmagid);
                 if (!result.equals("true")) {
                     return getErrReturnObject().setErrMsg(result).toString();
@@ -465,7 +465,7 @@ public class aftersalesmag extends Controller {
             }
         }
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking =new ERPDocking();
+            ERPDocking erpDocking =new ERPDocking(siteid);
             String billno = rows.get(0).getString("billno");
             String result =erpDocking.recheckErpSareturn(billno,false,this,sa_aftersalesmagid);
             if(!result.equals("true")){
@@ -589,7 +589,7 @@ public class aftersalesmag extends Controller {
             }
         }
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking =new ERPDocking();
+            ERPDocking erpDocking =new ERPDocking(siteid);
             String billno = rows.get(0).getString("billno");
             String result =erpDocking.recheckErpSareturn(billno,true,this,sa_aftersalesmagid);
             if(!result.equals("true")){
@@ -668,7 +668,7 @@ public class aftersalesmag extends Controller {
 
         ArrayList<String> sqlList = new ArrayList<>();
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
+            ERPDocking erpDocking = new ERPDocking(siteid);
             String billno = rows.get(0).getString("billno");
             String result = erpDocking.recheckErpSareturn(billno, true, this, sa_aftersalesmagid);
             if (!result.equals("true")) {
@@ -761,7 +761,7 @@ public class aftersalesmag extends Controller {
         ArrayList<String> sqlList = new ArrayList<>();
 
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
+            ERPDocking erpDocking = new ERPDocking(siteid);
             String billno = rows.get(0).getString("billno");
             JSONArray jsonArray = erpDocking.queryErpSareturn(billno);
             if (!jsonArray.isEmpty()) {

+ 5 - 5
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -514,7 +514,7 @@ public class dispatch extends Controller {
         }
         //对接erp生成erp发货单
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
+            ERPDocking erpDocking = new ERPDocking(siteid);
             String result = erpDocking.closeErpSainvoice(rows.get(0).getString("billno"), true, this, sa_dispatchid);
             if (!result.equals("true")) {
                 return getErrReturnObject().setErrMsg(result).toString();
@@ -601,7 +601,7 @@ public class dispatch extends Controller {
                 continue;
             }
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-                ERPDocking erpDocking = new ERPDocking();
+                ERPDocking erpDocking = new ERPDocking(siteid);
                 String result = erpDocking.closeErpSainvoiceRow(row.getString("billno"), this, row.getLong("rowno"), row.getString("itemno"), row.getLong("sa_dispatchid"));
                 if (!result.equals("true")) {
                     batchDeleteErr.addErr(row.getLong("sa_dispatch_itemsid"), result);
@@ -618,7 +618,7 @@ public class dispatch extends Controller {
         Rows closecountRows = dbConnect.runSqlQuery("select  count(1) closecount from sa_dispatch_items where sa_dispatchid=" + rows.get(0).getLong("sa_dispatchid") + " and siteid='" + siteid + "' and isclose=1");
         if (sumcountRows.get(0).getLong("sumcount") == closecountRows.get(0).getLong("closecount")) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-                ERPDocking erpDocking = new ERPDocking();
+                ERPDocking erpDocking = new ERPDocking(siteid);
                 String result = erpDocking.closeErpSainvoice(rows.get(0).getString("billno"), true, this, rows.get(0).getLong("sa_dispatchid"));
                 if (!result.equals("true")) {
                     return getErrReturnObject().setErrMsg(result).toString();
@@ -642,7 +642,7 @@ public class dispatch extends Controller {
         Rows rowsdetail = dbConnect.runSqlQuery("select t1.* from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid where t2.status='复核' and t1.siteid='CCYOSG'");
         RowsMap rowsMap = rowsdetail.toRowsMap("sa_dispatchid");
         ArrayList<String> sqlList = new ArrayList<>();
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         for (Row row : rows) {
             String sa_dispatchid = row.getString("sa_dispatchid");
             String billno = row.getString("billno");
@@ -749,7 +749,7 @@ public class dispatch extends Controller {
         }
         //对接erp生成erp发货单
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
-            ERPDocking erpDocking = new ERPDocking();
+            ERPDocking erpDocking = new ERPDocking(siteid);
             String result = erpDocking.createErpSainvoice(rows.get(0), rowsdetail, this, sa_dispatchid);
             if (!result.equals("true")) {
                 System.out.println(result);

+ 3 - 3
src/custom/restcontroller/webmanage/sale/dispatch/dispatchItems.java

@@ -122,7 +122,7 @@ public class dispatchItems extends Controller {
         BigDecimal qty = content.getBigDecimalValue("qty");
         JSONArray jsonArray = content.getJSONArray("itemnos");
         JSONArray jsonArrayfinal = new JSONArray();
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray rows = erpDocking.getErpIcinvbalBatchRows(1000, 1, jsonArray);
         for (Object object : rows) {
             JSONObject jsonObject = (JSONObject) object;
@@ -256,7 +256,7 @@ public class dispatchItems extends Controller {
         sqlFactory.addParameter("siteid", siteid);
         Rows rows = dbConnect.runSqlQuery(sqlFactory);
         RowsMap rowsMap = rows.toRowsMap("itemno");
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray jsonArray = new JSONArray();
         JSONObject object = new JSONObject();
         object.put("classname", "getIcinvbal");
@@ -420,7 +420,7 @@ public class dispatchItems extends Controller {
         }
 
         RowsMap rowsMap = rows.toRowsMap("itemno");
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray jsonArray = new JSONArray();
         if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {

+ 1 - 1
src/custom/restcontroller/webmanage/sale/invbal/invbal.java

@@ -213,7 +213,7 @@ public class invbal extends Controller {
 		RowsMap sumUnQtyRowsMap= sumUnQtyRows.toRowsMap("itemno");
 
 
-		ERPDocking erpDocking =new ERPDocking();
+		ERPDocking erpDocking =new ERPDocking(siteid);
 		JSONArray jsonArray =new JSONArray();
 		if(rows.toJsonArray("itemno").size()!=0){
 			if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {

+ 2 - 2
src/custom/restcontroller/webmanage/sale/item/Item.java

@@ -318,7 +318,7 @@ public class Item extends Controller {
         // 商品领域
         RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, itemids);
 
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray jsonArray = new JSONArray();
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
             if (!rows.toJsonArray("itemno").isEmpty()) {
@@ -399,7 +399,7 @@ public class Item extends Controller {
 //                row.put("invbal_qty",0);
 //            }
 //        }
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray jsonArray = new JSONArray();
         if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
             if (!rows.toJsonArray("itemno").isEmpty()) {

+ 2 - 2
src/custom/restcontroller/webmanage/sale/order/OrderItems.java

@@ -609,7 +609,7 @@ public class OrderItems extends Controller {
 //            }
 //        }
 
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {
                 jsonArray = erpDocking.getErpIcinvbalRows(1000, 1, rows.toJsonArray("itemno"));
@@ -814,7 +814,7 @@ public class OrderItems extends Controller {
         Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
         RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("sa_orderitemsid");
 
-        ERPDocking erpDocking = new ERPDocking();
+        ERPDocking erpDocking = new ERPDocking(siteid);
         JSONArray jsonArray = new JSONArray();
         if (rows.toJsonArray("itemno").size() != 0) {
             if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true") && siteid.equalsIgnoreCase("ccyosg")) {

+ 78 - 78
src/custom/service/AftersalesmagAutoRecheckService.java

@@ -27,100 +27,100 @@ public class AftersalesmagAutoRecheckService extends ServiceController {
 
     private static Logger logger = Logger.getLogger(AftersalesmagAutoRecheckService.class);
 
-    //    String siteid="CCYOSG";
-    String siteid = "DLB";
+    String[] siteids = {"CCYOSG", "DLB"};
 
     @Override
 
     public void serviceRun() throws YosException {
-        //
-        Properties yosProperties = properties.getYosProperties();
-        if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
-            Rows rows = dbConnect.runSqlQuery("select * from sa_aftersalesmag where status='审核' and type='换货单' and siteid='"+siteid+"'");
-            RowsMap rowsMap1 = rows.toRowsMap("billno");
-            ArrayList<String> sqlList = new ArrayList<>();
-            ERPDocking erpDocking = new ERPDocking();
-            JSONArray ErpSareturns = erpDocking.queryErpSareturns(10000, 1, new JSONArray(), "", "", "换货", "", true);
-            if (!ErpSareturns.isEmpty()) {
-                for (Object ErpSareturn : ErpSareturns) {
-                    JSONObject erpSareturn = (JSONObject) ErpSareturn;
-                    String billno = erpSareturn.getString("freturnnum");
-                    long sa_aftersalesmagid = 0;
-                    if (rowsMap1.containsKey(billno)) {
-                        if (rowsMap1.get(billno).isNotEmpty()) {
-                            sa_aftersalesmagid = rowsMap1.get(billno).get(0).getLong("sa_aftersalesmagid");
+        for (String siteid : siteids) {
+            Properties yosProperties = properties.getYosProperties();
+            if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
+                Rows rows = dbConnect.runSqlQuery("select * from sa_aftersalesmag where status='审核' and type='换货单' and siteid='" + siteid + "'");
+                RowsMap rowsMap1 = rows.toRowsMap("billno");
+                ArrayList<String> sqlList = new ArrayList<>();
+                ERPDocking erpDocking = new ERPDocking(siteid);
+                JSONArray ErpSareturns = erpDocking.queryErpSareturns(10000, 1, new JSONArray(), "", "", "换货", "", true);
+                if (!ErpSareturns.isEmpty()) {
+                    for (Object ErpSareturn : ErpSareturns) {
+                        JSONObject erpSareturn = (JSONObject) ErpSareturn;
+                        String billno = erpSareturn.getString("freturnnum");
+                        long sa_aftersalesmagid = 0;
+                        if (rowsMap1.containsKey(billno)) {
+                            if (rowsMap1.get(billno).isNotEmpty()) {
+                                sa_aftersalesmagid = rowsMap1.get(billno).get(0).getLong("sa_aftersalesmagid");
+                            } else {
+                                logger.info("退货单【" + billno + "】不存在:");
+                                continue;
+                            }
                         } else {
                             logger.info("退货单【" + billno + "】不存在:");
                             continue;
                         }
-                    } else {
-                        logger.info("退货单【" + billno + "】不存在:");
-                        continue;
-                    }
-                    JSONObject object = new JSONObject();
-                    JSONObject objectdetail = new JSONObject();
-                    object.put("access_token", "basicDrp");
-                    object.put("classname", "Sareturn");
-                    object.put("method", "closeSareturn");
-                    objectdetail.put("freturnnum", billno);
-                    objectdetail.put("isManual", false);
-                    object.put("content", objectdetail);
+                        JSONObject object = new JSONObject();
+                        JSONObject objectdetail = new JSONObject();
+                        object.put("access_token", "basicDrp");
+                        object.put("classname", "Sareturn");
+                        object.put("method", "closeSareturn");
+                        objectdetail.put("freturnnum", billno);
+                        objectdetail.put("isManual", false);
+                        object.put("content", objectdetail);
 
-                    HashMap<String, String> map = new HashMap<>();
-                    map.put("content-Type", "application/json");
-                    String result = new WebRequest().doPost(object.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
+                        HashMap<String, String> map = new HashMap<>();
+                        map.put("content-Type", "application/json");
+                        String result = new WebRequest().doPost(object.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
 
-                    JSONObject resultobject = JSONObject.parseObject(result);
-                    try {
-                        Rows erpupdatelogRows = dbConnect.runSqlQuery(
-                                "select * from sys_erpupdatelog where ownertable='sa_aftersalesmag' and type='复核erp退/换货单' and ownerid=" + sa_aftersalesmagid);
-                        SQLFactory sqlFactory;
-                        if (!erpupdatelogRows.isEmpty()) {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
-                            sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
-                        } else {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
-                            sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
-                        }
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlFactory.addParameter("userid", 1);
-                        sqlFactory.addParameter("username", "admin");
-                        sqlFactory.addParameter("ownerid", sa_aftersalesmagid);
-                        sqlFactory.addParameter("ownertable", "sa_aftersalesmag");
-                        sqlFactory.addParameter("type", "复核erp退/换货单");
-                        sqlFactory.addParameter("request", object.toString());
-                        sqlFactory.addParameter("response", resultobject.toJSONString());
+                        JSONObject resultobject = JSONObject.parseObject(result);
+                        try {
+                            Rows erpupdatelogRows = dbConnect.runSqlQuery(
+                                    "select * from sys_erpupdatelog where ownertable='sa_aftersalesmag' and type='复核erp退/换货单' and ownerid=" + sa_aftersalesmagid);
+                            SQLFactory sqlFactory;
+                            if (!erpupdatelogRows.isEmpty()) {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
+                                sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
+                            } else {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
+                                sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
+                            }
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("userid", 1);
+                            sqlFactory.addParameter("username", "admin");
+                            sqlFactory.addParameter("ownerid", sa_aftersalesmagid);
+                            sqlFactory.addParameter("ownertable", "sa_aftersalesmag");
+                            sqlFactory.addParameter("type", "复核erp退/换货单");
+                            sqlFactory.addParameter("request", object.toString());
+                            sqlFactory.addParameter("response", resultobject.toJSONString());
 
-                        if ("0".equals(resultobject.getString("errcode"))) {
-                            sqlFactory.addParameter("erpbillno", billno);
-                            sqlFactory.addParameter("errmsg", "");
+                            if ("0".equals(resultobject.getString("errcode"))) {
+                                sqlFactory.addParameter("erpbillno", billno);
+                                sqlFactory.addParameter("errmsg", "");
+                            } else {
+                                sqlFactory.addParameter("erpbillno", "");
+                                sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
+                            }
+                            sqlFactory.addParameter("status", resultobject.getString("errcode"));
+                            sqlList.add(sqlFactory.getSQL());
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                        }
+                        if (resultobject.getString("errcode").equals("0")) {
+                            sqlList.add("update sa_aftersalesmag set status='复核' where sa_aftersalesmagid='" + sa_aftersalesmagid + "' and siteid='" + siteid + "'");
+                            SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
+                            sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
+                            sqlFactory.addParameter("ownertable", "sa_aftersalesmag");
+                            sqlFactory.addParameter("ownerid", sa_aftersalesmagid);
+                            sqlFactory.addParameter("action", "自动复核");
+                            sqlFactory.addParameter("remarks", "换货单自动复核成功");
+                            sqlFactory.addParameter("actionuserid", "1");
+                            sqlFactory.addParameter("actionby", "admin");
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlList.add(sqlFactory.getSQL());
                         } else {
-                            sqlFactory.addParameter("erpbillno", "");
-                            sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
+                            logger.info("换货单自动复核错误:" + resultobject.getString("errmsg"));
                         }
-                        sqlFactory.addParameter("status", resultobject.getString("errcode"));
-                        sqlList.add(sqlFactory.getSQL());
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
-                    if (resultobject.getString("errcode").equals("0")) {
-                        sqlList.add("update sa_aftersalesmag set status='复核' where sa_aftersalesmagid='" + sa_aftersalesmagid + "' and siteid='"+siteid+"'");
-                        SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
-                        sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                        sqlFactory.addParameter("ownertable", "sa_aftersalesmag");
-                        sqlFactory.addParameter("ownerid", sa_aftersalesmagid);
-                        sqlFactory.addParameter("action", "自动复核");
-                        sqlFactory.addParameter("remarks", "换货单自动复核成功");
-                        sqlFactory.addParameter("actionuserid", "1");
-                        sqlFactory.addParameter("actionby", "admin");
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlList.add(sqlFactory.getSQL());
-                    } else {
-                        logger.info("换货单自动复核错误:" + resultobject.getString("errmsg"));
                     }
                 }
+                dbConnect.runSqlUpdate(sqlList);
             }
-            dbConnect.runSqlUpdate(sqlList);
         }
     }
 

+ 152 - 148
src/custom/service/AutoDockItemService.java

@@ -22,160 +22,164 @@ import java.util.Calendar;
 import java.util.Date;
 
 public class AutoDockItemService extends ServiceController {
+
+    String[] siteids = {"CCYOSG", "DLB"};
+
     @Override
     public void serviceRun() throws YosException {
-        ArrayList<String> sqlList = new ArrayList<>();
-        //    String siteid="CCYOSG";
-        String siteid = "DLB";
-        Rows rows = new DBConnect().runSqlQuery("select * from sys_parameter where paramname='AutoDockItemServiceTime'");
-        Date date =new Date();
-        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        String AutoDockItemServiceTime =simpleDateFormat.format(date);
-        if(!rows.isEmpty()){
-            AutoDockItemServiceTime =rows.get(0).getString("paramvalue");
-            dbConnect.runSqlUpdate("delete from sys_parameter where paramname='AutoDockItemServiceTime'");
-        }else{
-            Parameter.create(new BaseClass(),"AutoDockItemServiceTime",simpleDateFormat.format(date),"");
-        }
-        Rows itemRows = dbConnect.runSqlQuery("SELECT itemid,itemno from  plm_item WHERE siteid = '" + siteid + "' AND status = '新建' ");
-        Rows itemRowsAll = dbConnect.runSqlQuery("SELECT itemid,itemno,status from  plm_item WHERE siteid = '" + siteid + "'");
-        //单位
-        Rows unitRows = dbConnect.runSqlQuery("SELECT unitid,unitname from  plm_unit WHERE siteid = '" + siteid + "'");
-        RowsMap unitRowsMap = unitRows.toRowsMap("unitname");
-
-        RowsMap itemRowsMap = itemRows.toRowsMap("itemno");
-        RowsMap itemRowsMapAll = itemRowsAll.toRowsMap("itemno");
-        ERPDocking erpDocking =new ERPDocking();
-
-        JSONArray jsonArray = erpDocking.getErpItemRows(AutoDockItemServiceTime, 100000, 1);
-        if(!jsonArray.isEmpty()){
-            for (Object object:jsonArray) {
-                JSONObject jsonObject =(JSONObject)object;
-                if(!itemRowsMapAll.containsKey(jsonObject.getString("fitemno"))){
-                    long itemid = createTableID("plm_item");
-                    SQLFactory sqlFactory = new SQLFactory(new Item(jsonObject), "货品档案新增");
-
-                    sqlFactory.addParameter("siteid", siteid);
-                    sqlFactory.addParameter("itemid", itemid);
-                    sqlFactory.addParameter("username", "admin");
-                    sqlFactory.addParameter("userid", 1);
-                    sqlFactory.addParameter("itemno", jsonObject.getString("fitemno"));
-                    sqlFactory.addParameter("marketingcategory", "");
-                    if(unitRowsMap.containsKey(jsonObject.getString("funit"))){
-                        sqlFactory.addParameter("unitid", unitRowsMap.get(jsonObject.getString("funit")).get(0).getLong("unitid"));
-                    }else {
-                        sqlFactory.addParameter("unitid", 0);
+        for (String siteid : siteids) {
+
+            ArrayList<String> sqlList = new ArrayList<>();
+            Rows rows = new DBConnect().runSqlQuery("select * from sys_parameter where paramname='AutoDockItemServiceTime'");
+            Date date = new Date();
+            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            String AutoDockItemServiceTime = simpleDateFormat.format(date);
+            if (!rows.isEmpty()) {
+                AutoDockItemServiceTime = rows.get(0).getString("paramvalue");
+                dbConnect.runSqlUpdate("delete from sys_parameter where paramname='AutoDockItemServiceTime'");
+            } else {
+                Parameter.create(new BaseClass(), "AutoDockItemServiceTime", simpleDateFormat.format(date), "");
+            }
+            Rows itemRows = dbConnect.runSqlQuery("SELECT itemid,itemno from  plm_item WHERE siteid = '" + siteid + "' AND status = '新建' ");
+            Rows itemRowsAll = dbConnect.runSqlQuery("SELECT itemid,itemno,status from  plm_item WHERE siteid = '" + siteid + "'");
+            //单位
+            Rows unitRows = dbConnect.runSqlQuery("SELECT unitid,unitname from  plm_unit WHERE siteid = '" + siteid + "'");
+            RowsMap unitRowsMap = unitRows.toRowsMap("unitname");
+
+            RowsMap itemRowsMap = itemRows.toRowsMap("itemno");
+            RowsMap itemRowsMapAll = itemRowsAll.toRowsMap("itemno");
+            ERPDocking erpDocking = new ERPDocking(siteid);
+
+            JSONArray jsonArray = erpDocking.getErpItemRows(AutoDockItemServiceTime, 100000, 1);
+            if (!jsonArray.isEmpty()) {
+                for (Object object : jsonArray) {
+                    JSONObject jsonObject = (JSONObject) object;
+                    if (!itemRowsMapAll.containsKey(jsonObject.getString("fitemno"))) {
+                        long itemid = createTableID("plm_item");
+                        SQLFactory sqlFactory = new SQLFactory(new Item(jsonObject), "货品档案新增");
+
+                        sqlFactory.addParameter("siteid", siteid);
+                        sqlFactory.addParameter("itemid", itemid);
+                        sqlFactory.addParameter("username", "admin");
+                        sqlFactory.addParameter("userid", 1);
+                        sqlFactory.addParameter("itemno", jsonObject.getString("fitemno"));
+                        sqlFactory.addParameter("marketingcategory", "");
+                        if (unitRowsMap.containsKey(jsonObject.getString("funit"))) {
+                            sqlFactory.addParameter("unitid", unitRowsMap.get(jsonObject.getString("funit")).get(0).getLong("unitid"));
+                        } else {
+                            sqlFactory.addParameter("unitid", 0);
+                        }
+                        sqlFactory.addParameter("isauxunit", 0);
+                        sqlFactory.addParameter("unitgroupid", "null");
+
+                        sqlFactory.addParameter("itemname", jsonObject.getString("fitemname"));
+                        sqlFactory.addParameter("isonsale", 0);
+                        sqlFactory.addParameter("model", jsonObject.getString("fmodel"));
+                        sqlFactory.addParameter("spec", jsonObject.getString("spec"));
+                        // 订单起订量
+                        sqlFactory.addParameter("orderminqty", 1);
+                        // 订单增量
+                        sqlFactory.addParameter("orderaddqty", 1);
+                        // 订单起订量控制单位(0:主单位;1:辅助单位)
+                        sqlFactory.addParameter("orderminqty_auxunit", 0);
+                        // 订单增量控制单位(0:主单位;1:辅助单位)
+                        sqlFactory.addParameter("orderaddqty_auxunit", 0);
+                        // 说明
+                        sqlFactory.addParameter("remarks", "");
+                        // 商品条形码
+                        sqlFactory.addParameter("barcode", "");
+                        // 是否单品管理
+                        sqlFactory.addParameter("skucontrol", 0);
+                        // 是否批次管理
+                        sqlFactory.addParameter("batchcontrol", jsonObject.getBooleanValue("fisbatch"));
+                        // 毛重(g)
+                        sqlFactory.addParameter("grossweight", 0);
+                        // 净重(g)
+                        sqlFactory.addParameter("weight", 0);
+                        // 高度(mm)
+                        sqlFactory.addParameter("height", 0);
+                        // 宽度(mm)
+                        sqlFactory.addParameter("width", 0);
+                        // 长度(mm)
+                        sqlFactory.addParameter("length", 0);
+                        // 交期
+                        sqlFactory.addParameter("delivery", 1);
+                        // 牌价
+                        sqlFactory.addParameter("marketprice", 0);
+                        // 是否工具
+                        sqlFactory.addParameter("istool", 0);
+                        // 产品标准
+                        sqlFactory.addParameter("standards", "");
+                        // 库存缺货标准
+                        sqlFactory.addParameter("stockstatus2", 1);
+                        // 库存充足标准
+                        sqlFactory.addParameter("stockstatus1", 1);
+                        // 保修期(年)
+                        sqlFactory.addParameter("warrantyday", 1);
+                        // 是否营销物料
+                        sqlFactory.addParameter("iswuliao", 1);
+                        // 是否服务物料
+                        sqlFactory.addParameter("isservice", 0);
+
+                        sqlFactory.addParameter("materialschemeid", 0);
+                        sqlFactory.addParameter("colorschemeid", 0);
+                        sqlFactory.addParameter("cheekschemeid", 0);
+
+
+                        sqlFactory.addParameter("color", jsonObject.getStringValue("fcolor"));
+                        sqlFactory.addParameter("cheek", jsonObject.getStringValue("fsizedescription"));
+                        sqlFactory.addParameter("delistingstatus", "");
+
+                        sqlFactory.addParameter("ismodule", 0);
+                        sqlFactory.addParameter("packageqty", (StringUtils.isBlank(jsonObject.getStringValue("fpackqty")) ? "0" : jsonObject.getStringValue("fpackqty")));
+                        sqlFactory.addParameter("iswoodproducts", 0);
+
+                        sqlFactory.addParameter("sa_customschemeid", 0);
+                        sqlFactory.addParameter("financeclasstype", jsonObject.getStringValue("fdescription"));
+                        sqlFactory.addParameter("stockno", jsonObject.getStringValue("fstockno"));
+                        sqlFactory.addParameter("volume", jsonObject.getBigDecimalValue("fvolume"));
+                        sqlFactory.addParameter("pricingmetod", "1");
+
+
+                        sqlList.add(sqlFactory.getSQL());
+                        // 货品档案扩展属性字段表
+
+                        sqlFactory = new SQLFactory(new Item(jsonObject), "货品档案-扩展新增");
+                        sqlFactory.addParameter("siteid", siteid);
+                        sqlFactory.addParameter("userid", 1);
+                        sqlFactory.addParameter("username", "admin");
+                        sqlFactory.addParameter("plm_itemextendid", createTableID("plm_itemextend"));
+                        sqlFactory.addParameter("itemid", itemid);
+                        sqlFactory.addParameter("material", jsonObject.getString("fmaterialdes"));
+                        sqlFactory.addParameter("pressure", "");
+                        sqlFactory.addParameter("caliber", "");
+                        sqlFactory.addParameter("butterflyplatedrive", "");
+                        sqlFactory.addParameter("connection", "");
+                        sqlFactory.addParameter("valveplatematerial", "");
+                        sqlFactory.addParameter("bodymaterial", "");
+                        sqlFactory.addParameter("actuatortype", "");
+                        sqlFactory.addParameter("actuatorbrand", "");
+                        sqlFactory.addParameter("isbutterfly", 0);
+                        sqlFactory.addParameter("erpitemno", jsonObject.getString("fitemno"));
+                        sqlFactory.addParameter("erpitemname", jsonObject.getString("fitemname"));
+                        sqlFactory.addParameter("specalnote", "");
+                        sqlFactory.addParameter("prodline", "");
+                        sqlFactory.addParameter("device", "");
+
+
+                        sqlList.add(sqlFactory.getSQL());
+
+                    } else {
+                        sqlList.add("update plm_item set itemname='" + jsonObject.getString("fitemname") + "',volume='" + jsonObject.getStringValue("fvolume") + "',packageqty='" + (StringUtils.isBlank(jsonObject.getStringValue("fpackqty")) ? "0" : jsonObject.getStringValue("fpackqty")) + "' where itemid=" + itemRowsMapAll.get(jsonObject.getString("fitemno")).get(0).getLong("itemid"));
+                        System.out.println("update plm_item set itemname='" + jsonObject.getString("fitemname") + "',volume='" + jsonObject.getStringValue("fvolume") + "',packageqty='" + (StringUtils.isBlank(jsonObject.getStringValue("fpackqty")) ? "0" : jsonObject.getStringValue("fpackqty")) + "' where itemid=" + itemRowsMapAll.get(jsonObject.getString("fitemno")).get(0).getLong("itemid"));
                     }
-                    sqlFactory.addParameter("isauxunit", 0);
-                    sqlFactory.addParameter("unitgroupid","null");
-
-                    sqlFactory.addParameter("itemname", jsonObject.getString("fitemname"));
-                    sqlFactory.addParameter("isonsale", 0);
-                    sqlFactory.addParameter("model", jsonObject.getString("fmodel"));
-                    sqlFactory.addParameter("spec", jsonObject.getString("spec"));
-                    // 订单起订量
-                    sqlFactory.addParameter("orderminqty", 1);
-                    // 订单增量
-                    sqlFactory.addParameter("orderaddqty", 1);
-                    // 订单起订量控制单位(0:主单位;1:辅助单位)
-                    sqlFactory.addParameter("orderminqty_auxunit", 0);
-                    // 订单增量控制单位(0:主单位;1:辅助单位)
-                    sqlFactory.addParameter("orderaddqty_auxunit", 0);
-                    // 说明
-                    sqlFactory.addParameter("remarks", "");
-                    // 商品条形码
-                    sqlFactory.addParameter("barcode", "");
-                    // 是否单品管理
-                    sqlFactory.addParameter("skucontrol",0);
-                    // 是否批次管理
-                    sqlFactory.addParameter("batchcontrol", jsonObject.getBooleanValue("fisbatch"));
-                    // 毛重(g)
-                    sqlFactory.addParameter("grossweight", 0);
-                    // 净重(g)
-                    sqlFactory.addParameter("weight", 0);
-                    // 高度(mm)
-                    sqlFactory.addParameter("height", 0);
-                    // 宽度(mm)
-                    sqlFactory.addParameter("width", 0);
-                    // 长度(mm)
-                    sqlFactory.addParameter("length", 0);
-                    // 交期
-                    sqlFactory.addParameter("delivery", 1);
-                    // 牌价
-                    sqlFactory.addParameter("marketprice", 0);
-                    // 是否工具
-                    sqlFactory.addParameter("istool", 0);
-                    // 产品标准
-                    sqlFactory.addParameter("standards","");
-                    // 库存缺货标准
-                    sqlFactory.addParameter("stockstatus2", 1);
-                    // 库存充足标准
-                    sqlFactory.addParameter("stockstatus1", 1);
-                    // 保修期(年)
-                    sqlFactory.addParameter("warrantyday", 1);
-                    // 是否营销物料
-                    sqlFactory.addParameter("iswuliao",1);
-                    // 是否服务物料
-                    sqlFactory.addParameter("isservice", 0);
-
-                    sqlFactory.addParameter("materialschemeid", 0);
-                    sqlFactory.addParameter("colorschemeid", 0);
-                    sqlFactory.addParameter("cheekschemeid", 0);
-
-
-                    sqlFactory.addParameter("color", jsonObject.getStringValue("fcolor"));
-                    sqlFactory.addParameter("cheek", jsonObject.getStringValue("fsizedescription"));
-                    sqlFactory.addParameter("delistingstatus","");
-
-                    sqlFactory.addParameter("ismodule", 0);
-                    sqlFactory.addParameter("packageqty", (StringUtils.isBlank(jsonObject.getStringValue("fpackqty"))?"0":jsonObject.getStringValue("fpackqty")));
-                    sqlFactory.addParameter("iswoodproducts", 0);
-
-                    sqlFactory.addParameter("sa_customschemeid", 0);
-                    sqlFactory.addParameter("financeclasstype", jsonObject.getStringValue("fdescription"));
-                    sqlFactory.addParameter("stockno", jsonObject.getStringValue("fstockno"));
-                    sqlFactory.addParameter("volume", jsonObject.getBigDecimalValue("fvolume"));
-                    sqlFactory.addParameter("pricingmetod", "1");
-
-
-                    sqlList.add(sqlFactory.getSQL());
-                    // 货品档案扩展属性字段表
-
-                    sqlFactory = new SQLFactory(new Item(jsonObject), "货品档案-扩展新增");
-                    sqlFactory.addParameter("siteid", siteid);
-                    sqlFactory.addParameter("userid", 1);
-                    sqlFactory.addParameter("username", "admin");
-                    sqlFactory.addParameter("plm_itemextendid", createTableID("plm_itemextend"));
-                    sqlFactory.addParameter("itemid", itemid);
-                    sqlFactory.addParameter("material", jsonObject.getString("fmaterialdes"));
-                    sqlFactory.addParameter("pressure", "");
-                    sqlFactory.addParameter("caliber", "");
-                    sqlFactory.addParameter("butterflyplatedrive", "");
-                    sqlFactory.addParameter("connection", "");
-                    sqlFactory.addParameter("valveplatematerial", "");
-                    sqlFactory.addParameter("bodymaterial", "");
-                    sqlFactory.addParameter("actuatortype", "");
-                    sqlFactory.addParameter("actuatorbrand", "");
-                    sqlFactory.addParameter("isbutterfly", 0);
-                    sqlFactory.addParameter("erpitemno", jsonObject.getString("fitemno"));
-                    sqlFactory.addParameter("erpitemname", jsonObject.getString("fitemname"));
-                    sqlFactory.addParameter("specalnote","");
-                    sqlFactory.addParameter("prodline", "");
-                    sqlFactory.addParameter("device", "");
-
-
-                    sqlList.add(sqlFactory.getSQL());
-
-                }else{
-                    sqlList.add("update plm_item set itemname='"+jsonObject.getString("fitemname")+"',volume='"+ jsonObject.getStringValue("fvolume")+"',packageqty='"+ (StringUtils.isBlank(jsonObject.getStringValue("fpackqty"))?"0":jsonObject.getStringValue("fpackqty"))+"' where itemid="+itemRowsMapAll.get(jsonObject.getString("fitemno")).get(0).getLong("itemid"));
-                    System.out.println("update plm_item set itemname='"+jsonObject.getString("fitemname")+"',volume='"+ jsonObject.getStringValue("fvolume")+"',packageqty='"+ (StringUtils.isBlank(jsonObject.getStringValue("fpackqty"))?"0":jsonObject.getStringValue("fpackqty"))+"' where itemid="+itemRowsMapAll.get(jsonObject.getString("fitemno")).get(0).getLong("itemid"));
-                }
 
+                }
             }
+            System.err.println(sqlList);
+            dbConnect.runSqlUpdate(sqlList);
+            Parameter.create(new BaseClass(), "AutoDockItemServiceTime", simpleDateFormat.format(new Date()), "");
         }
-        System.err.println(sqlList);
-        dbConnect.runSqlUpdate(sqlList);
-        Parameter.create(new BaseClass(),"AutoDockItemServiceTime",simpleDateFormat.format(new Date()),"");
     }
 
 }

+ 202 - 201
src/custom/service/DispatchAutoCloseService.java

@@ -28,243 +28,244 @@ import java.util.Properties;
 public class DispatchAutoCloseService extends ServiceController {
 
     private static Logger logger = Logger.getLogger(DispatchAutoCloseService.class);
-    //    String siteid="CCYOSG";
-    String siteid = "DLB";
+    String[] siteids = {"CCYOSG", "DLB"};
+
     @Override
 
     public void serviceRun() throws YosException {
-        //
-        Properties yosProperties = properties.getYosProperties();
-        if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
-            Rows rows = dbConnect.runSqlQuery("select * from sa_dispatch where status='复核' and siteid='"+siteid+"'");
-            Rows rowsdetail = dbConnect.runSqlQuery("select t1.* from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid where t2.status='复核' and t1.siteid='"+siteid+"'");
-            RowsMap rowsMap = rowsdetail.toRowsMap("sa_dispatchid");
-            RowsMap rowsMap1 = rowsdetail.toRowsMap("billno");
-            ArrayList<String> sqlList = new ArrayList<>();
-            ERPDocking erpDocking = new ERPDocking();
-            JSONArray ErpSainvoices = erpDocking.queryErpSainvoices(10000, 1, new JSONArray(), "", "", "", false, false, true);
-            JSONArray dispatchids = new JSONArray();
-            JSONArray unclosedispatchids = new JSONArray();
-            if (!ErpSainvoices.isEmpty()) {
-                for (Object ErpSainvoice : ErpSainvoices) {
-                    JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
-                    String billno = erpSainvoice.getString("finvonum");
-                    long sa_dispatchid = 0;
-                    if (rowsMap1.containsKey(billno)) {
-                        if (rowsMap1.get(billno).isNotEmpty()) {
-                            sa_dispatchid = rowsMap1.get(billno).get(0).getLong("sa_dispatchid");
-                            dispatchids.add(sa_dispatchid);
+        for (String siteid : siteids) {
+            Properties yosProperties = properties.getYosProperties();
+            if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
+                Rows rows = dbConnect.runSqlQuery("select * from sa_dispatch where status='复核' and siteid='" + siteid + "'");
+                Rows rowsdetail = dbConnect.runSqlQuery("select t1.* from sa_dispatch_items t1 inner join sa_dispatch t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid where t2.status='复核' and t1.siteid='" + siteid + "'");
+                RowsMap rowsMap = rowsdetail.toRowsMap("sa_dispatchid");
+                RowsMap rowsMap1 = rowsdetail.toRowsMap("billno");
+                ArrayList<String> sqlList = new ArrayList<>();
+                ERPDocking erpDocking = new ERPDocking(siteid);
+                JSONArray ErpSainvoices = erpDocking.queryErpSainvoices(10000, 1, new JSONArray(), "", "", "", false, false, true);
+                JSONArray dispatchids = new JSONArray();
+                JSONArray unclosedispatchids = new JSONArray();
+                if (!ErpSainvoices.isEmpty()) {
+                    for (Object ErpSainvoice : ErpSainvoices) {
+                        JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
+                        String billno = erpSainvoice.getString("finvonum");
+                        long sa_dispatchid = 0;
+                        if (rowsMap1.containsKey(billno)) {
+                            if (rowsMap1.get(billno).isNotEmpty()) {
+                                sa_dispatchid = rowsMap1.get(billno).get(0).getLong("sa_dispatchid");
+                                dispatchids.add(sa_dispatchid);
+                            } else {
+                                logger.info("发货单【" + billno + "】不存在:");
+                                continue;
+                            }
                         } else {
                             logger.info("发货单【" + billno + "】不存在:");
                             continue;
                         }
-                    } else {
-                        logger.info("发货单【" + billno + "】不存在:");
-                        continue;
-                    }
-                    JSONArray jsonArray = erpDocking.queryErpSainvoice(billno);
+                        JSONArray jsonArray = erpDocking.queryErpSainvoice(billno);
 
-                    JSONObject object = new JSONObject();
-                    JSONObject objectdetail = new JSONObject();
-                    object.put("access_token", "basicDrp");
-                    object.put("classname", "Sainvoice");
-                    object.put("method", "closeSainvoice");
-                    objectdetail.put("finvonum", billno);
-                    objectdetail.put("isManual", false);
-                    object.put("content", objectdetail);
+                        JSONObject object = new JSONObject();
+                        JSONObject objectdetail = new JSONObject();
+                        object.put("access_token", "basicDrp");
+                        object.put("classname", "Sainvoice");
+                        object.put("method", "closeSainvoice");
+                        objectdetail.put("finvonum", billno);
+                        objectdetail.put("isManual", false);
+                        object.put("content", objectdetail);
 
-                    HashMap<String, String> map = new HashMap<>();
-                    map.put("content-Type", "application/json");
-                    String result = new WebRequest().doPost(object.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
-                    JSONObject resultobject = JSONObject.parseObject(result);
+                        HashMap<String, String> map = new HashMap<>();
+                        map.put("content-Type", "application/json");
+                        String result = new WebRequest().doPost(object.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
+                        JSONObject resultobject = JSONObject.parseObject(result);
 
-                    try {
-                        Rows erpupdatelogRows = dbConnect.runSqlQuery(
-                                "select * from sys_erpupdatelog where ownertable='sa_dispatch' and type='关闭发货单' and ownerid=" + sa_dispatchid);
-                        SQLFactory sqlFactory;
-                        if (!erpupdatelogRows.isEmpty()) {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
-                            sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
-                        } else {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
-                            sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
-                        }
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlFactory.addParameter("userid", 1);
-                        sqlFactory.addParameter("username", "admin");
-                        sqlFactory.addParameter("ownerid", sa_dispatchid);
-                        sqlFactory.addParameter("ownertable", "sa_dispatch");
-                        sqlFactory.addParameter("type", "关闭发货单");
-                        sqlFactory.addParameter("request", object.toString());
-                        sqlFactory.addParameter("response", resultobject.toJSONString());
-
-                        if ("0".equals(resultobject.getString("errcode"))) {
-                            sqlFactory.addParameter("erpbillno", billno);
-                            sqlFactory.addParameter("errmsg", "");
-                        } else {
-                            sqlFactory.addParameter("erpbillno", "");
-                            sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
-                        }
-                        sqlFactory.addParameter("status", resultobject.getString("errcode"));
-                        sqlList.add(sqlFactory.getSQL());
-                    } catch (Exception e) {
-                        e.printStackTrace();
-                    }
+                        try {
+                            Rows erpupdatelogRows = dbConnect.runSqlQuery(
+                                    "select * from sys_erpupdatelog where ownertable='sa_dispatch' and type='关闭发货单' and ownerid=" + sa_dispatchid);
+                            SQLFactory sqlFactory;
+                            if (!erpupdatelogRows.isEmpty()) {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
+                                sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
+                            } else {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
+                                sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
+                            }
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("userid", 1);
+                            sqlFactory.addParameter("username", "admin");
+                            sqlFactory.addParameter("ownerid", sa_dispatchid);
+                            sqlFactory.addParameter("ownertable", "sa_dispatch");
+                            sqlFactory.addParameter("type", "关闭发货单");
+                            sqlFactory.addParameter("request", object.toString());
+                            sqlFactory.addParameter("response", resultobject.toJSONString());
 
-                    if (resultobject.getString("errcode").equals("0")) {
-                        sqlList.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + sa_dispatchid + "' and siteid='"+siteid+"'");
-                        SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
-                        sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                        sqlFactory.addParameter("ownertable", "sa_dispatch");
-                        sqlFactory.addParameter("ownerid", sa_dispatchid);
-                        sqlFactory.addParameter("action", "自动关闭");
-                        sqlFactory.addParameter("remarks", "发货单自动关闭成功");
-                        sqlFactory.addParameter("actionuserid", "1");
-                        sqlFactory.addParameter("actionby", "admin");
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlList.add(sqlFactory.getSQL());
-                    } else {
-                        unclosedispatchids.add(sa_dispatchid);
-                        logger.info("发货单自动关闭错误:" + resultobject.getString("errmsg") + "发货单id:" + sa_dispatchid);
-                    }
-                    if (!jsonArray.isEmpty()) {
-                        for (Object object1 : jsonArray) {
-                            JSONObject jsonObject = (JSONObject) object1;
-                            sqlList.add("update sa_dispatch_items set outwarehousedate=current_time,outwarehouseqty=" + jsonObject.getBigDecimalValue("fqty1") + " where rowno =" + jsonObject.getIntValue("frownum") + " and sa_dispatchid='" + sa_dispatchid + "' and siteid='"+siteid+"'");
+                            if ("0".equals(resultobject.getString("errcode"))) {
+                                sqlFactory.addParameter("erpbillno", billno);
+                                sqlFactory.addParameter("errmsg", "");
+                            } else {
+                                sqlFactory.addParameter("erpbillno", "");
+                                sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
+                            }
+                            sqlFactory.addParameter("status", resultobject.getString("errcode"));
+                            sqlList.add(sqlFactory.getSQL());
+                        } catch (Exception e) {
+                            e.printStackTrace();
                         }
-                    }
-
-
-                }
-            }
-            dbConnect.runSqlUpdate(sqlList);
-
 
-            //判断当前单据是否已实际发完货,如果发完,则生把订单变为关闭状态
-            Rows orderRows = new Rows();
-            if (dispatchids.size() > 0) {
-                String sql = "select distinct t1.sa_orderid from sa_orderitems t1 inner join sa_dispatch_items t2 on t1.siteid=t2.siteid and t1.sa_orderitemsid=t2.sa_orderitemsid where t1.siteid='"+siteid+"' and t2.sa_dispatchid in" + dispatchids.toJSONString();
-                sql = sql.replace("[", "(").replace("]", ")");
-                logger.info("sql:" + sql);
-                orderRows = dbConnect.runSqlQuery(sql);
-            }
-            //总数量
-            Rows totalRows = dbConnect.runSqlQuery("select count(1) count,sa_orderid from sa_orderitems where siteid='"+siteid+"' group by sa_orderid");
-            RowsMap totalRowsMap = totalRows.toRowsMap("sa_orderid");
-            //已发完数量
-            Rows deliRows = dbConnect.runSqlQuery("select count(1) count,sa_orderid from sa_orderitems t1 inner join (SELECT  t1.sa_orderitemsid,t1.siteid,SUM(ifnull(t1.outwarehouseqty,0)) outwarehouseqty FROM sa_dispatch_items t1 WHERE t1.siteid='"+siteid+"' group by t1.sa_orderitemsid,t1.siteid) t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where t1.qty=t2.outwarehouseqty and t1.siteid='"+siteid+"' group by sa_orderid");
-            RowsMap deliRowsMap = deliRows.toRowsMap("sa_orderid");
-            if (orderRows.size() > 0) {
-                for (Row row : orderRows) {
-                    logger.info("订单id:" + row.getString("sa_orderid"));
-                    if (totalRowsMap.containsKey(row.getString("sa_orderid")) && deliRowsMap.containsKey(row.getString("sa_orderid"))) {
-                        if (totalRowsMap.get(row.getString("sa_orderid")).get(0).getLong("count") == deliRowsMap.get(row.getString("sa_orderid")).get(0).getLong("count")) {
-                            logger.info("订单关闭:update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid=" + row.getLong("sa_orderid") + " and siteid='"+siteid+"'");
-                            dbConnect.runSqlUpdate("update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid=" + row.getLong("sa_orderid") + " and siteid='"+siteid+"'");
+                        if (resultobject.getString("errcode").equals("0")) {
+                            sqlList.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + sa_dispatchid + "' and siteid='" + siteid + "'");
                             SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
                             sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                            sqlFactory.addParameter("ownertable", "sa_order");
-                            sqlFactory.addParameter("ownerid", row.getLong("sa_orderid"));
+                            sqlFactory.addParameter("ownertable", "sa_dispatch");
+                            sqlFactory.addParameter("ownerid", sa_dispatchid);
                             sqlFactory.addParameter("action", "自动关闭");
-                            sqlFactory.addParameter("remarks", "订单数量发完自动关闭");
+                            sqlFactory.addParameter("remarks", "发货单自动关闭成功");
                             sqlFactory.addParameter("actionuserid", "1");
                             sqlFactory.addParameter("actionby", "admin");
                             sqlFactory.addParameter("siteid", siteid);
-                            dbConnect.runSqlUpdate(sqlFactory.getSQL());
+                            sqlList.add(sqlFactory.getSQL());
+                        } else {
+                            unclosedispatchids.add(sa_dispatchid);
+                            logger.info("发货单自动关闭错误:" + resultobject.getString("errmsg") + "发货单id:" + sa_dispatchid);
+                        }
+                        if (!jsonArray.isEmpty()) {
+                            for (Object object1 : jsonArray) {
+                                JSONObject jsonObject = (JSONObject) object1;
+                                sqlList.add("update sa_dispatch_items set outwarehousedate=current_time,outwarehouseqty=" + jsonObject.getBigDecimalValue("fqty1") + " where rowno =" + jsonObject.getIntValue("frownum") + " and sa_dispatchid='" + sa_dispatchid + "' and siteid='" + siteid + "'");
+                            }
                         }
+
+
                     }
                 }
-            }
+                dbConnect.runSqlUpdate(sqlList);
 
-            //自动关闭erp发货单接口不成功,则手动关闭e订货的发货单(但状态为关闭)
-            ArrayList<String> uncloseSqlList = new ArrayList<>();
-            if (unclosedispatchids.size() > 0) {
-                for (Object object : unclosedispatchids) {
-                    Long sa_dispatchid = Long.valueOf(object.toString());
-                    String billno = "";
-                    Rows dispatchRows = dbConnect.runSqlQuery("select * from sa_dispatch where sa_dispatchid=" + sa_dispatchid + " and siteid='"+siteid+"'");
-                    if (!dispatchRows.isEmpty()) {
-                        billno = dispatchRows.get(0).getString("billno");
-                    } else {
-                        logger.info("发货单" + sa_dispatchid + "不存在:");
-                        continue;
-                    }
-                    //手工关闭发货单
-                    JSONObject jsonobject = new JSONObject();
-                    JSONObject objectdetail = new JSONObject();
-                    jsonobject.put("access_token", "basicDrp");
-                    jsonobject.put("classname", "Sainvoice");
-                    jsonobject.put("method", "closeSainvoice");
-                    objectdetail.put("finvonum", billno);
-                    objectdetail.put("isManual", true);
-                    jsonobject.put("content", objectdetail);
 
-                    HashMap<String, String> map = new HashMap<>();
-                    map.put("content-Type", "application/json");
-                    String result = new WebRequest().doPost(jsonobject.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
-                    JSONObject resultobject = JSONObject.parseObject(result);
-                    if (resultobject.getString("errcode").equals("0")) {
-                        Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
-                        RowsMap rowsOrderDetailMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
-                        Rows rowsDispatchDetailGroup = dbConnect.runSqlQuery("select sum(t1.qty) qty,sum(t1.outwarehouseqty) outwarehouseqty,t1.sa_orderitemsid,t1.siteid from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where ifnull(t1.isclose,0)=0 and t1.sa_dispatchid=" + sa_dispatchid + " group by t1.sa_orderitemsid,t1.siteid");
-                        if (!rowsDispatchDetailGroup.isEmpty()) {
-                            for (Row row : rowsDispatchDetailGroup) {
-                                logger.info("测试bug:" + "update sa_orderitems set undeliqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + ",deliedqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
-                                uncloseSqlList.add("update sa_orderitems set undeliqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + ",deliedqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                //判断当前单据是否已实际发完货,如果发完,则生把订单变为关闭状态
+                Rows orderRows = new Rows();
+                if (dispatchids.size() > 0) {
+                    String sql = "select distinct t1.sa_orderid from sa_orderitems t1 inner join sa_dispatch_items t2 on t1.siteid=t2.siteid and t1.sa_orderitemsid=t2.sa_orderitemsid where t1.siteid='" + siteid + "' and t2.sa_dispatchid in" + dispatchids.toJSONString();
+                    sql = sql.replace("[", "(").replace("]", ")");
+                    logger.info("sql:" + sql);
+                    orderRows = dbConnect.runSqlQuery(sql);
+                }
+                //总数量
+                Rows totalRows = dbConnect.runSqlQuery("select count(1) count,sa_orderid from sa_orderitems where siteid='" + siteid + "' group by sa_orderid");
+                RowsMap totalRowsMap = totalRows.toRowsMap("sa_orderid");
+                //已发完数量
+                Rows deliRows = dbConnect.runSqlQuery("select count(1) count,sa_orderid from sa_orderitems t1 inner join (SELECT  t1.sa_orderitemsid,t1.siteid,SUM(ifnull(t1.outwarehouseqty,0)) outwarehouseqty FROM sa_dispatch_items t1 WHERE t1.siteid='" + siteid + "' group by t1.sa_orderitemsid,t1.siteid) t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where t1.qty=t2.outwarehouseqty and t1.siteid='" + siteid + "' group by sa_orderid");
+                RowsMap deliRowsMap = deliRows.toRowsMap("sa_orderid");
+                if (orderRows.size() > 0) {
+                    for (Row row : orderRows) {
+                        logger.info("订单id:" + row.getString("sa_orderid"));
+                        if (totalRowsMap.containsKey(row.getString("sa_orderid")) && deliRowsMap.containsKey(row.getString("sa_orderid"))) {
+                            if (totalRowsMap.get(row.getString("sa_orderid")).get(0).getLong("count") == deliRowsMap.get(row.getString("sa_orderid")).get(0).getLong("count")) {
+                                logger.info("订单关闭:update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid=" + row.getLong("sa_orderid") + " and siteid='" + siteid + "'");
+                                dbConnect.runSqlUpdate("update sa_order set status='关闭',closedate=current_time,closeby='admin' where sa_orderid=" + row.getLong("sa_orderid") + " and siteid='" + siteid + "'");
+                                SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
+                                sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
+                                sqlFactory.addParameter("ownertable", "sa_order");
+                                sqlFactory.addParameter("ownerid", row.getLong("sa_orderid"));
+                                sqlFactory.addParameter("action", "自动关闭");
+                                sqlFactory.addParameter("remarks", "订单数量发完自动关闭");
+                                sqlFactory.addParameter("actionuserid", "1");
+                                sqlFactory.addParameter("actionby", "admin");
+                                sqlFactory.addParameter("siteid", siteid);
+                                dbConnect.runSqlUpdate(sqlFactory.getSQL());
                             }
                         }
+                    }
+                }
+
+                //自动关闭erp发货单接口不成功,则手动关闭e订货的发货单(但状态为关闭)
+                ArrayList<String> uncloseSqlList = new ArrayList<>();
+                if (unclosedispatchids.size() > 0) {
+                    for (Object object : unclosedispatchids) {
+                        Long sa_dispatchid = Long.valueOf(object.toString());
+                        String billno = "";
+                        Rows dispatchRows = dbConnect.runSqlQuery("select * from sa_dispatch where sa_dispatchid=" + sa_dispatchid + " and siteid='" + siteid + "'");
+                        if (!dispatchRows.isEmpty()) {
+                            billno = dispatchRows.get(0).getString("billno");
+                        } else {
+                            logger.info("发货单" + sa_dispatchid + "不存在:");
+                            continue;
+                        }
+                        //手工关闭发货单
+                        JSONObject jsonobject = new JSONObject();
+                        JSONObject objectdetail = new JSONObject();
+                        jsonobject.put("access_token", "basicDrp");
+                        jsonobject.put("classname", "Sainvoice");
+                        jsonobject.put("method", "closeSainvoice");
+                        objectdetail.put("finvonum", billno);
+                        objectdetail.put("isManual", true);
+                        jsonobject.put("content", objectdetail);
+
+                        HashMap<String, String> map = new HashMap<>();
+                        map.put("content-Type", "application/json");
+                        String result = new WebRequest().doPost(jsonobject.toString(), "http://124.71.196.182:8001/rest/ws_v2/basicDrp", map);
+                        JSONObject resultobject = JSONObject.parseObject(result);
+                        if (resultobject.getString("errcode").equals("0")) {
+                            Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
+                            RowsMap rowsOrderDetailMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
+                            Rows rowsDispatchDetailGroup = dbConnect.runSqlQuery("select sum(t1.qty) qty,sum(t1.outwarehouseqty) outwarehouseqty,t1.sa_orderitemsid,t1.siteid from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where ifnull(t1.isclose,0)=0 and t1.sa_dispatchid=" + sa_dispatchid + " group by t1.sa_orderitemsid,t1.siteid");
+                            if (!rowsDispatchDetailGroup.isEmpty()) {
+                                for (Row row : rowsDispatchDetailGroup) {
+                                    logger.info("测试bug:" + "update sa_orderitems set undeliqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + ",deliedqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                                    uncloseSqlList.add("update sa_orderitems set undeliqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").add(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + ",deliedqty=" + rowsOrderDetailMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty").subtract(row.getBigDecimal("qty").subtract(row.getBigDecimal("outwarehouseqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
+                                }
+                            }
 //                    Rows orderRows =dbConnect.runSqlQuery("select distinct t1.sa_orderid from sa_orderitems t1 inner join sa_dispatch_items t2 on t1.siteid=t2.siteid and t1.sa_orderitemsid=t2.sa_orderitemsid where t1.siteid='" + siteid + "' and t2.sa_dispatchid=" + sa_dispatchid);
 //                    for (Row row:orderRows) {
 //                        sqlList.add("update sa_order set status='审核' where sa_orderid=" + row.getLong("sa_orderid") + " and siteid='" + siteid + "'");
 //                    }
-                        uncloseSqlList.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + sa_dispatchid + "' and siteid='"+siteid+"'");
-                        SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
-                        sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
-                        sqlFactory.addParameter("ownertable", "sa_dispatch");
-                        sqlFactory.addParameter("ownerid", sa_dispatchid);
-                        sqlFactory.addParameter("action", "自动关闭");
-                        sqlFactory.addParameter("remarks", "发货单自动关闭成功(未全部发完,未发完数量退回订单并自动关闭)");
-                        sqlFactory.addParameter("actionuserid", "1");
-                        sqlFactory.addParameter("actionby", "admin");
-                        sqlFactory.addParameter("siteid", siteid);
-                        uncloseSqlList.add(sqlFactory.getSQL());
-                    } else {
-                        logger.info("发货单手工关闭错误:" + resultobject.getString("errmsg") + "发货单id:" + sa_dispatchid);
-                        Rows erpupdatelogRows = dbConnect.runSqlQuery(
-                                "select * from sys_erpupdatelog where ownertable='sa_dispatch' and type='手工关闭发货单' and ownerid=" + sa_dispatchid);
-                        SQLFactory sqlFactory;
-                        if (!erpupdatelogRows.isEmpty()) {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
-                            sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
+                            uncloseSqlList.add("update sa_dispatch set status='关闭',closedate=current_time,closeby='admin' where sa_dispatchid='" + sa_dispatchid + "' and siteid='" + siteid + "'");
+                            SQLFactory sqlFactory = new SQLFactory(this, "数据操作日志新增");
+                            sqlFactory.addParameter("sys_contrllogid", createTableID("sys_contrllog"));
+                            sqlFactory.addParameter("ownertable", "sa_dispatch");
+                            sqlFactory.addParameter("ownerid", sa_dispatchid);
+                            sqlFactory.addParameter("action", "自动关闭");
+                            sqlFactory.addParameter("remarks", "发货单自动关闭成功(未全部发完,未发完数量退回订单并自动关闭)");
+                            sqlFactory.addParameter("actionuserid", "1");
+                            sqlFactory.addParameter("actionby", "admin");
+                            sqlFactory.addParameter("siteid", siteid);
+                            uncloseSqlList.add(sqlFactory.getSQL());
                         } else {
-                            sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
-                            sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
+                            logger.info("发货单手工关闭错误:" + resultobject.getString("errmsg") + "发货单id:" + sa_dispatchid);
+                            Rows erpupdatelogRows = dbConnect.runSqlQuery(
+                                    "select * from sys_erpupdatelog where ownertable='sa_dispatch' and type='手工关闭发货单' and ownerid=" + sa_dispatchid);
+                            SQLFactory sqlFactory;
+                            if (!erpupdatelogRows.isEmpty()) {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志更新");
+                                sqlFactory.addParameter("sys_erpupdatelogid", erpupdatelogRows.get(0).getLong("sys_erpupdatelogid"));
+                            } else {
+                                sqlFactory = new SQLFactory(new UploadDataToERP_HY(), "erp上传日志新增");
+                                sqlFactory.addParameter("sys_erpupdatelogid", createTableID("sys_erpupdatelog"));
+                            }
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("userid", 1);
+                            sqlFactory.addParameter("username", "admin");
+                            sqlFactory.addParameter("ownerid", sa_dispatchid);
+                            sqlFactory.addParameter("ownertable", "sa_dispatch");
+                            sqlFactory.addParameter("type", "手工关闭发货单");
+                            sqlFactory.addParameter("request", object.toString());
+                            sqlFactory.addParameter("response", resultobject.toJSONString());
+                            sqlFactory.addParameter("erpbillno", "");
+                            sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
+                            sqlFactory.addParameter("status", resultobject.getString("errcode"));
+                            uncloseSqlList.add(sqlFactory.getSQL());
                         }
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlFactory.addParameter("userid", 1);
-                        sqlFactory.addParameter("username", "admin");
-                        sqlFactory.addParameter("ownerid", sa_dispatchid);
-                        sqlFactory.addParameter("ownertable", "sa_dispatch");
-                        sqlFactory.addParameter("type", "手工关闭发货单");
-                        sqlFactory.addParameter("request", object.toString());
-                        sqlFactory.addParameter("response", resultobject.toJSONString());
-                        sqlFactory.addParameter("erpbillno", "");
-                        sqlFactory.addParameter("errmsg", resultobject.getString("errmsg"));
-                        sqlFactory.addParameter("status", resultobject.getString("errcode"));
-                        uncloseSqlList.add(sqlFactory.getSQL());
-                    }
 
 
+                    }
+                    dbConnect.runSqlUpdate(uncloseSqlList);
+                }
+                for (Object o : dispatchids) {
+                    Rows rows1 = dbConnect.runSqlQuery("select t2.userid from sa_dispatch t1 inner join sys_enterprise_hr t2 on t1.siteid=t2.siteid and t1.sys_enterpriseid=t2.sys_enterpriseid where sa_dispatchid=" + o);
+                    HashMap<String, Object> dataextra = new HashMap<>();
+                    dataextra.put("extraUseridList", rows1.toArrayList("userid"));
+                    Executor.sendEml(this, "dispatch_close", (Long) o, siteid, dataextra);
                 }
-                dbConnect.runSqlUpdate(uncloseSqlList);
-            }
-            for (Object o : dispatchids) {
-                Rows rows1 = dbConnect.runSqlQuery("select t2.userid from sa_dispatch t1 inner join sys_enterprise_hr t2 on t1.siteid=t2.siteid and t1.sys_enterpriseid=t2.sys_enterpriseid where sa_dispatchid=" + o);
-                HashMap<String, Object> dataextra = new HashMap<>();
-                dataextra.put("extraUseridList", rows1.toArrayList("userid"));
-                Executor.sendEml(this, "dispatch_close", (Long) o, siteid, dataextra);
-            }
 
+            }
         }
     }
 

+ 182 - 179
src/custom/service/StockAutoDockAftersalesmagService.java

@@ -23,156 +23,156 @@ import java.util.Properties;
 public class StockAutoDockAftersalesmagService extends ServiceController {
 
     private static Logger logger = Logger.getLogger(DispatchAutoCloseService.class);
-    //    String siteid="CCYOSG";
-    String siteid = "DLB";
+    String[] siteids = {"CCYOSG", "DLB"};
+
     @Override
     public void serviceRun() throws YosException {
-        //
-        Properties yosProperties = properties.getYosProperties();
-        if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
+        for (String siteid : siteids) {
+            Properties yosProperties = properties.getYosProperties();
+            if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
 
-            ArrayList<String> sqlList = new ArrayList<>();
-            ERPDocking erpDocking = new ERPDocking();
-            JSONArray ErpSainvoices = erpDocking.queryErpStockBill(500, 1,"销售退货");
-            JSONArray flags=new JSONArray();
-            if (!ErpSainvoices.isEmpty()) {
-                for (Object ErpSainvoice : ErpSainvoices) {
-                    JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
-                    // 经销商编号
-                    String fagentnum = erpSainvoice.getString("fagentnum");
-                    long sys_enterpriseid = 0;
-                    if (dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='"+siteid+"' and  agentnum='" + fagentnum + "'").isNotEmpty()) {
-                        sys_enterpriseid = dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='"+siteid+"' and  agentnum='" + fagentnum + "'").get(0).getLong("sys_enterpriseid");
-                    } else {
-                        JSONObject flag =new JSONObject();
-                        flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "4");
-                        flag.put("fupdatewarnlog", "yos中不存在【" + fagentnum + "】经销商");
-                        flags.add(flag);
-                        continue;
-                    }
-                    //单号
-                    String fbillnum = erpSainvoice.getString("fbillnum");
-                    // 单据日期
-                    String fdate = erpSainvoice.getString("fdate");
-                    // 会计期间
-                    //  String fperiod = content.getString("fperiod");
-                    // 红蓝字
-                    String frb = erpSainvoice.getString("frb");
-                    // 表头仓库
-                    // String fstockno = content.getString("fstockno");
-                    // 单据类型明细
-                    //String ftypemx = content.getString("ftypemx");
-                    // 单据状态
-                    String fstatus = erpSainvoice.getString("fstatus");
-                    // 制单人
-                    String createby = erpSainvoice.getString("createby");
-                    // 制单日期
-                    String createdate = erpSainvoice.getString("createdate");
+                ArrayList<String> sqlList = new ArrayList<>();
+                ERPDocking erpDocking = new ERPDocking(siteid);
+                JSONArray ErpSainvoices = erpDocking.queryErpStockBill(500, 1, "销售退货");
+                JSONArray flags = new JSONArray();
+                if (!ErpSainvoices.isEmpty()) {
+                    for (Object ErpSainvoice : ErpSainvoices) {
+                        JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
+                        // 经销商编号
+                        String fagentnum = erpSainvoice.getString("fagentnum");
+                        long sys_enterpriseid = 0;
+                        if (dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").isNotEmpty()) {
+                            sys_enterpriseid = dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").get(0).getLong("sys_enterpriseid");
+                        } else {
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "4");
+                            flag.put("fupdatewarnlog", "yos中不存在【" + fagentnum + "】经销商");
+                            flags.add(flag);
+                            continue;
+                        }
+                        //单号
+                        String fbillnum = erpSainvoice.getString("fbillnum");
+                        // 单据日期
+                        String fdate = erpSainvoice.getString("fdate");
+                        // 会计期间
+                        //  String fperiod = content.getString("fperiod");
+                        // 红蓝字
+                        String frb = erpSainvoice.getString("frb");
+                        // 表头仓库
+                        // String fstockno = content.getString("fstockno");
+                        // 单据类型明细
+                        //String ftypemx = content.getString("ftypemx");
+                        // 单据状态
+                        String fstatus = erpSainvoice.getString("fstatus");
+                        // 制单人
+                        String createby = erpSainvoice.getString("createby");
+                        // 制单日期
+                        String createdate = erpSainvoice.getString("createdate");
 //                    // 审核人
 //                    String checkby = erpSainvoice.getString("checkby");
 //                    // 审核日期
 //                    String checkdate = erpSainvoice.getString("checkdate");
-                    // 备注
-                    String fnotes = erpSainvoice.getString("fnote");
-                    String fsourcebillno = erpSainvoice.getString("fsourcebillno");
-                    long sa_aftersalesmagid=0;
-                    if(StringUtils.isNotBlank(fsourcebillno)){
-                        if (dbConnect.runSqlQuery("select sa_aftersalesmagid from sa_aftersalesmag where siteid='"+siteid+"' and  billno='" + fsourcebillno + "'").isNotEmpty()) {
-                            sa_aftersalesmagid = dbConnect.runSqlQuery("select sa_aftersalesmagid from sa_aftersalesmag where siteid='"+siteid+"' and  billno='" + fsourcebillno + "'").get(0).getLong("sa_aftersalesmagid");
+                        // 备注
+                        String fnotes = erpSainvoice.getString("fnote");
+                        String fsourcebillno = erpSainvoice.getString("fsourcebillno");
+                        long sa_aftersalesmagid = 0;
+                        if (StringUtils.isNotBlank(fsourcebillno)) {
+                            if (dbConnect.runSqlQuery("select sa_aftersalesmagid from sa_aftersalesmag where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").isNotEmpty()) {
+                                sa_aftersalesmagid = dbConnect.runSqlQuery("select sa_aftersalesmagid from sa_aftersalesmag where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").get(0).getLong("sa_aftersalesmagid");
+                            } else {
+                                JSONObject flag = new JSONObject();
+                                flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                                flag.put("fupdateflag", "4");
+                                flag.put("fupdatewarnlog", "yos中不存在对应的退货单");
+                                flags.add(flag);
+                                continue;
+                            }
                         } else {
-                            JSONObject flag =new JSONObject();
-                            flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
                             flag.put("fupdateflag", "4");
                             flag.put("fupdatewarnlog", "yos中不存在对应的退货单");
                             flags.add(flag);
                             continue;
                         }
-                    }else {
-                        JSONObject flag =new JSONObject();
-                        flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "4");
-                        flag.put("fupdatewarnlog", "yos中不存在对应的退货单");
-                        flags.add(flag);
-                        continue;
-                    }
 
 
-                    Long sa_cashbillid = 0L;
+                        Long sa_cashbillid = 0L;
 
-                    Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='"+siteid+"' and status='审核' and billno='" + fbillnum + "'");
-                    Long st_stockbillid = 0L;
-                    if (stockbillRows.isEmpty() && "审核".equals(fstatus)) {
-                        /**
-                         * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
-                         */
-                        SQLFactory sqlFactory = new SQLFactory(this, "销售出库单新增");
-                        st_stockbillid = createTableID("st_stockbill");
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlFactory.addParameter("st_stockbillid", st_stockbillid);
-                        sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
-                        sqlFactory.addParameter("billno", fbillnum);
-                        sqlFactory.addParameter("type", "销售退货");
-                        sqlFactory.addParameter("rb", frb.equals("蓝") ? 1 : 0);
-                        sqlFactory.addParameter("billdate", fdate);
-                        sqlFactory.addParameter("createby", createby);
-                        sqlFactory.addParameter("createdate", getDate(createdate));
-                        sqlFactory.addParameter("changeby", createby);
-                        sqlFactory.addParameter("changedate", getDate(createdate));
-                        sqlFactory.addParameter("checkby", createby);
-                        sqlFactory.addParameter("checkdate", getDate(createdate));
-                        sqlFactory.addParameter("remarks", fnotes);
-                        sqlList.add(sqlFactory.getSQL());
+                        Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='" + siteid + "' and status='审核' and billno='" + fbillnum + "'");
+                        Long st_stockbillid = 0L;
+                        if (stockbillRows.isEmpty() && "审核".equals(fstatus)) {
+                            /**
+                             * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
+                             */
+                            SQLFactory sqlFactory = new SQLFactory(this, "销售出库单新增");
+                            st_stockbillid = createTableID("st_stockbill");
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("st_stockbillid", st_stockbillid);
+                            sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
+                            sqlFactory.addParameter("billno", fbillnum);
+                            sqlFactory.addParameter("type", "销售退货");
+                            sqlFactory.addParameter("rb", frb.equals("蓝") ? 1 : 0);
+                            sqlFactory.addParameter("billdate", fdate);
+                            sqlFactory.addParameter("createby", createby);
+                            sqlFactory.addParameter("createdate", getDate(createdate));
+                            sqlFactory.addParameter("changeby", createby);
+                            sqlFactory.addParameter("changedate", getDate(createdate));
+                            sqlFactory.addParameter("checkby", createby);
+                            sqlFactory.addParameter("checkdate", getDate(createdate));
+                            sqlFactory.addParameter("remarks", fnotes);
+                            sqlList.add(sqlFactory.getSQL());
 
-                        JSONArray detailarray = erpSainvoice.getJSONArray("details");
-                        StringBuffer str = new StringBuffer();
+                            JSONArray detailarray = erpSainvoice.getJSONArray("details");
+                            StringBuffer str = new StringBuffer();
 
-                        for (Object object : detailarray) {
-                            JSONObject jsonObject = (JSONObject) object;
-                            if (str.toString().equals("")) {
-                                str.append("'" + jsonObject.getString("fitemno") + "'");
+                            for (Object object : detailarray) {
+                                JSONObject jsonObject = (JSONObject) object;
+                                if (str.toString().equals("")) {
+                                    str.append("'" + jsonObject.getString("fitemno") + "'");
+                                } else {
+                                    str.append(",'" + jsonObject.getString("fitemno") + "'");
+                                }
+                            }
+                            Rows rows;
+                            if (!str.toString().equals("")) {
+                                rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in " + "(" + str.toString() + ")");
                             } else {
-                                str.append(",'" + jsonObject.getString("fitemno") + "'");
+                                rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in('')");
                             }
-                        }
-                        Rows rows;
-                        if (!str.toString().equals("")) {
-                            rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='"+siteid+"' and itemno in " + "(" + str.toString() + ")");
-                        } else {
-                            rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='"+siteid+"' and itemno in('')");
-                        }
-                        RowsMap itemRowsMap = rows.toRowsMap("itemno");
+                            RowsMap itemRowsMap = rows.toRowsMap("itemno");
 //                        Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid,t1.rowno,t1.sa_orderitemsid,t2.sa_orderid,t3.sys_enterpriseid,t4.sonum,t5.itemno,t5.itemname from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid left join sa_order t4 on t2.sa_orderid=t4.sa_orderid and t2.siteid=t4.siteid left join plm_item t5 on t1.itemid=t5.itemid and t1.siteid=t5.siteid where t3.status in('审核','复核','关闭') and  t1.siteid='"+siteid+"' and  t1.sa_dispatchid = " + sa_dispatchid);
 //                        RowsMap distiptchRowsMap = distiptchRows.toRowsMap("rowno");
 
-                        Rows aftersalesmagRows = dbConnect.runSqlQuery("select t1.price,t1.sa_aftersalesmag_itemsid,t3.itemno,t1.sa_orderitemsid,t2.sa_orderid from sa_aftersalesmag_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join plm_item t3  on t1.itemid=t3.itemid and t1.siteid=t3.siteid  where  t1.siteid='"+siteid+"' and  t1.sa_aftersalesmagid = " +sa_aftersalesmagid);
-                        RowsMap aftersalesmagRowsMap = aftersalesmagRows.toRowsMap("itemno");
-                        BigDecimal amountTotal = BigDecimal.ZERO;
-                        for (Object object : detailarray) {
-                            JSONObject jsonObject = (JSONObject) object;
-                            String frownum = jsonObject.getString("fentryno");
-                            String fitemno = jsonObject.getString("fitemno");
-                            String fbatchno = jsonObject.getString("fbatchno");
+                            Rows aftersalesmagRows = dbConnect.runSqlQuery("select t1.price,t1.sa_aftersalesmag_itemsid,t3.itemno,t1.sa_orderitemsid,t2.sa_orderid from sa_aftersalesmag_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join plm_item t3  on t1.itemid=t3.itemid and t1.siteid=t3.siteid  where  t1.siteid='" + siteid + "' and  t1.sa_aftersalesmagid = " + sa_aftersalesmagid);
+                            RowsMap aftersalesmagRowsMap = aftersalesmagRows.toRowsMap("itemno");
+                            BigDecimal amountTotal = BigDecimal.ZERO;
+                            for (Object object : detailarray) {
+                                JSONObject jsonObject = (JSONObject) object;
+                                String frownum = jsonObject.getString("fentryno");
+                                String fitemno = jsonObject.getString("fitemno");
+                                String fbatchno = jsonObject.getString("fbatchno");
 
-                            System.err.println(frownum + ":" + fitemno);
-                            BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
-                            fqty = fqty.compareTo(BigDecimal.ZERO) < 0 ? fqty.negate() : fqty;
-                            //String fdetailstockno = jsonObject.getString("fstockno");
-                            //String fbatchno = jsonObject.getString("fbatchno");
-                            String fdetailnotes = jsonObject.getString("fnote");
-                            SQLFactory sqlFactorydetail = new SQLFactory(this, "销售出库单明细新增");
-                            sqlFactorydetail.addParameter("siteid", siteid);
-                            sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
-                            sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
-                            sqlFactorydetail.addParameter("rowno", frownum);
-                            sqlFactorydetail.addParameter("remarks", fnotes);
-                            if (itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()) {
-                                sqlFactorydetail.addParameter("itemid", itemRowsMap.get(fitemno).get(0).getLong("itemid"));
-                            } else {
-                                sqlFactorydetail.addParameter("itemid", 0);
-                            }
-                            sqlFactorydetail.addParameter("remarks", fdetailnotes);
-                            sqlFactorydetail.addParameter("qty", fqty);
+                                System.err.println(frownum + ":" + fitemno);
+                                BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
+                                fqty = fqty.compareTo(BigDecimal.ZERO) < 0 ? fqty.negate() : fqty;
+                                //String fdetailstockno = jsonObject.getString("fstockno");
+                                //String fbatchno = jsonObject.getString("fbatchno");
+                                String fdetailnotes = jsonObject.getString("fnote");
+                                SQLFactory sqlFactorydetail = new SQLFactory(this, "销售出库单明细新增");
+                                sqlFactorydetail.addParameter("siteid", siteid);
+                                sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
+                                sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
+                                sqlFactorydetail.addParameter("rowno", frownum);
+                                sqlFactorydetail.addParameter("remarks", fnotes);
+                                if (itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()) {
+                                    sqlFactorydetail.addParameter("itemid", itemRowsMap.get(fitemno).get(0).getLong("itemid"));
+                                } else {
+                                    sqlFactorydetail.addParameter("itemid", 0);
+                                }
+                                sqlFactorydetail.addParameter("remarks", fdetailnotes);
+                                sqlFactorydetail.addParameter("qty", fqty);
 
 //                            if (frb.equals("蓝")) {
 //                                if (aftersalesmagRows.containsKey(String.valueOf(frownum)) && aftersalesmagRows.get(frownum).isNotEmpty()) {
@@ -193,63 +193,65 @@ public class StockAutoDockAftersalesmagService extends ServiceController {
 //                                    sqlFactorydetail.addParameter("sa_orderid", 0);
 //                                }
 //                            }
-                            if (frb.equals("红")) {
-                                if (aftersalesmagRowsMap.containsKey(String.valueOf(fitemno)) && aftersalesmagRowsMap.get(fitemno).isNotEmpty()) {
-                                    logger.info(aftersalesmagRowsMap.get(fitemno).get(0).toJsonObject().toString());
-                                    sqlFactorydetail.addParameter("sa_dispatch_itemsid",  aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_aftersalesmag_itemsid"));
-                                    sqlFactorydetail.addParameter("price", aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("price"));
-                                    sqlFactorydetail.addParameter("amount", fqty.multiply(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("price")));
-                                    logger.info(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("sa_orderitemsid"));
-                                    logger.info(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("sa_orderid"));
-                                    sqlFactorydetail.addParameter("sa_orderitemsid", aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_orderitemsid"));
-                                    sqlFactorydetail.addParameter("sa_orderid", aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_orderid"));
-                                } else {
-                                    sqlFactorydetail.addParameter("sa_dispatch_itemsid", 0);
-                                    sqlFactorydetail.addParameter("price", 0);
-                                    sqlFactorydetail.addParameter("amount", 0);
-                                    sqlFactorydetail.addParameter("sa_orderitemsid", 0);
-                                    sqlFactorydetail.addParameter("sa_orderid", 0);
+                                if (frb.equals("红")) {
+                                    if (aftersalesmagRowsMap.containsKey(String.valueOf(fitemno)) && aftersalesmagRowsMap.get(fitemno).isNotEmpty()) {
+                                        logger.info(aftersalesmagRowsMap.get(fitemno).get(0).toJsonObject().toString());
+                                        sqlFactorydetail.addParameter("sa_dispatch_itemsid", aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_aftersalesmag_itemsid"));
+                                        sqlFactorydetail.addParameter("price", aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("price"));
+                                        sqlFactorydetail.addParameter("amount", fqty.multiply(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("price")));
+                                        logger.info(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("sa_orderitemsid"));
+                                        logger.info(aftersalesmagRowsMap.get(fitemno).get(0).getBigDecimal("sa_orderid"));
+                                        sqlFactorydetail.addParameter("sa_orderitemsid", aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_orderitemsid"));
+                                        sqlFactorydetail.addParameter("sa_orderid", aftersalesmagRowsMap.get(fitemno).get(0).getLong("sa_orderid"));
+                                    } else {
+                                        sqlFactorydetail.addParameter("sa_dispatch_itemsid", 0);
+                                        sqlFactorydetail.addParameter("price", 0);
+                                        sqlFactorydetail.addParameter("amount", 0);
+                                        sqlFactorydetail.addParameter("sa_orderitemsid", 0);
+                                        sqlFactorydetail.addParameter("sa_orderid", 0);
+                                    }
                                 }
+
+                                sqlList.add(sqlFactorydetail.getSQL());
                             }
+                            sqlList.add("update st_stockbill set status='审核',checkby='" + createby + "',checkdate=CURRENT_TIMESTAMP where st_stockbillid = " + st_stockbillid + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "1");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
 
-                            sqlList.add(sqlFactorydetail.getSQL());
+                        } else if (!stockbillRows.isEmpty() && "审核".equals(fstatus)) {
+                            /**
+                             * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
+                             */
+                            sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "99");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
+                            continue;
+                        } else if (!stockbillRows.isEmpty() && "新建".equals(fstatus)) {
+                            /**
+                             * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
+                             */
+                            sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "1");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
                         }
-                        sqlList.add("update st_stockbill set status='审核',checkby='" + createby + "',checkdate=CURRENT_TIMESTAMP where st_stockbillid = " + st_stockbillid + " and siteid='"+siteid+"'");  JSONObject flag =new JSONObject();
-                        flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "1");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
-
-                    } else if (!stockbillRows.isEmpty() && "审核".equals(fstatus)) {
-                        /**
-                         * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
-                         */
-                        sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='"+siteid+"'");
-                        JSONObject flag =new JSONObject();
-                        flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "99");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
-                        continue;
-                    } else if (!stockbillRows.isEmpty() && "新建".equals(fstatus)) {
-                        /**
-                         * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
-                         */
-                        sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='"+siteid+"'");
-                        JSONObject flag =new JSONObject();
-                        flag.put("syncyosid",erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "1");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
                     }
                 }
-            }
-            if(erpDocking.updateErpupdateFlag(flags).equals("true")){
-                dbConnect.runSqlUpdate(sqlList);
-                /**
-                 * 如单据为新建状态,则,先把单据强行删除掉
-                 */
-                dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
+                if (erpDocking.updateErpupdateFlag(flags).equals("true")) {
+                    dbConnect.runSqlUpdate(sqlList);
+                    /**
+                     * 如单据为新建状态,则,先把单据强行删除掉
+                     */
+                    dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
+                }
             }
 
 
@@ -265,9 +267,10 @@ public class StockAutoDockAftersalesmagService extends ServiceController {
         }
         return null;
     }
-    public void sendMsg(String content, Long st_stockbillid, Long sys_enterpriseid) throws YosException {
 
-        ArrayList<Long> userList = getEnterpriseHrs(sys_enterpriseid,siteid).toArrayList("userid", new ArrayList<>());
+    public void sendMsg(String siteid,String content, Long st_stockbillid, Long sys_enterpriseid) throws YosException {
+
+        ArrayList<Long> userList = getEnterpriseHrs(sys_enterpriseid, siteid).toArrayList("userid", new ArrayList<>());
         Remind remind = new Remind(new Controller(new JSONObject()));
         remind.setTitle("销售出库单消息");
         remind.setContent(content);

+ 184 - 184
src/custom/service/StockAutoDockDispatchService.java

@@ -28,66 +28,73 @@ import java.util.*;
 public class StockAutoDockDispatchService extends ServiceController {
 
     private static Logger logger = Logger.getLogger(DispatchAutoCloseService.class);
-    //    String siteid="CCYOSG";
-    String siteid = "DLB";
+    String[] siteids = {"CCYOSG", "DLB"};
 
     @Override
     public void serviceRun() throws YosException {
-        //
-        System.out.println("销售出库单自动同步任务");
-        Properties yosProperties = properties.getYosProperties();
-        if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
+        for (String siteid : siteids) {
+            System.out.println("销售出库单自动同步任务");
+            Properties yosProperties = properties.getYosProperties();
+            if (yosProperties.getProperty("system.runmode.debug").equalsIgnoreCase("false")) {
 
-            ArrayList<String> sqlList = new ArrayList<>();
-            ERPDocking erpDocking = new ERPDocking();
-            JSONArray ErpSainvoices = erpDocking.queryErpStockBill(500, 1, "销售出库");
-            JSONArray flags = new JSONArray();
-            if (!ErpSainvoices.isEmpty()) {
-                for (Object ErpSainvoice : ErpSainvoices) {
-                    JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
-                    // 经销商编号
-                    String fagentnum = erpSainvoice.getString("fagentnum");
-                    long sys_enterpriseid = 0;
-                    if (dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").isNotEmpty()) {
-                        sys_enterpriseid = dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").get(0).getLong("sys_enterpriseid");
-                    } else {
-                        JSONObject flag = new JSONObject();
-                        flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "4");
-                        flag.put("fupdatewarnlog", "yos中不存在【" + fagentnum + "】经销商");
-                        flags.add(flag);
-                        continue;
-                    }
-                    //单号
-                    String fbillnum = erpSainvoice.getString("fbillnum");
-                    // 单据日期
-                    String fdate = erpSainvoice.getString("fdate");
-                    // 会计期间
-                    //  String fperiod = content.getString("fperiod");
-                    // 红蓝字
-                    String frb = erpSainvoice.getString("frb");
-                    // 表头仓库
-                    // String fstockno = content.getString("fstockno");
-                    // 单据类型明细
-                    //String ftypemx = content.getString("ftypemx");
-                    // 单据状态
-                    String fstatus = erpSainvoice.getString("fstatus");
-                    // 制单人
-                    String createby = erpSainvoice.getString("createby");
-                    // 制单日期
-                    String createdate = erpSainvoice.getString("createdate");
+                ArrayList<String> sqlList = new ArrayList<>();
+                ERPDocking erpDocking = new ERPDocking(siteid);
+                JSONArray ErpSainvoices = erpDocking.queryErpStockBill(500, 1, "销售出库");
+                JSONArray flags = new JSONArray();
+                if (!ErpSainvoices.isEmpty()) {
+                    for (Object ErpSainvoice : ErpSainvoices) {
+                        JSONObject erpSainvoice = (JSONObject) ErpSainvoice;
+                        // 经销商编号
+                        String fagentnum = erpSainvoice.getString("fagentnum");
+                        long sys_enterpriseid = 0;
+                        if (dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").isNotEmpty()) {
+                            sys_enterpriseid = dbConnect.runSqlQuery("select sys_enterpriseid from sa_agents where siteid='" + siteid + "' and  agentnum='" + fagentnum + "'").get(0).getLong("sys_enterpriseid");
+                        } else {
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "4");
+                            flag.put("fupdatewarnlog", "yos中不存在【" + fagentnum + "】经销商");
+                            flags.add(flag);
+                            continue;
+                        }
+                        //单号
+                        String fbillnum = erpSainvoice.getString("fbillnum");
+                        // 单据日期
+                        String fdate = erpSainvoice.getString("fdate");
+                        // 会计期间
+                        //  String fperiod = content.getString("fperiod");
+                        // 红蓝字
+                        String frb = erpSainvoice.getString("frb");
+                        // 表头仓库
+                        // String fstockno = content.getString("fstockno");
+                        // 单据类型明细
+                        //String ftypemx = content.getString("ftypemx");
+                        // 单据状态
+                        String fstatus = erpSainvoice.getString("fstatus");
+                        // 制单人
+                        String createby = erpSainvoice.getString("createby");
+                        // 制单日期
+                        String createdate = erpSainvoice.getString("createdate");
 //                    // 审核人
 //                    String checkby = erpSainvoice.getString("checkby");
 //                    // 审核日期
 //                    String checkdate = erpSainvoice.getString("checkdate");
-                    // 备注
-                    String fnotes = erpSainvoice.getString("fnote");
-                    String fsourcebillno = erpSainvoice.getString("fsourcebillno");
-                    String fsourcetype = erpSainvoice.getString("fsourcetype");
-                    long sa_dispatchid = 0;
-                    if (StringUtils.isNotBlank(fsourcebillno)) {
-                        if (dbConnect.runSqlQuery("select sa_dispatchid from sa_dispatch where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").isNotEmpty()) {
-                            sa_dispatchid = dbConnect.runSqlQuery("select sa_dispatchid from sa_dispatch where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").get(0).getLong("sa_dispatchid");
+                        // 备注
+                        String fnotes = erpSainvoice.getString("fnote");
+                        String fsourcebillno = erpSainvoice.getString("fsourcebillno");
+                        String fsourcetype = erpSainvoice.getString("fsourcetype");
+                        long sa_dispatchid = 0;
+                        if (StringUtils.isNotBlank(fsourcebillno)) {
+                            if (dbConnect.runSqlQuery("select sa_dispatchid from sa_dispatch where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").isNotEmpty()) {
+                                sa_dispatchid = dbConnect.runSqlQuery("select sa_dispatchid from sa_dispatch where siteid='" + siteid + "' and  billno='" + fsourcebillno + "'").get(0).getLong("sa_dispatchid");
+                            } else {
+                                JSONObject flag = new JSONObject();
+                                flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                                flag.put("fupdateflag", "4");
+                                flag.put("fupdatewarnlog", "yos中不存在对应的发货单");
+                                flags.add(flag);
+                                continue;
+                            }
                         } else {
                             JSONObject flag = new JSONObject();
                             flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
@@ -96,112 +103,104 @@ public class StockAutoDockDispatchService extends ServiceController {
                             flags.add(flag);
                             continue;
                         }
-                    } else {
-                        JSONObject flag = new JSONObject();
-                        flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "4");
-                        flag.put("fupdatewarnlog", "yos中不存在对应的发货单");
-                        flags.add(flag);
-                        continue;
-                    }
 
 
-                    Long sa_cashbillid = 0L;
+                        Long sa_cashbillid = 0L;
 
-                    Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='" + siteid + "' and status='审核' and billno='" + fbillnum + "'");
-                    Long st_stockbillid = 0L;
-                    if (stockbillRows.isEmpty() && "审核".equals(fstatus)) {
-                        /**
-                         * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
-                         */
-                        SQLFactory sqlFactory = new SQLFactory(this, "销售出库单新增");
-                        st_stockbillid = createTableID("st_stockbill");
-                        sqlFactory.addParameter("siteid", siteid);
-                        sqlFactory.addParameter("st_stockbillid", st_stockbillid);
-                        sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
-                        sqlFactory.addParameter("billno", fbillnum);
-                        sqlFactory.addParameter("type", "销售出库");
-                        sqlFactory.addParameter("rb", frb.equals("蓝") ? 1 : 0);
-                        sqlFactory.addParameter("billdate", fdate);
-                        sqlFactory.addParameter("createby", createby);
-                        sqlFactory.addParameter("createdate", getDate(createdate));
-                        sqlFactory.addParameter("changeby", createby);
-                        sqlFactory.addParameter("changedate", getDate(createdate));
-                        sqlFactory.addParameter("checkby", createby);
-                        sqlFactory.addParameter("checkdate", getDate(createdate));
-                        sqlFactory.addParameter("remarks", fnotes);
-                        sqlList.add(sqlFactory.getSQL());
+                        Rows stockbillRows = dbConnect.runSqlQuery("select * from st_stockbill where siteid='" + siteid + "' and status='审核' and billno='" + fbillnum + "'");
+                        Long st_stockbillid = 0L;
+                        if (stockbillRows.isEmpty() && "审核".equals(fstatus)) {
+                            /**
+                             * DRP不存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需新增该销售出库单
+                             */
+                            SQLFactory sqlFactory = new SQLFactory(this, "销售出库单新增");
+                            st_stockbillid = createTableID("st_stockbill");
+                            sqlFactory.addParameter("siteid", siteid);
+                            sqlFactory.addParameter("st_stockbillid", st_stockbillid);
+                            sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
+                            sqlFactory.addParameter("billno", fbillnum);
+                            sqlFactory.addParameter("type", "销售出库");
+                            sqlFactory.addParameter("rb", frb.equals("蓝") ? 1 : 0);
+                            sqlFactory.addParameter("billdate", fdate);
+                            sqlFactory.addParameter("createby", createby);
+                            sqlFactory.addParameter("createdate", getDate(createdate));
+                            sqlFactory.addParameter("changeby", createby);
+                            sqlFactory.addParameter("changedate", getDate(createdate));
+                            sqlFactory.addParameter("checkby", createby);
+                            sqlFactory.addParameter("checkdate", getDate(createdate));
+                            sqlFactory.addParameter("remarks", fnotes);
+                            sqlList.add(sqlFactory.getSQL());
 
-                        JSONArray detailarray = erpSainvoice.getJSONArray("details");
-                        StringBuffer str = new StringBuffer();
+                            JSONArray detailarray = erpSainvoice.getJSONArray("details");
+                            StringBuffer str = new StringBuffer();
 
-                        for (Object object : detailarray) {
-                            JSONObject jsonObject = (JSONObject) object;
-                            if (str.toString().equals("")) {
-                                str.append("'" + jsonObject.getString("fitemno") + "'");
+                            for (Object object : detailarray) {
+                                JSONObject jsonObject = (JSONObject) object;
+                                if (str.toString().equals("")) {
+                                    str.append("'" + jsonObject.getString("fitemno") + "'");
+                                } else {
+                                    str.append(",'" + jsonObject.getString("fitemno") + "'");
+                                }
+                            }
+                            Rows rows;
+                            if (!str.toString().equals("")) {
+                                rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in " + "(" + str.toString() + ")");
                             } else {
-                                str.append(",'" + jsonObject.getString("fitemno") + "'");
+                                rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in('')");
                             }
-                        }
-                        Rows rows;
-                        if (!str.toString().equals("")) {
-                            rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in " + "(" + str.toString() + ")");
-                        } else {
-                            rows = dbConnect.runSqlQuery("select * from plm_item  where siteid='" + siteid + "' and itemno in('')");
-                        }
-                        RowsMap itemRowsMap = rows.toRowsMap("itemno");
-                        Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid,t1.rowno,t1.sa_orderitemsid,t2.sa_orderid,t3.sys_enterpriseid,t4.sonum,t5.itemno,t5.itemname from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid left join sa_order t4 on t2.sa_orderid=t4.sa_orderid and t2.siteid=t4.siteid left join plm_item t5 on t1.itemid=t5.itemid and t1.siteid=t5.siteid where t3.status in('审核','复核','关闭') and  t1.siteid='" + siteid + "' and  t1.sa_dispatchid = " + sa_dispatchid);
-                        RowsMap distiptchRowsMap = distiptchRows.toRowsMap("rowno");
+                            RowsMap itemRowsMap = rows.toRowsMap("itemno");
+                            Rows distiptchRows = dbConnect.runSqlQuery("select t2.price,t1.sa_dispatch_itemsid,t1.rowno,t1.sa_orderitemsid,t2.sa_orderid,t3.sys_enterpriseid,t4.sonum,t5.itemno,t5.itemname from sa_dispatch_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid inner join sa_dispatch t3 on t1.sa_dispatchid=t3.sa_dispatchid and t1.siteid=t3.siteid left join sa_order t4 on t2.sa_orderid=t4.sa_orderid and t2.siteid=t4.siteid left join plm_item t5 on t1.itemid=t5.itemid and t1.siteid=t5.siteid where t3.status in('审核','复核','关闭') and  t1.siteid='" + siteid + "' and  t1.sa_dispatchid = " + sa_dispatchid);
+                            RowsMap distiptchRowsMap = distiptchRows.toRowsMap("rowno");
 
 //                        Rows aftersalesmagRows = dbConnect.runSqlQuery("select t1.price,t1.sa_aftersalesmag_itemsid,t1.sa_orderitemsid,t2.sa_orderid from sa_aftersalesmag_items t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid  where  t1.siteid='"+siteid+"' and  t1.sa_aftersalesmag_itemsid in " + sa_dispatch_itemsids.toString().replace("[", "(").replace("]", ")"));
 //                        RowsMap aftersalesmagRowsMap = aftersalesmagRows.toRowsMap("rowno");
-                        BigDecimal amountTotal = BigDecimal.ZERO;
-                        for (Object object : detailarray) {
-                            JSONObject jsonObject = (JSONObject) object;
-                            String frownum = jsonObject.getString("fentryno");
-                            String fitemno = jsonObject.getString("fitemno");
-                            String fbatchno = jsonObject.getString("fbatchno");
-
-                            System.err.println(frownum + ":" + fitemno);
-                            BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
-                            fqty = fqty.compareTo(BigDecimal.ZERO) < 0 ? fqty.negate() : fqty;
-                            //String fdetailstockno = jsonObject.getString("fstockno");
-                            //String fbatchno = jsonObject.getString("fbatchno");
-                            String fdetailnotes = jsonObject.getString("fnote");
-                            SQLFactory sqlFactorydetail = new SQLFactory(this, "销售出库单明细新增");
-                            sqlFactorydetail.addParameter("siteid", siteid);
-                            sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
-                            sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
-                            sqlFactorydetail.addParameter("rowno", frownum);
-                            sqlFactorydetail.addParameter("remarks", fnotes);
-                            if (itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()) {
-                                sqlFactorydetail.addParameter("itemid", itemRowsMap.get(fitemno).get(0).getLong("itemid"));
-                            } else {
-                                sqlFactorydetail.addParameter("itemid", 0);
-                            }
-                            sqlFactorydetail.addParameter("remarks", fdetailnotes);
-                            sqlFactorydetail.addParameter("qty", fqty);
+                            BigDecimal amountTotal = BigDecimal.ZERO;
+                            for (Object object : detailarray) {
+                                JSONObject jsonObject = (JSONObject) object;
+                                String frownum = jsonObject.getString("fentryno");
+                                String fitemno = jsonObject.getString("fitemno");
+                                String fbatchno = jsonObject.getString("fbatchno");
 
-                            if (frb.equals("蓝")) {
-                                if (distiptchRowsMap.containsKey(String.valueOf(frownum)) && distiptchRowsMap.get(frownum).isNotEmpty()) {
-                                    sqlFactorydetail.addParameter("sa_dispatch_itemsid", distiptchRowsMap.get(frownum).get(0).getLong("sa_dispatch_itemsid"));
-                                    sqlFactorydetail.addParameter("price", distiptchRowsMap.get(frownum).get(0).getBigDecimal("price"));
-                                    amountTotal = amountTotal.add(fqty.multiply(distiptchRowsMap.get(frownum).get(0).getBigDecimal("price")));
-                                    sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(frownum).get(0).getBigDecimal("price")));
-                                    sqlFactorydetail.addParameter("sa_orderitemsid", distiptchRowsMap.get(frownum).get(0).getLong("sa_orderitemsid"));
-                                    sqlFactorydetail.addParameter("sa_orderid", distiptchRowsMap.get(frownum).get(0).getLong("sa_orderid"));
-                                    System.out.println(amountTotal);
-                                    //您的订单【XXX】商品【XXX】工厂已发货,出库单号【XXX】
-                                    String message = "您的订单【" + distiptchRowsMap.get(frownum).get(0).getString("sonum") + "】商品【" + distiptchRowsMap.get(frownum).get(0).getString("itemname") + "】工厂已发货,出库单号【" + fbillnum + "】!";
-                                    sendMsg(message, st_stockbillid, distiptchRowsMap.get(frownum).get(0).getLong("sys_enterpriseid"));
+                                System.err.println(frownum + ":" + fitemno);
+                                BigDecimal fqty = new BigDecimal(jsonObject.getString("fqty"));
+                                fqty = fqty.compareTo(BigDecimal.ZERO) < 0 ? fqty.negate() : fqty;
+                                //String fdetailstockno = jsonObject.getString("fstockno");
+                                //String fbatchno = jsonObject.getString("fbatchno");
+                                String fdetailnotes = jsonObject.getString("fnote");
+                                SQLFactory sqlFactorydetail = new SQLFactory(this, "销售出库单明细新增");
+                                sqlFactorydetail.addParameter("siteid", siteid);
+                                sqlFactorydetail.addParameter("st_stockbill_itemsid", createTableID("st_stockbill_items"));
+                                sqlFactorydetail.addParameter("st_stockbillid", st_stockbillid);
+                                sqlFactorydetail.addParameter("rowno", frownum);
+                                sqlFactorydetail.addParameter("remarks", fnotes);
+                                if (itemRowsMap.containsKey(fitemno) && itemRowsMap.get(fitemno).isNotEmpty()) {
+                                    sqlFactorydetail.addParameter("itemid", itemRowsMap.get(fitemno).get(0).getLong("itemid"));
                                 } else {
-                                    sqlFactorydetail.addParameter("sa_dispatch_itemsid", 0);
-                                    sqlFactorydetail.addParameter("price", 0);
-                                    sqlFactorydetail.addParameter("amount", 0);
-                                    sqlFactorydetail.addParameter("sa_orderitemsid", 0);
-                                    sqlFactorydetail.addParameter("sa_orderid", 0);
+                                    sqlFactorydetail.addParameter("itemid", 0);
+                                }
+                                sqlFactorydetail.addParameter("remarks", fdetailnotes);
+                                sqlFactorydetail.addParameter("qty", fqty);
+
+                                if (frb.equals("蓝")) {
+                                    if (distiptchRowsMap.containsKey(String.valueOf(frownum)) && distiptchRowsMap.get(frownum).isNotEmpty()) {
+                                        sqlFactorydetail.addParameter("sa_dispatch_itemsid", distiptchRowsMap.get(frownum).get(0).getLong("sa_dispatch_itemsid"));
+                                        sqlFactorydetail.addParameter("price", distiptchRowsMap.get(frownum).get(0).getBigDecimal("price"));
+                                        amountTotal = amountTotal.add(fqty.multiply(distiptchRowsMap.get(frownum).get(0).getBigDecimal("price")));
+                                        sqlFactorydetail.addParameter("amount", fqty.multiply(distiptchRowsMap.get(frownum).get(0).getBigDecimal("price")));
+                                        sqlFactorydetail.addParameter("sa_orderitemsid", distiptchRowsMap.get(frownum).get(0).getLong("sa_orderitemsid"));
+                                        sqlFactorydetail.addParameter("sa_orderid", distiptchRowsMap.get(frownum).get(0).getLong("sa_orderid"));
+                                        System.out.println(amountTotal);
+                                        //您的订单【XXX】商品【XXX】工厂已发货,出库单号【XXX】
+                                        String message = "您的订单【" + distiptchRowsMap.get(frownum).get(0).getString("sonum") + "】商品【" + distiptchRowsMap.get(frownum).get(0).getString("itemname") + "】工厂已发货,出库单号【" + fbillnum + "】!";
+                                        sendMsg(siteid,message, st_stockbillid, distiptchRowsMap.get(frownum).get(0).getLong("sys_enterpriseid"));
+                                    } else {
+                                        sqlFactorydetail.addParameter("sa_dispatch_itemsid", 0);
+                                        sqlFactorydetail.addParameter("price", 0);
+                                        sqlFactorydetail.addParameter("amount", 0);
+                                        sqlFactorydetail.addParameter("sa_orderitemsid", 0);
+                                        sqlFactorydetail.addParameter("sa_orderid", 0);
+                                    }
                                 }
-                            }
 //                            else {
 //                                if (aftersalesmagRowsMap.containsKey(String.valueOf(sainvoicedetailid)) && aftersalesmagRowsMap.get(sainvoicedetailid).isNotEmpty()) {
 //                                    logger.info(aftersalesmagRowsMap.get(sainvoicedetailid).get(0).toJsonObject().toString());
@@ -219,49 +218,50 @@ public class StockAutoDockDispatchService extends ServiceController {
 //                                }
 //                            }
 
-                            sqlList.add(sqlFactorydetail.getSQL());
-                        }
-                        sqlList.add("update st_stockbill set status='审核',checkby='" + createby + "',checkdate=CURRENT_TIMESTAMP where st_stockbillid = " + st_stockbillid + " and siteid='" + siteid + "'");
-                        JSONObject flag = new JSONObject();
-                        flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "1");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
+                                sqlList.add(sqlFactorydetail.getSQL());
+                            }
+                            sqlList.add("update st_stockbill set status='审核',checkby='" + createby + "',checkdate=CURRENT_TIMESTAMP where st_stockbillid = " + st_stockbillid + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "1");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
 
-                    } else if (!stockbillRows.isEmpty() && "审核".equals(fstatus)) {
-                        /**
-                         * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
-                         */
-                        sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
-                        JSONObject flag = new JSONObject();
-                        flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "99");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
-                        continue;
-                    } else if (!stockbillRows.isEmpty() && "新建".equals(fstatus)) {
-                        /**
-                         * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
-                         */
-                        sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
-                        JSONObject flag = new JSONObject();
-                        flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
-                        flag.put("fupdateflag", "1");
-                        flag.put("fupdatewarnlog", "");
-                        flags.add(flag);
+                        } else if (!stockbillRows.isEmpty() && "审核".equals(fstatus)) {
+                            /**
+                             * DRP存在销售出库单,且中间表状态为审核且不在删除状态时,DRP中需将当前销售出库单先反审核,修改内容后再进行审核
+                             */
+                            sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "99");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
+                            continue;
+                        } else if (!stockbillRows.isEmpty() && "新建".equals(fstatus)) {
+                            /**
+                             * DRP存在收入凭证,且中间表状态为新建或在删除状态时,DRP中需将当前收入销售出库单先反审核
+                             */
+                            sqlList.add("update st_stockbill set status='新建',checkby='',checkdate=null where st_stockbillid = " + stockbillRows.get(0).getLong("st_stockbillid") + " and siteid='" + siteid + "'");
+                            JSONObject flag = new JSONObject();
+                            flag.put("syncyosid", erpSainvoice.getStringValue("syncyosid"));
+                            flag.put("fupdateflag", "1");
+                            flag.put("fupdatewarnlog", "");
+                            flags.add(flag);
+                        }
                     }
                 }
-            }
-            if (erpDocking.updateErpupdateFlag(flags).equals("true")) {
-                dbConnect.runSqlUpdate(sqlList);
-                /**
-                 * 如单据为新建状态,则,先把单据强行删除掉
-                 */
-                dbConnect.runSqlUpdate("delete from st_stockbill_items where st_stockbillid in(select st_stockbillid from st_stockbill where status='新建')");
-                dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
-            }
+                if (erpDocking.updateErpupdateFlag(flags).equals("true")) {
+                    dbConnect.runSqlUpdate(sqlList);
+                    /**
+                     * 如单据为新建状态,则,先把单据强行删除掉
+                     */
+                    dbConnect.runSqlUpdate("delete from st_stockbill_items where st_stockbillid in(select st_stockbillid from st_stockbill where status='新建')");
+                    dbConnect.runSqlUpdate("delete from st_stockbill where status='新建'");
+                }
 
 
+            }
         }
     }
 
@@ -275,7 +275,7 @@ public class StockAutoDockDispatchService extends ServiceController {
         return null;
     }
 
-    public void sendMsg(String content, Long st_stockbillid, Long sys_enterpriseid) throws YosException {
+    public void sendMsg(String siteid,String content, Long st_stockbillid, Long sys_enterpriseid) throws YosException {
 
         ArrayList<Long> userList = getEnterpriseHrs(sys_enterpriseid, siteid).toArrayList("userid", new ArrayList<>());
         Remind remind = new Remind(new Controller(new JSONObject()));

+ 10 - 9
src/custom/utility/ERPDocking.java

@@ -24,17 +24,18 @@ import java.util.HashMap;
 
 public class ERPDocking {
     public static boolean loginstatus = false;
-    //楚楚
-//    String url = "http://124.71.196.182:8001/rest/ws_v2/basicDrp";
-    //德莱宝
+
     String url = "http://192.168.3.89:8001/rest/ws_v2/basicDrp";
 
-    public ERPDocking() {
-//        try {
-//            login();
-//        } catch (YosException e) {
-//            System.err.println(e.getMessage());
-//        }
+    public ERPDocking(String siteid) {
+
+        if (siteid.equalsIgnoreCase("DLB")) {
+            url = "http://192.168.3.89:8001/rest/ws_v2/basicDrp";
+        }
+        if (siteid.equalsIgnoreCase("CCYOSG")) {
+            url = "http://124.71.196.182:8001/rest/ws_v2/basicDrp";
+        }
+        System.err.println(siteid+":"+url);
     }
 
     /*