Jelajahi Sumber

crm对接优化,新增crm单点登录

shenjingwei 2 bulan lalu
induk
melakukan
f7e2249c6e

+ 10 - 7
src/custom/beans/itemprice/ItemPrice.java

@@ -49,7 +49,7 @@ public class ItemPrice extends BaseClass {
             if (rows.isNotEmpty()) {
                 marketprice = rows.get(0).getBigDecimal("marketprice");
             } else {
-                throw new YosException(false,"找不到商品牌价信息itemid:" + itemid);
+                throw new YosException(false, "找不到商品牌价信息itemid:" + itemid);
             }
         }
         return marketprice;
@@ -75,7 +75,7 @@ public class ItemPrice extends BaseClass {
                 gradediscountrate = (gradediscountrate.compareTo(BigDecimal.ZERO) == 0 ? new BigDecimal(1) : gradediscountrate);
             } else {
                 //throw new YosException("找不到商品等级价格信息itemid:" + itemid);
-                price =BigDecimal.ZERO;
+                price = BigDecimal.ZERO;
 
 
             }
@@ -117,6 +117,10 @@ public class ItemPrice extends BaseClass {
         return graderateprice;
     }
 
+    public BigDecimal getGradediscountrate() throws YosException {
+        return gradediscountrate;
+    }
+
     private static HashMap<String, Rows> contractRowscacheMap = new HashMap<>();
 
     /**
@@ -177,11 +181,10 @@ public class ItemPrice extends BaseClass {
         return contractprice;
     }
 
-    public BigDecimal getPromotionPrice(long sa_promotionid,long sa_promotion_itemsid) throws YosException {
-
+    public BigDecimal getPromotionPrice(long sa_promotionid, long sa_promotion_itemsid) throws YosException {
 
 
-        Rows rows = dbConnect.runSqlQuery("SELECT price FROM sa_promotion_itemprice t1 INNER JOIN sys_enterprise t2 ON t1.pricegrade=t2.grade AND t1.siteid=t2.siteid WHERE t1.sa_promotionid = " + sa_promotionid + " and t1.siteid='" + controller.siteid + "' and t1.sa_promotion_itemsid='" + sa_promotion_itemsid + "' and t2.sys_enterpriseid="+sys_enterpriseid);
+        Rows rows = dbConnect.runSqlQuery("SELECT price FROM sa_promotion_itemprice t1 INNER JOIN sys_enterprise t2 ON t1.pricegrade=t2.grade AND t1.siteid=t2.siteid WHERE t1.sa_promotionid = " + sa_promotionid + " and t1.siteid='" + controller.siteid + "' and t1.sa_promotion_itemsid='" + sa_promotion_itemsid + "' and t2.sys_enterpriseid=" + sys_enterpriseid);
         if (rows.isNotEmpty()) {
             return rows.get(0).getBigDecimal("price");
         }
@@ -256,7 +259,7 @@ public class ItemPrice extends BaseClass {
         contract_itemQuery.addParameter("itemid", itemid);
         Rows contract_itemRows = dbConnect.runSqlQuery(contract_itemQuery.getSQL());
         if (contract_itemRows.size() > 1) {
-            throw new YosException(false,"存在一个以上的价格协议信息:" + itemid);
+            throw new YosException(false, "存在一个以上的价格协议信息:" + itemid);
         } else if (contract_itemRows.size() == 1) {
             //类型:折扣系数、指定单价
             String type = contract_itemRows.get(0).getString("type");
@@ -291,7 +294,7 @@ public class ItemPrice extends BaseClass {
         contract_itemQuery.addParameter("itemid", itemid);
         Rows contract_itemRows = dbConnect.runSqlQuery(contract_itemQuery.getSQL());
         if (contract_itemRows.size() > 1) {
-            throw new YosException(false,"存在一个以上的价格协议信息:" + itemid);
+            throw new YosException(false, "存在一个以上的价格协议信息:" + itemid);
         } else if (contract_itemRows.size() == 1) {
             //商品价格
             BigDecimal price = contract_itemRows.get(0).getBigDecimal("price");

+ 17 - 0
src/custom/common/crm/bean/SQL/订单出库记录查询.sql

@@ -0,0 +1,17 @@
+SELECT t2.sonum      as fsonum,
+       t3.checkdate,
+       t3.billno     as fbillnum,
+       t1.itemno     as fitemno,
+       t1.itemname   as fitemname,
+       t1.model      as fmodel,
+       ''            as fspec,
+       ''            as funitname,
+       t1.price         ftaxprice,
+       t1.qty           fqty,
+       t1.amount        ftaxamount,
+       t3.status     as fstatus,
+       t3.isreceiver as fisreceiver
+FROM st_stockbill_items t1
+         INNER JOIN sa_order t2 ON t1.sa_orderid = t2.sa_orderid
+         INNER JOIN st_stockbill t3 ON t1.st_stockbillid = t3.st_stockbillid
+WHERE t2.sa_orderid = $sa_orderid$

+ 22 - 0
src/custom/common/crm/bean/SQL/订单表体查询.sql

@@ -0,0 +1,22 @@
+SELECT
+    t1.sa_orderitemsid AS saorderdetailid,
+    t1.sonum AS fsonum,
+    t1.rowno AS frownum,
+    t1.itemno AS fitemno,
+    t1.itemname AS fitemname,
+    t1.model AS fmodel,
+    t1.spec fspec,
+    t1.unit funitname,
+    qty AS fqty,
+    price AS fprice,
+    pricerate AS fpricerate1,
+    rwpricerate AS frateprice2,
+    amount AS famount,
+    undeliqty AS fundeliqty,
+    isclose AS fisclose,
+    remarks AS fnotes,
+    delivery AS fsendmode
+FROM
+    sa_orderitems t1
+WHERE
+    sa_orderid = $sa_orderid$

+ 23 - 0
src/custom/common/crm/bean/SQL/订单表头查询.sql

@@ -0,0 +1,23 @@
+SELECT t1.sa_orderid     AS saorderid,
+       t1.sonum          AS fsonum,
+       t1.type           AS ftype,
+       t1.billdate       AS fdate,
+       t3.balance        AS fbalance,
+       t3.creditquota    AS fcreditbal,
+       t3.discountamount AS fdiscountamount,
+       t3.freezamount    AS ffreezamount,
+       t1.createby,
+       t1.createdate,
+       t1.submitby,
+       t1.submitdate,
+       t1.checkby,
+       t1.checkdate,
+       t1.closeby,
+       t1.closedate,
+       t1.`status`       AS fstatus,
+       t1.custnum        AS fcustomnum,
+       t1.custsonum      AS forderno
+FROM sa_order t1
+         LEFT JOIN sa_accountbalance t3
+                   ON t1.sa_accountclassid = t3.sa_accountclassid and t1.sys_enterpriseid = t3.sys_enterpriseid
+WHERE  t1.sonum in $sonum$

+ 27 - 59
src/custom/common/crm/bean/core/CrmBase.java

@@ -9,14 +9,7 @@ import common.data.Rows;
 import common.data.db.DBConnect;
 import org.apache.logging.log4j.Logger;
 
-import javax.net.ssl.HttpsURLConnection;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.HttpURLConnection;
 import java.net.URI;
-import java.net.URL;
 import java.net.URLEncoder;
 import java.net.http.HttpClient;
 import java.net.http.HttpRequest;
@@ -72,13 +65,14 @@ public abstract class CrmBase extends BaseClass {
                 boolean isSuccess = response.statusCode() == 200;
                 try {
                     JSONObject resultObject = JSONObject.parseObject(response.body());
-                    //System.err.println(resultObject);
                     if (!resultObject.getBooleanValue("success")) {
                         isSuccess = false;
+                        logger.error("crm登录失败", resultObject);
                     } else {
-                        cookie = resultObject.getJSONObject("data").getString("cookie");
+                        cookie = resultObject.getJSONObject("data").getString("cookie", true);
                     }
                 } catch (Exception e) {
+                    logger.error("crm登录失败", e);
                     isSuccess = false;
                 }
                 if (isSuccess) {
@@ -95,7 +89,17 @@ public abstract class CrmBase extends BaseClass {
         try {
             HttpRequest request = HttpRequest.newBuilder().uri(URI.create(baseurl + url)).header("Content-Type", "application/json").header("Cookie", cookie).POST(HttpRequest.BodyPublishers.ofString(content)).build();
             HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
-            return response.body();
+            String result = response.body();
+            try {
+                JSONObject resultObject = JSONObject.parseObject(result);
+                if (resultObject.getStringValue("code").equals("20001")) {
+                    System.err.println("[POST请求]向地址:" + url + " 登录失败!再次登录中" + resultObject);
+                    sessionExpiresTime = 0;
+                    login();
+                }
+            } catch (Exception e) {
+            }
+            return result;
         } catch (Exception e) {
             throw new YosException(e);
         }
@@ -103,59 +107,23 @@ public abstract class CrmBase extends BaseClass {
 
     public String getCRM(String url) throws YosException {
         login();
-        url = url.startsWith("/") ? url : ("/" + url);
-        PrintWriter writer = null;
-        BufferedReader reader = null;
-        StringBuilder result = new StringBuilder();
-        HttpURLConnection conn = null;
-
         try {
-            URL realUrl = new URL(baseurl + url);
-            if (url.startsWith("https")) {
-                conn = (HttpsURLConnection) realUrl.openConnection();
-            } else {
-                conn = (HttpURLConnection) realUrl.openConnection();
-            }
-
-            conn.setRequestProperty("Content-Type", "application/json");
-            conn.setRequestProperty("accept", "*/*");
-            conn.setRequestProperty("connection", "Keep-Alive");
-            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
-            conn.setRequestProperty("Cookie", cookie);
-
-            conn.setConnectTimeout(3000);
-            conn.setDoOutput(true);
-            conn.setDoInput(true);
-
-            reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8));
-
-            String line;
-            while ((line = reader.readLine()) != null) {
-                result.append(line);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-            System.err.println("[POST请求]向地址:" + url + " 发送数据:发生错误!");
-        } finally {
-            if (writer != null) {
-                writer.close();
-                PrintWriter var21 = null;
-            }
-            if (reader != null) {
-                try {
-                    reader.close();
-                } catch (IOException e) {
-                    e.printStackTrace();
+            HttpRequest request = HttpRequest.newBuilder().uri(URI.create(baseurl + url)).header("Content-Type", "application/json").header("Cookie", cookie).GET().build();
+            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
+            String result = response.body();
+            try {
+                JSONObject resultObject = JSONObject.parseObject(result);
+                if (resultObject.getStringValue("code").equals("20001")) {
+                    System.err.println("[POST请求]向地址:" + url + " 登录失败!再次登录中" + resultObject);
+                    sessionExpiresTime = 0;
+                    login();
                 }
-                BufferedReader var22 = null;
-            }
-
-            if (conn != null) {
-                conn.disconnect();
-                conn = null;
+            } catch (Exception e) {
             }
+            return result;
+        } catch (Exception e) {
+            throw new YosException(e);
         }
-        return result.toString();
     }
 
     /**

+ 23 - 21
src/custom/common/crm/bean/icstockbill_crm.java

@@ -19,28 +19,30 @@ public class icstockbill_crm extends CrmBase {
      */
     @Override
     public void autoAction() throws YosException {
-        String result = getCRM("/ext/whicstockbill/queryIcstockbills?needDetail=true&needWrc=true&fbrandId=" + fbrandId + "&fdomain=入库&ftype=报货入库单&fisuploadflag=-1");
-        JSONArray jsonArray = JSONArray.parseArray(result);
+        String url = "/ext/whicstockbill/queryIcstockbills?fbrandId=" + fbrandId + "&needDetail=true&needWrc=true&fisuploadflag=-1&fdomain=入库&ftype=报货入库单";
+        String result = getCRM(url);
+        if (!result.isBlank()) {
+            JSONArray jsonArray = JSONObject.parseObject(result).getJSONArray("data");
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JSONObject jsonObject = jsonArray.getJSONObject(i);
+                String fstatus = jsonObject.getString("fstatus");
+                String fagentNum = jsonObject.getString("fagentNum");
+                String fbillNum_crm = jsonObject.getString("fbillNum");
+                String billno = jsonObject.getString("fextNo1");
 
-        for (int i = 0; i < jsonArray.size(); i++) {
-            JSONObject jsonObject = jsonArray.getJSONObject(i);
-            String fstatus = jsonObject.getString("fstatus");
-            String fagentNum = jsonObject.getString("fagentNum");
-            String fbillNum_crm = jsonObject.getString("fbillNum");
-            String billno = jsonObject.getString("fextNo1");
-
-            if (billno != null && !billno.isEmpty()) {
-                Rows billRows = dbConnect.runSqlQuery("select * from st_stockbill where billno='" + billno + "' and crmbillno='" + fbillNum_crm + "' and isreceiver=1");
-                if ("审核".equals(fstatus) && billRows.isNotEmpty()) {
-                    logger.info("销售出库单" + billno + "已收货确认,更新crm单据同步状态为1");
-                    getCRM("/ext/whicstockbill/editUploadflag?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm + "&fisuploadflag=1&fisuploadnote=DRP反馈已到货确认,更新状态变为1");
-                } else if ("新建".equals(fstatus)) {
-                    if (billRows.isNotEmpty()) {
-                        logger.info("销售出库单" + billno + "已收货确认,审核crm报货入库单" + fbillNum_crm);
-                        getCRM("/ext/whicstockbill/checkInbBillAfterConfirm?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm);
-                    } else {
-                        logger.error("销售出库单" + billno + "未收货确认,删除crm报货入库单" + fbillNum_crm);
-                        getCRM("/ext/whicstockbill/removeInbBillAfterConfirm?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm);
+                if (billno != null && !billno.isEmpty()) {
+                    Rows billRows = dbConnect.runSqlQuery("select * from st_stockbill where billno='" + billno + "' and crmbillno='" + fbillNum_crm + "' and isreceiver=1");
+                    if ("审核".equals(fstatus) && billRows.isNotEmpty()) {
+                        logger.info("销售出库单" + billno + "已收货确认,更新crm单据同步状态为1");
+                        getCRM("/ext/whicstockbill/editUploadflag?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm + "&fisuploadflag=1&fisuploadnote=DRP反馈已到货确认,更新状态变为1");
+                    } else if ("新建".equals(fstatus)) {
+                        if (billRows.isNotEmpty()) {
+                            logger.info("销售出库单" + billno + "已收货确认,审核crm报货入库单" + fbillNum_crm);
+                            getCRM("/ext/whicstockbill/checkInbBillAfterConfirm?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm);
+                        } else {
+                            logger.error("销售出库单" + billno + "未收货确认,删除crm报货入库单" + fbillNum_crm);
+                            getCRM("/ext/whicstockbill/removeInbBillAfterConfirm?fbrandId=" + fbrandId + "&fbillnum=" + fbillNum_crm);
+                        }
                     }
                 }
             }

+ 163 - 3
src/custom/common/crm/bean/saorder.java

@@ -1,9 +1,19 @@
 package common.crm.bean;
 
+import beans.enterprise.Enterprise;
+import beans.itemprice.ItemPrice;
 import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
 import common.YosException;
-import org.apache.logging.log4j.Logger;
 import common.crm.bean.core.CrmBase;
+import common.data.*;
+import org.apache.logging.log4j.Logger;
+
+import java.math.BigDecimal;
+import java.time.Year;
+import java.time.YearMonth;
+import java.time.temporal.IsoFields;
 
 public class saorder extends CrmBase {
     public saorder(Logger logger) {
@@ -16,8 +26,158 @@ public class saorder extends CrmBase {
     }
 
     //根据订单号,查询网销订单
-    public JSONArray querySaorderList(String fagentnum, String[] fsonums) {
+    public JSONObject querySaorderList(String fagentnum, String[] fsonums) {
+        logger.info("网销订单查询", String.join(",", fsonums));
+        JSONObject resultObject = new JSONObject();
+        JSONObject dataObject = new JSONObject();
+        dataObject.put("fagentnum", fagentnum);
+        try {
+            dataObject.put("data", querySaorder(fsonums));
+            resultObject.put("msg", "成功");
+            resultObject.put("code", 1);
+            resultObject.put("data", dataObject);
+        } catch (Exception e) {
+            logger.error("网销订单查询失败", e);
+            resultObject.put("msg", e.getMessage());
+            resultObject.put("code", 0);
+        }
+        return resultObject;
+    }
+
+    public JSONObject insertSaorder(JSONObject crmOrder) {
+        logger.info("网销订单生成", crmOrder);
+        JSONObject resultObject = new JSONObject();
+        try {
+            Controller controller = getSysController("MD");
+            Rows agentRows = dbConnect.runSqlQuery("select * from sa_agents where agentnum ='" + crmOrder.getStringValue("fagentnum") + "'");
+
+            Rows accountclassRows = dbConnect.runSqlQuery("select * from sa_accountclass where siteid='MD' and accountno='01'");
+            if (agentRows.isNotEmpty()) {
+
+                SQLDump sqlDump = new SQLDump();
+                long sys_enterpriseid = agentRows.get(0).getLong("sys_enterpriseid");
+
+                BigDecimal rwpricerate = new BigDecimal(1);
+                if (agentRows.get(0).getDouble("pricerate") > 0 && agentRows.get(0).getInteger("year") == Year.now().getValue() && agentRows.get(0).getInteger("quarter") == YearMonth.now().get(IsoFields.QUARTER_OF_YEAR)) {
+                    rwpricerate = agentRows.get(0).getBigDecimal("pricerate");
+                }
+
+                Row enterprise = Enterprise.getEnterprise(controller, sys_enterpriseid);
+
+                Rows financeRows = dbConnect.runSqlQuery("select * from sys_enterprise_finance where siteid='MD' and sys_enterpriseid='" + sys_enterpriseid + "' and isdefault=1");
+
+                InsertSQL orderInsert = SQLFactory.createInsertSQL(dbConnect, "sa_order");
+                String sonum = orderInsert.createBillCode("MD", "orderbill");
+                orderInsert.setValue("siteid", "MD");
+                orderInsert.setValue("sonum", sonum);
+                orderInsert.setValue("contact", crmOrder.getStringValue("fcontact"));
+                orderInsert.setValue("address", crmOrder.getStringValue("faddress"));
+                orderInsert.setValue("phonenumber", crmOrder.getStringValue("fphonenumber"));
+                orderInsert.setValue("billdate", getDate_Str());
+                orderInsert.setValue("sys_enterpriseid", sys_enterpriseid);
+                orderInsert.setValue("pay_enterpriseid", sys_enterpriseid);
+                orderInsert.setValue("sa_accountclassid", accountclassRows.get(0).getLong("sa_accountclassid"));
+                orderInsert.setValue("type", crmOrder.getStringValue("ftype"));
+                if (financeRows.isNotEmpty()) {
+                    orderInsert.setValue("sys_enterprise_financeid", financeRows.get(0).getLong("sys_enterprise_financeid"));
+                    orderInsert.setValue("invoicetaxno", financeRows.get(0).getString("taxno"));
+                    orderInsert.setValue("invoiceaddress", financeRows.get(0).getString("address"));
+                    orderInsert.setValue("invoicename", financeRows.get(0).getString("enterprisename"));
+                }
+                orderInsert.setValue("county", enterprise.getString("county"));
+                orderInsert.setValue("province", enterprise.getString("province"));
+                orderInsert.setValue("city", enterprise.getString("city"));
+                orderInsert.setValue("status", "新建");
+                orderInsert.setValue("tradefield", "默认");
+                orderInsert.setValue("sa_brandid", 1);
+                orderInsert.setValue("createflag", 0);
+                orderInsert.setValue("custnum", crmOrder.getStringValue("fcustomnum"));
+                orderInsert.setValue("custsonum", crmOrder.getStringValue("forderno"));
+                orderInsert.setValue("createby", crmOrder.getStringValue("createby"));
+                orderInsert.setValue("changeby", crmOrder.getStringValue("createby"));
 
-        return new JSONArray();
+                sqlDump.add(orderInsert);
+
+
+                JSONArray saorderdetail = crmOrder.getJSONArray("saorderdetail");
+                for (int i = 0; i < saorderdetail.size(); i++) {
+                    JSONObject detail = saorderdetail.getJSONObject(i);
+                    String fitemno = detail.getStringValue("fitemno");
+                    Rows itemRows = dbConnect.runSqlQuery("select * from plm_item where siteid='MD' and itemno='" + fitemno + "'");
+                    BigDecimal custamount = itemRows.get(0).getBigDecimal("custamount");
+
+                    BigDecimal qty = detail.getBigDecimal("fqty");
+                    long itemid = itemRows.get(0).getLong("itemid");
+                    ItemPrice itemPrice = ItemPrice.getItemPrice(controller, sys_enterpriseid, itemid);
+                    InsertSQL orderitemInsert = SQLFactory.createInsertSQL(dbConnect, "sa_orderitems");
+                    orderitemInsert.setValue("siteid", "MD");
+                    orderitemInsert.setValue("sa_orderid", orderInsert.getUniqueid());
+                    orderitemInsert.setValue("sonum", sonum);
+                    orderitemInsert.setValue("rowno", i + 1);
+                    orderitemInsert.setValue("itemid", itemid);
+                    orderitemInsert.setValue("itemno", fitemno);
+                    orderitemInsert.setValue("itemname", itemRows.get(0).getString("itemname"));
+                    orderitemInsert.setValue("model", itemRows.get(0).getString("model"));
+                    Rows unitRows = itemRows.get(0).getRows("plm_unit", "unitid=:unitid");
+                    if (unitRows.isNotEmpty()) {
+                        orderitemInsert.setValue("unit", unitRows.get(0).getString("unitname"));
+                    }
+                    orderitemInsert.setValue("undeliqty", qty.doubleValue());
+                    orderitemInsert.setValue("saleprice", itemPrice.getGraderateprice().doubleValue());//销售单价
+                    orderitemInsert.setValue("custamount", custamount.doubleValue());//客户档案资料费
+                    BigDecimal defaultprice = itemPrice.getGraderateprice().multiply(rwpricerate);
+                    orderitemInsert.setValue("defaultprice", defaultprice.doubleValue());//折前价(元)
+                    orderitemInsert.setValue("defaultamount", defaultprice.multiply(qty).doubleValue());//折前金额(元)
+                    orderitemInsert.setValue("marketprice", itemPrice.getMarketprice().doubleValue());//牌价(元)
+                    orderitemInsert.setValue("price", defaultprice.add(custamount).doubleValue());//单价,折后价(元)
+                    orderitemInsert.setValue("amount", defaultprice.add(custamount).multiply(qty).doubleValue());//金额,折后金额(元)
+                    //orderitemInsert.setValue("needdate", "");//需求日期,根据交期计算
+                    orderitemInsert.setValue("qty", qty.doubleValue());
+                    orderitemInsert.setValue("batchcontrol", itemRows.get(0).getBoolean("batchcontrol"));
+                    orderitemInsert.setValue("spec", itemRows.get(0).getBoolean("spec"));
+                    orderitemInsert.setValue("pricerate", itemPrice.getGradediscountrate().doubleValue());
+
+                    orderitemInsert.setValue("rwpricerate", rwpricerate.doubleValue());
+                    orderitemInsert.setValue("delivery", detail.getStringValue("fsendmode"));
+                    orderitemInsert.setValue("remarks", detail.getStringValue("fnotes"));
+                    sqlDump.add(orderitemInsert);
+                }
+                sqlDump.commit();
+
+                resultObject.put("fagentnum", crmOrder.getStringValue("fagentnum"));
+                resultObject.put("data", querySaorder(sonum));
+            }
+        } catch (Exception e) {
+            logger.error("网销订单创建失败", e);
+            resultObject.put("code", 0);
+            resultObject.put("msg", e.getMessage());
+            return resultObject;
+        }
+        resultObject.put("code", 1);
+        resultObject.put("msg", "");
+        return resultObject;
     }
+
+    public JSONArray querySaorder(String... sonums) throws YosException {
+        SQLFactory orderQuery = new SQLFactory(this, "订单表头查询");
+        orderQuery.addParameter_in("sonum", sonums);
+        Rows orderHead = orderQuery.runSqlQuery(dbConnect);
+        for (Row row : orderHead) {
+            long sa_orderid = row.getLong("saorderid");
+            SQLFactory orderDetailQuery = new SQLFactory(this, "订单表体查询");
+            orderDetailQuery.addParameter("sa_orderid", sa_orderid);
+            Rows orderDetail = orderDetailQuery.runSqlQuery(dbConnect);
+            row.put("qty", orderDetail.sum("qty"));
+            row.put("amount", orderDetail.sum("amount"));
+            row.put("saorderdetail", orderDetail);
+
+            SQLFactory outLogQuery = new SQLFactory(this, "订单出库记录查询");
+            outLogQuery.addParameter("sa_orderid", sa_orderid);
+            Rows outlog = outLogQuery.runSqlQuery(dbConnect);
+            row.put("icstockbilldetail", outlog);
+        }
+        return orderHead.toJsonArray();
+    }
+
+
 }

+ 15 - 10
src/custom/common/crm/crm_put.java

@@ -5,6 +5,7 @@ import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import common.YosLogger;
 import common.crm.bean.icstockbill;
+import common.crm.bean.saorder;
 import common.crm.bean.sku_crm;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
@@ -15,15 +16,16 @@ import org.springframework.web.bind.annotation.*;
 @RequestMapping("/rest/put")
 public class crm_put {
 
-    @GetMapping("/confirmReceiveBill")
+    @RequestMapping(value = "/confirmReceiveBill", method = RequestMethod.GET)
     @ResponseBody
     public String confirmReceiveBill(HttpServletRequest request, HttpServletResponse response, @RequestParam("fagentnum") String fagentnum, @RequestParam("fcrmbillnum") String fcrmbillnum, @RequestParam("icstockbillids") String[] icstockbillids, @RequestParam("token") String token) {
         return new icstockbill(YosLogger.logger).confirmReceiveBill(fagentnum, fcrmbillnum, icstockbillids).toString();
     }
 
-    @GetMapping("/modifyTmachinecodes")
+    @RequestMapping(value = "/modifyTmachinecodes", method = RequestMethod.POST)
+    @PostMapping
     @ResponseBody
-    public String modifyTmachinecodes(HttpServletRequest request, HttpServletResponse response, @RequestBody String body, @RequestParam("token") String token) {
+    public String modifyTmachinecodes(HttpServletRequest request, HttpServletResponse response, @RequestBody String body, @RequestParam(value = "token", required = false) String token) {
         JSONArray result = new JSONArray();
         JSONArray jsonArray = JSON.parseArray(body);
         sku_crm skuCrm = new sku_crm(YosLogger.logger);
@@ -36,20 +38,23 @@ public class crm_put {
         return result.toJSONString();
     }
 
-    @GetMapping("/updateDRPWarrantycard")
+    //crm移除保修卡更新相关功能
+    @RequestMapping(value = "/updateDRPWarrantycard", method = RequestMethod.POST)
+    @PostMapping
     @ResponseBody
-    public String updateDRPWarrantycard(HttpServletRequest request, HttpServletResponse response, @RequestParam("fagentnum") String fagentnum, @RequestParam("fcrmbillnum") String fcrmbillnum, @RequestParam("icstockbillids") String[] icstockbillids, @RequestParam("token") String token) {
+    public String updateDRPWarrantycard(HttpServletRequest request, HttpServletResponse response, @RequestBody String body, @RequestParam(value = "token", required = false) String token) {
         return "";
     }
 
-
-    @GetMapping("/insertSaorder")
+    @RequestMapping(value = "/insertSaorder", method = RequestMethod.POST)
+    @PostMapping
     @ResponseBody
-    public String insertSaorder(HttpServletRequest request, HttpServletResponse response, @RequestParam("fagentnum") String fagentnum, @RequestParam("fcrmbillnum") String fcrmbillnum, @RequestParam("icstockbillids") String[] icstockbillids, @RequestParam("token") String token) {
-        return "";
+    public String insertSaorder(HttpServletRequest request, HttpServletResponse response, @RequestBody String body, @RequestParam(value = "token", required = false) String token) {
+        JSONObject jsonObject = JSON.parseObject(body);
+        saorder saorder = new saorder(YosLogger.logger);
+        return saorder.insertSaorder(jsonObject).toJSONString();
     }
 
-
     public JSONObject getSuccessResult() {
         JSONObject object = new JSONObject();
         object.put("code", 1);

+ 3 - 1
src/custom/common/crm/sso.java

@@ -15,6 +15,7 @@ import common.restful.Basic;
 import jakarta.servlet.http.HttpServletRequest;
 import jakarta.servlet.http.HttpServletResponse;
 import jakarta.servlet.http.HttpSession;
+import org.springframework.stereotype.Controller;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -24,8 +25,10 @@ import utility.tools.WebRequest;
 
 import java.util.HashMap;
 
+@Controller
 @RequestMapping("/rest/sso")
 public class sso extends Basic {
+
     @RequestMapping("/crm")
     @PostMapping
     @ResponseBody
@@ -57,7 +60,6 @@ public class sso extends Basic {
         String accountno = requestcontent.getString("accountno");
         String inputpassword = requestcontent.getString("password");//即crm的sessionid
 
-
         String systemclient = requestcontent.getString("systemclient");//登陆操作端
         if (connect.runSqlQuery("select systemclient from sys_systemclient where systemclient='" + systemclient + "'").isEmpty()) {
             this.createLoginLog(RequestContent, request, false, new JSONArray(), "不存在的操作端");