Kaynağa Gözat

申请圆通电子面单号改为批量

hu 4 ay önce
ebeveyn
işleme
deb3845778

+ 7 - 0
src/custom/beans/data/BatchDeleteErr.java

@@ -23,6 +23,13 @@ public class BatchDeleteErr {
         array.add(object);
         return this;
     }
+    public BatchDeleteErr addErr(String billno, String errmsg) {
+        JSONObject object = new JSONObject();
+        object.put("billno", billno);
+        object.put("errmsg", errmsg);
+        array.add(object);
+        return this;
+    }
 
     public boolean isEmpty() {
         return array.isEmpty();

+ 14 - 1
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -314,12 +314,25 @@ public class aftersalesmag extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_aftersalesmag_items", "t4", "t1.sa_aftersalesmagid = t4.sa_aftersalesmagid AND t1.siteid = t4.siteid", "name", "phonenumber", "address",
                 "stockdate", "enddate", "model", "spec", "unitname", "itemname", "itemno", "duty", "demand", "machinecode", "qty", "itemid");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t5", "t5.sku = t4.machinecode AND t5.siteid = t4.siteid", "cardno");
+//        querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t5", "t5.sku = t4.machinecode AND t5.siteid = t4.siteid", "cardno");
         querySQL.addQueryFields("remarksdetail", "t4.remarks");
         querySQL.addQueryFields("reasondetail", "t4.reason");
         querySQL.setSiteid(siteid);
         querySQL.setWhere("t1.sa_aftersalesmagid", sa_aftersalesmagid);
         Rows rows = querySQL.query();
+        for(Row row :rows){
+            if(StringUtils.isBlank(row.getString("machinecode"))){
+                row.put("cardno","");
+            }else{
+                Rows warrantycardrows = dbConnect.runSqlQuery("select cardno from sa_warrantycard where sku='"+row.getString("machinecode")+"'");
+                if(warrantycardrows.isEmpty()){
+                    row.put("cardno","");
+                }else{
+                    row.put("cardno",warrantycardrows.get(0).getString("cardno"));
+                }
+
+            }
+        }
         return getSucReturnObject().setData(rows).toString();
     }
 

+ 107 - 93
src/custom/restcontroller/webmanage/sale/expressform/expressform.java

@@ -202,7 +202,7 @@ public class expressform extends Controller {
             JSONObject whereObject = content.getJSONObject("where");
             if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
                 where.append(" and(");
-                where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("t1.txlogisticid like'%").append(whereObject.getString("condition")).append("%' ");
                 where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
                 where.append(")");
             }
@@ -471,104 +471,118 @@ public class expressform extends Controller {
      */
     @API(title = "申请圆通电子面单号", apiversion = R.ID2025080714245303.v1.class)
     public String applyMailNo_YTO() throws YosException {
-        long expressformid = content.getLong("expressformid");
+        JSONArray expressformids = content.getJSONArray("expressformids");
         ArrayList<String> sqlList = new ArrayList<>();
-        Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid);
-        if (rows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
-        }
-        if (rows.get(0).getBoolean("success")) {
-            return getErrReturnObject().setErrMsg("该快递信息单已成功申请电子面单!").toString();
-        } else if (StringUtils.isNotBlank(rows.get(0).getString("mailno"))) {
-            return getErrReturnObject().setErrMsg("该快递信息单已有快递面单单号,不需要重复申请!").toString();
-        } else if ("关闭".equals(rows.get(0).getString("status"))) {
-            return getErrReturnObject().setErrMsg("该快递信息单已关闭,不能申请电子面单!").toString();
-        } else if (!"YTO".equalsIgnoreCase(rows.get(0).getString("logisticproviderid"))) {
-            return getErrReturnObject().setErrMsg("目前只支持申请圆通的电子面单!").toString();
-        }
-
-        String ordertype = rows.get(0).getString("ordertype");
-        Rows expressvalRows = dbConnect.runSqlQuery("select * from expressval where siteid='" + siteid + "' and logisticproviderid='YTO' and ordertype='" + ordertype + "'");
-        if (expressvalRows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("数据表'expressVal'中,缺少圆通快递开放平台的对接信息! 发货方式: " + ordertype + ";快递公司: YTO").toString();
-        }
-
-        String url_mailno = expressvalRows.get(0).getString("url_mailno");
-        String clientId = expressvalRows.get(0).getString("clientid");
-        String partnerID = expressvalRows.get(0).getString("partnerid");
-
-        Rows expresssdrRows = dbConnect.runSqlQuery("select * from expresssdr where siteid='" + siteid + "' and expresssdrid=" + rows.get(0).getLong("expresssdrid"));
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expressform", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.expressformid", expressformids);
+        Rows rows = querySQL.query();
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, expressformids.size());
+        for(Row row : rows){
+            if (row.getBoolean("success")) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已成功申请电子面单");
+                continue;
+            } else if (StringUtils.isNotBlank(row.getString("mailno"))) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已有快递面单单号,不需要重复申请!");
+                continue;
+            } else if ("关闭".equals(row.getString("status"))) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已关闭,不能申请电子面单!");
+                continue;
+            } else if (!"YTO".equalsIgnoreCase(row.getString("logisticproviderid"))) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "目前只支持申请圆通的电子面单");
+                continue;
+            }
+            String ordertype = row.getString("ordertype");
+            Rows expressvalRows = dbConnect.runSqlQuery("select * from expressval where siteid='" + siteid + "' and logisticproviderid='YTO' and ordertype='" + ordertype + "'");
+            if (expressvalRows.isEmpty()) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "数据表'expressVal'中,缺少圆通快递开放平台的对接信息! 发货方式: " + ordertype + ";快递公司: YTO");
+                continue;
+            }
+            Rows expresssdrRows = dbConnect.runSqlQuery("select * from expresssdr where siteid='" + siteid + "' and expresssdrid=" + rows.get(0).getLong("expresssdrid"));
 
-        if (expresssdrRows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("未设置默认发件人信息").toString();
-        }
-        Person sender = new Person(expresssdrRows.get(0).getString("name"), expresssdrRows.get(0).getString("postcode"),
-                expresssdrRows.get(0).getString("phonenumber"), expresssdrRows.get(0).getString("mobile"),
-                expresssdrRows.get(0).getString("province"), expresssdrRows.get(0).getString("city") + "," + expresssdrRows.get(0).getString("county"), expresssdrRows.get(0).getString("address"));
-
-        YTOExpressMailNoClient client = new YTOExpressMailNoClient(url_mailno, clientId, partnerID, sender);
-
-        YTORequestOrder requestOrder = client.newYTORequestOrder();
-        //tradeNo,orderType,serviceType,remark
-        //rcv_name,rcv_postCode,rcv_phone,rcv_mobile,rcv_prov,rcv_city,rcv_address
-        //itemName,number,itemsweight
-        requestOrder.setTxLogisticID(rows.get(0).getString("txlogisticid"));
-        requestOrder.setTradeNo(rows.get(0).getString("tradeno"));
-        if (StringUtils.isBlank(rows.get(0).getString("ordertype"))) {
-            return getErrReturnObject().setErrMsg("未设置快递付款类型").toString();
-        }
-        requestOrder.setOrderType(rows.get(0).getInteger("ordertype"));
-        requestOrder.setServiceType(rows.get(0).getInteger("servicetype"));
-        requestOrder.setRemark(rows.get(0).getString("remarks"));
-        //if(requestOrder.getOrderType()==0 || requestOrder.getOrderType()==4) {
-        if (requestOrder.getOrderType() == 4) {
-            requestOrder.setAgencyFund(rows.get(0).getDouble("agencyfund"));
-        }
+            if (expresssdrRows.isEmpty()) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "未设置默认发件人信息");
+                continue;
+            }
+            if (StringUtils.isBlank(row.getString("ordertype"))) {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "未设置快递付款类型");
+                continue;
+            }
+            String url_mailno = expressvalRows.get(0).getString("url_mailno");
+            String clientId = expressvalRows.get(0).getString("clientid");
+            String partnerID = expressvalRows.get(0).getString("partnerid");
+            Person sender = new Person(expresssdrRows.get(0).getString("name"), expresssdrRows.get(0).getString("postcode"),
+                    expresssdrRows.get(0).getString("phonenumber"), expresssdrRows.get(0).getString("mobile"),
+                    expresssdrRows.get(0).getString("province"), expresssdrRows.get(0).getString("city") + "," + expresssdrRows.get(0).getString("county"), expresssdrRows.get(0).getString("address"));
+
+            YTOExpressMailNoClient client = new YTOExpressMailNoClient(url_mailno, clientId, partnerID, sender);
+
+            YTORequestOrder requestOrder = client.newYTORequestOrder();
+            //tradeNo,orderType,serviceType,remark
+            //rcv_name,rcv_postCode,rcv_phone,rcv_mobile,rcv_prov,rcv_city,rcv_address
+            //itemName,number,itemsweight
+            requestOrder.setTxLogisticID(row.getString("txlogisticid"));
+            requestOrder.setTradeNo(row.getString("tradeno"));
+
+            requestOrder.setOrderType(row.getInteger("ordertype"));
+            requestOrder.setServiceType(row.getInteger("servicetype"));
+            requestOrder.setRemark(row.getString("remarks"));
+            //if(requestOrder.getOrderType()==0 || requestOrder.getOrderType()==4) {
+            if (requestOrder.getOrderType() == 4) {
+                requestOrder.setAgencyFund(row.getDouble("agencyfund"));
+            }
 
-        Person receiver = new Person(rows.get(0).getString("rcv_name"), rows.get(0).getString("rcv_postcode"),
-                rows.get(0).getString("rcv_phone"), rows.get(0).getString("rcv_mobile"),
-                rows.get(0).getString("rcv_prov"), rows.get(0).getString("rcv_city") + "," + rows.get(0).getString("rcv_county"), rows.get(0).getString("rcv_address"));
-        requestOrder.setReceiver(receiver);
-
-        Item item = new Item(rows.get(0).getString("itemname"), rows.get(0).getInteger("number"), rows.get(0).getDouble("itemsweight"));
-        requestOrder.setItems(new Item[]{item});
-        //Map<String, Object> resultMap = new HashMap<>();
-        Map<String, Object> resultMap= client.sendRequestForMailNo(requestOrder);
-        if (resultMap != null) {
-            String code = (String) resultMap.get("code");
-            if ("200".equals(code)) {//成功
-                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
-                updateSQL.setUniqueid(expressformid);
-                updateSQL.setSiteid(siteid);
-                updateSQL.setDateValue("pushdate");
-                updateSQL.setValue("code", code);
-                updateSQL.setValue("mailno", (String) resultMap.get("mailNo"));
-                Map<String, String> distributeInfoMap = (Map<String, String>) resultMap.get("distributeInfo");
-                updateSQL.setValue("shortAddress", distributeInfoMap.get("shortAddress"));
-                updateSQL.setValue("consigneebranchcode", distributeInfoMap.get("consigneeBranchCode"));
-                updateSQL.setValue("packagecentercode", distributeInfoMap.get("packageCenterCode"));
-                updateSQL.setValue("packagecentername", distributeInfoMap.get("packageCenterName"));
-                updateSQL.setValue("success", 1);
-                updateSQL.setValue("changeby", username);
-                updateSQL.setDateValue("changedate");
-                sqlList.add(updateSQL.getSQL());
-            } else {//失败
-                UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
-                updateSQL.setUniqueid(expressformid);
-                updateSQL.setSiteid(siteid);
-                updateSQL.setDateValue("pushdate");
-                updateSQL.setValue("code", code);
-                updateSQL.setValue("reason", (String) resultMap.get("reason"));
-                updateSQL.setValue("success", 0);
-                updateSQL.setValue("changeby", username);
-                updateSQL.setDateValue("changedate");
-                sqlList.add(updateSQL.getSQL());
+            Person receiver = new Person(row.getString("rcv_name"), row.getString("rcv_postcode"),
+                    row.getString("rcv_phone"), row.getString("rcv_mobile"),
+                    row.getString("rcv_prov"), row.getString("rcv_city") + "," + row.getString("rcv_county"), row.getString("rcv_address"));
+            requestOrder.setReceiver(receiver);
+
+            Item item = new Item(row.getString("itemname"), row.getInteger("number"), row.getDouble("itemsweight"));
+            requestOrder.setItems(new Item[]{item});
+            //Map<String, Object> resultMap = new HashMap<>();
+            Map<String, Object> resultMap= client.sendRequestForMailNo(requestOrder);
+            if (resultMap != null) {
+                String code = (String) resultMap.get("code");
+                if ("200".equals(code)) {//成功
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
+                    updateSQL.setUniqueid(row.getLong("expressformid"));
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setDateValue("pushdate");
+                    updateSQL.setValue("code", code);
+                    updateSQL.setValue("mailno", (String) resultMap.get("mailNo"));
+                    Map<String, String> distributeInfoMap = (Map<String, String>) resultMap.get("distributeInfo");
+                    updateSQL.setValue("shortAddress", distributeInfoMap.get("shortAddress"));
+                    updateSQL.setValue("consigneebranchcode", distributeInfoMap.get("consigneeBranchCode"));
+                    updateSQL.setValue("packagecentercode", distributeInfoMap.get("packageCenterCode"));
+                    updateSQL.setValue("packagecentername", distributeInfoMap.get("packageCenterName"));
+                    updateSQL.setValue("success", 1);
+                    updateSQL.setValue("changeby", username);
+                    updateSQL.setDateValue("changedate");
+                    sqlList.add(updateSQL.getSQL());
+                } else {//失败
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
+                    updateSQL.setUniqueid(row.getLong("expressformid"));
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setDateValue("pushdate");
+                    updateSQL.setValue("code", code);
+                    updateSQL.setValue("reason", (String) resultMap.get("reason"));
+                    updateSQL.setValue("success", 0);
+                    updateSQL.setValue("changeby", username);
+                    updateSQL.setDateValue("changedate");
+                    sqlList.add(updateSQL.getSQL());
+                }
+            } else {
+                batchDeleteErr.addErr(row.getString("txlogisticid"), "请求电子面单接口超时");
+                continue;
             }
-        } else {
-            throw new YosException("请求电子面单接口超时");
         }
         dbConnect.runSqlUpdate(sqlList);
-        return getSucReturnObject().toString();
+        HashMap<String,Object> result=new HashMap<>();
+        String success= "共申请"+expressformids.size()+"张圆通电子面单号,其中失败"+ batchDeleteErr.size()+"张!";
+        result.put("success",success);
+        result.put("errinfo",batchDeleteErr.getReturnObject());
+        return getSucReturnObject().setData(result).toString();
     }
 
 

+ 1 - 0
src/custom/service/AutoCreateU8prodprice.java

@@ -19,6 +19,7 @@ public class AutoCreateU8prodprice extends ServiceController {
         ArrayList<String> sqlList = new ArrayList<>();
         if(cprkrows.isEmpty()){
             for(Row row :cprkrows){
+                System.err.println(row.getString("sqlstr"));
                 sqlList.add(row.getString("sqlstr"));
             }
         }