Browse Source

Merge remote-tracking branch 'origin/develop' into develop

shenjingwei 1 week ago
parent
commit
61710f914c

+ 15 - 0
src/custom/beans/itemclass/ItemClass.java

@@ -114,6 +114,21 @@ public class ItemClass extends BaseClass {
         sqlFactory.addParameter_in("itemid", itemids);
         return controller.dbConnect.runSqlQuery(sqlFactory).toRowsMap("itemid");
     }
+
+    /**
+     * 查询货品的上级分类名称
+     *
+     * @param controller
+     * @param itemids
+     * @return
+     * @throws YosException
+     */
+    public static RowsMap getAllItemUpperClassRowsMap_new(Controller controller, ArrayList<Long> itemids) throws YosException {
+        SQLFactory sqlFactory = new SQLFactory(new ItemClass(), "查询货品的上级营销分类");
+        sqlFactory.addParameter("siteid", controller.siteid);
+        sqlFactory.addParameter_in("itemid", itemids);
+        return controller.dbConnect.runSqlQuery(sqlFactory).toRowsMap("classtype");
+    }
     /**
      * 查询货品的所有分类名称
      *

+ 5 - 0
src/custom/beans/itemclass/SQL/查询货品的上级营销分类.sql

@@ -0,0 +1,5 @@
+SELECT t1.itemid, t3.itemclassname,t3.itemclassfullname,t3.classtype,t3.itemclassid,t3.itemclassnum
+from sa_itemsaleclass t1
+         INNER JOIN plm_itemclass t2 ON t2.itemclassid = t1.itemclassid and t2.siteid = t1.siteid
+         INNER JOIN plm_itemclass t3 ON t3.itemclassid = t2.parentid and t3.siteid = t2.siteid
+WHERE t1.itemid IN $itemid$

+ 47 - 43
src/custom/beans/stockbill/bills/XSCK.java

@@ -205,6 +205,14 @@ public class XSCK extends BasicBill {
                             sqlList.add("update st_stockbill_items set wmsuploadflag2=0 where st_stockbill_itemsid=" + row.getLong("st_stockbill_itemsid"));
                         }
                     }
+
+                    int orderautoclosepoint = Parameter.getInteger(siteid, "orderautoclosepoint");
+                    if(orderautoclosepoint==2){
+                        ArrayList<Long> sa_orderids = itemRows.toArrayList("sa_orderid",new ArrayList<>());
+                        for(Long sa_orderid : sa_orderids){
+                            sqlList.add("update sa_order set status='审核',closeby='',closedate=NULL where sa_orderid=" +sa_orderid);
+                        }
+                    }
                 }else{
                     QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_tpartreimbursementdetail", "sa_tpartreimbursementdetailid","isverified","qty","sa_orderitemsid");
                     querySQL.setTableAlias("t1");
@@ -232,13 +240,7 @@ public class XSCK extends BasicBill {
                     }
 
                 }
-                int orderautoclosepoint = Parameter.getInteger(siteid, "orderautoclosepoint");
-                if(orderautoclosepoint==2){
-                    ArrayList<Long> sa_orderids = itemRows.toArrayList("sa_orderid",new ArrayList<>());
-                    for(Long sa_orderid : sa_orderids){
-                        sqlList.add("update sa_order set status='审核',closeby='',closedate=NULL where sa_orderid=" +sa_orderid);
-                    }
-                }
+
             }
 
 
@@ -296,6 +298,44 @@ public class XSCK extends BasicBill {
                             sqlList.add("update st_stockbill_items set wmsuploadflag2=1 where st_stockbill_itemsid=" + row.getLong("st_stockbill_itemsid"));
                         }
                     }
+                    //判断是否关闭订单
+                    int orderautoclosepoint = Parameter.getInteger(siteid, "orderautoclosepoint");
+                    if(orderautoclosepoint==2){
+                        ArrayList<Long> sa_orderids = itemRows.toArrayList("sa_orderid",new ArrayList<>());
+                        QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_order", "sa_orderid");
+                        querySQL.addJoinTable(BaseClass.JOINTYPE.inner, "sa_orderitems", "t2", "t2.sa_orderid = t1.sa_orderid and t2.siteid = t1.siteid",
+                                "undeliqty","sa_orderitemsid");
+                        querySQL.setTableAlias("t1");
+                        querySQL.setWhere("t1.siteid", siteid);
+                        querySQL.setWhere("t1.sa_orderid", sa_orderids);
+                        querySQL.setWhere("t1.status='审核' and t2.undeliqty!=0");
+                        Rows rows = querySQL.query();
+                        RowsMap rowsMap =rows.toRowsMap("sa_orderid");
+                        RowsMap itemRowsMap=itemRows.toRowsMap("sa_orderid");
+                        for(Long sa_orderid : sa_orderids){
+                            Rows stockbillitemrows = itemRowsMap.getOrDefault(String.valueOf(sa_orderid),new Rows());
+                            Rows orderrows = rowsMap.getOrDefault(String.valueOf(sa_orderid),new Rows());
+                            RowsMap stockbillitemrowsMap =stockbillitemrows.toRowsMap("sa_orderitemsid");
+                            int count=0;
+                            for(Row row : orderrows){
+                                if(stockbillitemrowsMap.containsKey(row.getString("sa_orderitemsid"))){
+                                    if(stockbillitemrowsMap.getOrDefault(row.getString("sa_orderitemsid"),new Rows()).sum("qty").compareTo(row.getBigDecimal("undeliqty"))==0){
+                                        count++;
+                                    }
+                                }
+                            }
+
+                            if(orderrows.size()==count){
+                                sqlList.add("update sa_order set status='关闭',closeby='"+controller.username+"',closedate=CURRENT_TIME where sa_orderid=" +sa_orderid);
+                                sqlList.add("UPDATE sa_accountbalance t1 " +
+                                        "INNER JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
+                                        "SET t1.freezamount = case when ifnull(t1.freezamount,0)>t2.amount then t1.freezamount-t2.amount else 0 end " +
+                                        "WHERE t1.sa_accountbalanceid="+accountbalancerows.get(0).getLong("sa_accountbalanceid")+" and t2.sourcetable='sa_order' and t2.sourceid="+sa_orderid);
+                                sqlList.add("delete from sa_accountbalance_freez t1 WHERE t1.sourcetable='sa_order' and t1.sourceid="+sa_orderid);
+                            }
+                        }
+
+                    }
                 }else{
                     QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_tpartreimbursementdetail", "sa_tpartreimbursementid","sa_tpartreimbursementdetailid","isverified","qty","sa_orderitemsid");
                     querySQL.setTableAlias("t1");
@@ -322,43 +362,7 @@ public class XSCK extends BasicBill {
                         sqlList.add("update sa_orderitems set verifiedqty=ifnull(verifiedqty,0)-"+row.getBigDecimal("sumqty")+" where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
                     }
                 }
-                //判断是否关闭订单
-                int orderautoclosepoint = Parameter.getInteger(siteid, "orderautoclosepoint");
-                if(orderautoclosepoint==2){
-                    ArrayList<Long> sa_orderids = itemRows.toArrayList("sa_orderid",new ArrayList<>());
-                    QuerySQL querySQL = SQLFactory.createQuerySQL(controller, "sa_order", "sa_orderid");
-                    querySQL.addJoinTable(BaseClass.JOINTYPE.inner, "sa_orderitems", "t2", "t2.sa_orderid = t1.sa_orderid and t2.siteid = t1.siteid",
-                            "undeliqty","sa_orderitemsid");
-                    querySQL.setTableAlias("t1");
-                    querySQL.setWhere("t1.siteid", siteid);
-                    querySQL.setWhere("t1.sa_orderid", sa_orderids);
-                    querySQL.setWhere("t1.status='审核' and t2.undeliqty!=0");
-                    Rows rows = querySQL.query();
-                    RowsMap rowsMap =rows.toRowsMap("sa_orderid");
-                    RowsMap itemRowsMap=itemRows.toRowsMap("sa_orderid");
-                    for(Long sa_orderid : sa_orderids){
-                        Rows stockbillitemrows = itemRowsMap.getOrDefault(String.valueOf(sa_orderid),new Rows());
-                        Rows orderrows = rowsMap.getOrDefault(String.valueOf(sa_orderid),new Rows());
-                        RowsMap stockbillitemrowsMap =stockbillitemrows.toRowsMap("sa_orderitemsid");
-                        int count=0;
-                        for(Row row : orderrows){
-                            if(stockbillitemrowsMap.containsKey(row.getString("sa_orderitemsid"))){
-                                if(stockbillitemrowsMap.getOrDefault(row.getString("sa_orderitemsid"),new Rows()).sum("qty").compareTo(row.getBigDecimal("undeliqty"))==0){
-                                    count++;
-                                }
-                            }
-                        }
-                        if(orderrows.size()==count){
-                            sqlList.add("update sa_order set status='关闭',closeby='"+controller.username+"',closedate=CURRENT_TIME where sa_orderid=" +sa_orderid);
-                            sqlList.add("UPDATE sa_accountbalance t1 " +
-                                    "INNER JOIN sa_accountbalance_freez t2 ON t1.sa_accountbalanceid = t2.sa_accountbalanceid " +
-                                    "SET t1.freezamount = case when ifnull(t1.freezamount,0)>t2.amount then t1.freezamount-t2.amount else 0 end " +
-                                    "WHERE t1.sa_accountbalanceid="+accountbalancerows.get(0).getLong("sa_accountbalanceid")+" and t2.sourcetable='sa_order' and t2.sourceid="+sa_orderid);
-                            sqlList.add("delete from sa_accountbalance_freez t1 WHERE t1.sourcetable='sa_order' and t1.sourceid="+sa_orderid);
-                        }
-                    }
 
-                }
 
             }
 

+ 4 - 0
src/custom/restcontroller/R.java

@@ -7008,6 +7008,10 @@ public class R {
         public static class v1 {
         }
     }
+    public static class ID2025122609083103 {
+        public static class v1 {
+        }
+    }
 
 }
 

+ 1 - 1
src/custom/restcontroller/sale/stockbill/stockbill.java

@@ -127,7 +127,7 @@ public class stockbill extends Controller {
                 return getSucReturnObject().toString();
             }else{
                 System.err.println(jsonObject);
-                return getErrReturnObject().toString();
+                return getErrReturnObject().setErrMsg(jsonObject.getString("msg")).toString();
             }
         }else{
             return getSucReturnObject().toString();

+ 8 - 0
src/custom/restcontroller/webmanage/sale/accessoryorder/accessoryorder.java

@@ -588,6 +588,14 @@ public class accessoryorder extends Controller {
             where = where + " and DATE_FORMAT(t1.begindate, '%Y-%m-%d') <='" + skudate + "'";
             where = where + " and DATE_FORMAT(t1.enddate, '%Y-%m-%d') >='" + skudate + "'";
         }
+        if (content.containsKey("where")) {
+            JSONObject whereObject = content.getJSONObject("where");
+            if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
+                where = where + " and (t1.itemno like'%" + whereObject.getString("condition")
+                        + "%' or t1.itemname like'%" + whereObject.getString("condition")
+                        + "%' or t3.model like'%" + whereObject.getString("condition") + "%' ) ";
+            }
+        }
 
         Long sa_orderid = content.getLong("sa_orderid");
         Rows orderRows = getOrderRows(this, sa_orderid);

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

@@ -160,6 +160,19 @@ public class OrderItems extends Controller {
                     }
                 }
                 sqlList.add(orderItemsHelper.getUpdateSQL(sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, 0,0).getSQL());
+                if(StringUtils.isNotBlank(item.getStringValue("cardno"))){
+                    Rows aftersalesbomrows = dbConnect.runSqlQuery("select t2.sa_aftersalesbomid from sa_warrantycard t1 inner join sa_aftersalesbom_items t2 on t1.itemid=t2.itemid inner join sa_aftersalesbom t3 on t2.sa_aftersalesbomid=t3.sa_aftersalesbomid where t1.cardno='"+item.getStringValue("cardno")+"' and t3.status='审核'");
+                    if(aftersalesbomrows.isNotEmpty()){
+                        Rows aftersalesbompjrows = dbConnect.runSqlQuery("select qty from sa_aftersalesbom_pjs t1 where t1.sa_aftersalesbomid="+aftersalesbomrows.get(0).getString("sa_aftersalesbomid")+" and t1.itemid="+itemid);
+                        if(aftersalesbompjrows.isNotEmpty()){
+                            sqlList.add("update sa_orderitems set canoffqty="+(aftersalesbompjrows.get(0).getBigDecimal("qty").compareTo(qty)>0?qty:aftersalesbompjrows.get(0).getBigDecimal("qty"))+" where sa_orderitemsid=" + sa_orderitemsid);
+                        }else{
+                            sqlList.add("update sa_orderitems set canoffqty=1 where sa_orderitemsid=" + sa_orderitemsid);
+                        }
+                    }else{
+                        sqlList.add("update sa_orderitems set canoffqty=1 where sa_orderitemsid=" + sa_orderitemsid);
+                    }
+                }
             }
 
 

+ 151 - 12
src/custom/restcontroller/webmanage/sale/sendplan/sendplandetail.java

@@ -20,6 +20,119 @@ public class sendplandetail extends Controller {
         super(content);
     }
 
+    @API(title = "订单信息刷新(新)", apiversion = R.ID2025122609083103.v1.class)
+    public String orderRefresh_newtest() throws YosException {
+        long sa_sendplanid = content.getLongValue("sa_sendplanid");
+        Rows sendplanRows = dbConnect.runSqlQuery("select * from sa_sendplan where sa_sendplanid='" + sa_sendplanid + "' and siteid='" + siteid + "'");
+        if (sendplanRows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("发货计划不存在,无法进行订单信息刷新").toString();
+        }
+        dbConnect.runSqlUpdate("delete from sa_sendplandetail where sa_sendplanid='" + sa_sendplanid + "' and siteid='" + siteid + "'");
+        /*
+          过滤条件设置
+         */
+        StringBuffer where = new StringBuffer(" 1=1 and t1.undeliqty>0 and t3.type='" + sendplanRows.get(0).getString("type")
+                + "' and  DATE_FORMAT(t3.checkdate, '%Y-%m-%d') >='" + sendplanRows.get(0).getString("begindate")
+                + "' and  DATE_FORMAT(t3.checkdate, '%Y-%m-%d') <='" + sendplanRows.get(0).getString("enddate")
+                + "' and ( \n" +
+                "\t\t(t3.type in('标准订单','网销订单')) or\n" +
+                "\t\t(\n" +
+                "\t\t\tt3.type='配件订单'\n" +
+                "\t\t\tand t3.sys_enterpriseid in (\n" +
+                "\t\t\tselect distinct sys_enterpriseid from st_stockbill \n" +
+                "\t\t\twhere type='销售出库'  and status='审核' and \n" +
+                "\t\t\tbilldate= '" + sendplanRows.get(0).getString("senddate") + "'\n" +
+                "\t\t\t)\n" +
+                "\t\t))");
+
+        SQLFactory sqlFactory = new SQLFactory(this, "发货计划订单未发货量(新)");
+        sqlFactory.addParameter_SQL("where", where);
+        sqlFactory.addParameter("siteid", siteid);
+        Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
+
+        Rows stockbillrows = dbConnect.runSqlQuery("select t2.itemid,sum(t2.undeliqty) qty from sa_order t1 " +
+                " inner join sa_orderitems t2 on t1.sa_orderid=t2.sa_orderid " +
+                " where t1.status='审核' and t2.isclose=0 and t2.undeliqty>0 and t1.siteid='" + siteid + "' " +
+                " group by t2.itemid ");
+        Rows invbalSalerows = dbConnect.runSqlQuery("select itemid,qty from st_invbal_sale");
+
+        RowsMap stockbillrowsMap = stockbillrows.toRowsMap("itemid");
+        RowsMap invbalSalerowsMap = invbalSalerows.toRowsMap("itemid");
+
+        ArrayList<String> list = new ArrayList<>();
+
+        long oldItemid= 0;
+        BigDecimal oldWilloutqty = BigDecimal.ZERO;
+        BigDecimal oldCanuseqty = BigDecimal.ZERO;
+        BigDecimal oldSendqty = BigDecimal.ZERO;
+        long[] sendplandetailids = createTableID("sa_sendplandetail", rows.size());
+        int i=0;
+        for (Row row :rows) {
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_sendplandetail");
+            insertSQL.setUniqueid(sendplandetailids[i++]);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("sa_sendplanid", sa_sendplanid);
+            insertSQL.setValue("sa_orderid", row.getLong("sa_orderid"));
+            insertSQL.setValue("sa_orderitemsid", row.getLong("sa_orderitemsid"));
+            insertSQL.setValue("outplace", row.getString("outplace"));
+            insertSQL.setValue("sa_agentsid", row.getString("sa_agentsid"));
+            BigDecimal willoutqty = BigDecimal.ZERO;
+            BigDecimal invbalqty = BigDecimal.ZERO;
+            if (stockbillrowsMap.containsKey(row.getString("itemid"))) {
+                willoutqty = stockbillrowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
+            }
+            if (invbalSalerowsMap.containsKey(row.getString("itemid"))) {
+                // 查询库存总量
+                invbalqty = invbalSalerowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
+            }
+            insertSQL.setValue("willinqty", willoutqty);
+            insertSQL.setValue("sendqty", getBigDecimalOrZero(row.getBigDecimal("sendqty")));
+
+
+            long currentitemid = row.getLong("itemid");
+
+            if (oldItemid == 0 || oldItemid!=currentitemid) {
+                // 新物料
+                oldWilloutqty =willoutqty;
+
+                oldCanuseqty = invbalqty.subtract(oldWilloutqty);
+            } else {
+                // 相同物料
+                oldCanuseqty = oldCanuseqty.subtract(oldSendqty);
+                oldWilloutqty = oldWilloutqty.add(oldSendqty);
+            }
+
+            // 设置计算后的值
+            insertSQL.setValue("canuseqty",oldCanuseqty);
+            insertSQL.setValue("willinqty",oldWilloutqty);
+
+
+            // 如果可用量<=0,设置发货量为0
+            if (oldCanuseqty.compareTo(BigDecimal.ZERO) <= 0) {
+                insertSQL.setValue("sendqty",BigDecimal.ZERO);
+                insertSQL.setValue("colorflag", 0);
+            }else{
+                if (oldCanuseqty.compareTo(row.getBigDecimal("sendqty")) >= 0) {
+                    insertSQL.setValue("colorflag", 2);
+                } else {
+                    insertSQL.setValue("colorflag", 3);
+                }
+            }
+
+            // 保存当前值供下次循环使用
+            oldItemid = currentitemid;
+            oldSendqty = getBigDecimalOrZero(row.getBigDecimal("sendqty")).compareTo(BigDecimal.ZERO)>0?getBigDecimalOrZero(row.getBigDecimal("sendqty")):BigDecimal.ZERO;
+            list.add(insertSQL.getSQL());
+        }
+        dbConnect.runSqlUpdate(list);
+        list = new ArrayList<>();
+        Rows rows1 = dbConnect.runSqlQuery("select t1.sa_orderid from (select sa_orderid,count(0)count from sa_sendplandetail where sa_sendplanid=" + sa_sendplanid + " group by sa_orderid) t1 inner join (select sa_orderid,count(0)count from sa_sendplandetail where colorflag='2' and  sa_sendplanid=" + sa_sendplanid + "  group by sa_orderid) t2 on  t1.sa_orderid=t2.sa_orderid and t1.count=t2.count");
+        for (Row row : rows1) {
+            list.add("update sa_sendplandetail set colorflag=1 where sa_sendplanid=" + sa_sendplanid + " and sa_orderid =" + row.getLong("sa_orderid"));
+        }
+        return getSucReturnObject().toString();
+    }
+
     //ID2025120110193103
     @API(title = "订单信息刷新(新)", apiversion = R.ID2025120110193103.v1.class)
     public String orderRefresh_new() throws YosException {
@@ -55,14 +168,15 @@ public class sendplandetail extends Controller {
                 " inner join sa_orderitems t2 on t1.sa_orderid=t2.sa_orderid " +
                 " where t1.status='审核' and t2.isclose=0 and t2.undeliqty>0 and t1.siteid='" + siteid + "' " +
                 " group by t2.itemid ");
-        Rows invbalrows = dbConnect.runSqlQuery("select itemid,sum(qty) qty from st_invbal t1 group by itemid");
+        Rows invbalSalerows = dbConnect.runSqlQuery("select itemid,qty from st_invbal_sale");
 
         RowsMap stockbillrowsMap = stockbillrows.toRowsMap("itemid");
-        RowsMap invbalrowsMap = invbalrows.toRowsMap("itemid");
+        RowsMap invbalSalerowsMap = invbalSalerows.toRowsMap("itemid");
 
         ArrayList<String> list = new ArrayList<>();
         long olditemid = 0;
         BigDecimal oldcanuseqty = BigDecimal.ZERO;
+        BigDecimal oldwilloutqty = BigDecimal.ZERO;
         BigDecimal oldsendqty = BigDecimal.ZERO;
         long[] sendplandetailids = createTableID("sa_sendplandetail", rows.size());
         int i = 0;
@@ -84,26 +198,32 @@ public class sendplandetail extends Controller {
             if (stockbillrowsMap.containsKey(row.getString("itemid"))) {
                 willoutqty = stockbillrowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
             }
-            if (invbalrowsMap.containsKey(row.getString("itemid"))) {
-                invbalqty = invbalrowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
+            if (invbalSalerowsMap.containsKey(row.getString("itemid"))) {
+                invbalqty = invbalSalerowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
             }
             canuseqty = invbalqty.subtract(willoutqty);
 
-            insertSQL.setValue("willoutqty", willoutqty);
+
             insertSQL.setValue("willinqty", 0);
             insertSQL.setValue("canuseqty", canuseqty);
 
+
+
             if (row.getLong("itemid") == olditemid) {
+                insertSQL.setValue("willoutqty", (oldwilloutqty.compareTo(BigDecimal.ZERO) == 0 ? willoutqty : oldwilloutqty).add(oldsendqty));
                 insertSQL.setValue("canuseqty", (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty));
                 newcanuseqty=(oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
-                oldcanuseqty = (oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
+                oldcanuseqty=(oldcanuseqty.compareTo(BigDecimal.ZERO) == 0 ? canuseqty : oldcanuseqty).subtract(oldsendqty);
+
             } else {
+                insertSQL.setValue("willoutqty", willoutqty);
                 insertSQL.setValue("canuseqty", canuseqty);
                 newcanuseqty=canuseqty;
             }
 
             if (newcanuseqty.compareTo(BigDecimal.ZERO) <= 0) {
-                insertSQL.setValue("sendqty", 0);
+                sendqty=BigDecimal.ZERO;
+                insertSQL.setValue("sendqty", sendqty);
                 insertSQL.setValue("colorflag", 0);
             } else {
                 sendqty = row.getBigDecimal("sendqty");
@@ -192,11 +312,11 @@ public class sendplandetail extends Controller {
                 " inner join sa_orderitems t2 on t1.sa_orderid=t2.sa_orderid " +
                 " where t1.status='审核' and t2.isclose=0 and t2.undeliqty>0 and t1.siteid='" + siteid + "' " +
                 " group by t2.itemid ");
-        Rows invbalrows = dbConnect.runSqlQuery("select itemid,sum(qty) qty from st_invbal t1 group by itemid");
+        Rows invbalSalerows = dbConnect.runSqlQuery("select itemid,qty from st_invbal_sale");
         Rows sendplandetails = dbConnect.runSqlQuery("select t1.sa_sendplandetailid,t1.sa_orderid,t2.itemid,t1.sendqty from sa_sendplandetail t1 inner join sa_orderitems t2 on t1.sa_orderitemsid=t2.sa_orderitemsid and t1.siteid=t2.siteid where t1.sa_sendplanid=" + sa_sendplanid + " and t1.siteid='" + siteid + "' order by t2.sa_orderid desc");
 
         RowsMap stockbillrowsMap = stockbillrows.toRowsMap("itemid");
-        RowsMap invbalrowsMap = invbalrows.toRowsMap("itemid");
+        RowsMap invbalSalerowsMap = invbalSalerows.toRowsMap("itemid");
         for (Row row : sendplandetails) {
             BigDecimal canuseqty = BigDecimal.ZERO;
             BigDecimal willoutqty = BigDecimal.ZERO;
@@ -206,8 +326,8 @@ public class sendplandetail extends Controller {
             if (stockbillrowsMap.containsKey(row.getString("itemid"))) {
                 willoutqty = stockbillrowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
             }
-            if (invbalrowsMap.containsKey(row.getString("itemid"))) {
-                invbalqty = invbalrowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
+            if (invbalSalerowsMap.containsKey(row.getString("itemid"))) {
+                invbalqty = invbalSalerowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty");
             }
             canuseqty = invbalqty.subtract(willoutqty);
             updateSQL.setValue("willoutqty", willoutqty);
@@ -517,6 +637,17 @@ public class sendplandetail extends Controller {
         querySQL_ck.setWhere("t1.itemid", rows.toArrayList("itemid"));
         Rows rows_ck = querySQL_ck.query();
         RowsMap rowsCkRowsMap = rows_ck.toRowsMap("stockno");
+
+
+        QuerySQL querySQL_cksale = SQLFactory.createQuerySQL(this, "st_invbal_sale", "itemid", "qty");
+        querySQL_cksale.setTableAlias("t1");
+        querySQL_cksale.setSiteid(siteid);
+        querySQL_cksale.setWhere("t1.itemid", rows.toArrayList("itemid"));
+        Rows rows_cksale = querySQL_cksale.query();
+        RowsMap rows_cksaleRowsMap = rows_cksale.toRowsMap("itemid");
+
+
+
         for (Row row : rows) {
             if (rowsCkRowsMap.containsKey("101")) {
                 if (rowsCkRowsMap.get("101").toRowsMap("itemid").containsKey(row.getString("itemid"))) {
@@ -548,6 +679,12 @@ public class sendplandetail extends Controller {
                 row.put("qty_mq", 0);
             }
 
+            if (rows_cksaleRowsMap.containsKey(row.getString("itemid"))) {
+                row.put("qty_total", rows_cksaleRowsMap.get(row.getString("itemid")).get(0).getBigDecimal("qty"));
+            } else{
+                row.put("qty_total", 0);
+            }
+
         }
         return getSucReturnObject().setData(rows).toString();
     }
@@ -585,5 +722,7 @@ public class sendplandetail extends Controller {
 
         return result.toString();
     }
-
+    private BigDecimal getBigDecimalOrZero(BigDecimal value) {
+        return value != null ? value : BigDecimal.ZERO;
+    }
 }

+ 4 - 0
src/custom/restcontroller/webmanage/sale/serviceorder/SQL/序列号查询.sql

@@ -3,6 +3,8 @@ select * from ((SELECT
                     t5.contact,
                     t5.phonenumber,
                     t5.address,
+                    t5.enterprisename,
+                    t5.abbreviation,
                     case when ifnull(t6.cardno,'')='' then '未安装' else '已安装' end isinstalled,
                     t6.cardno,
                     t6.begdate,
@@ -40,6 +42,8 @@ select * from ((SELECT
                     t5.contact,
                     t5.phonenumber,
                     t5.address,
+                    t5.enterprisename,
+                    t5.abbreviation,
                     case when ifnull(t6.cardno,'')='' then '未安装' else '已安装' end isinstalled,
                     t6.cardno,
                     t6.begdate,

+ 25 - 22
src/custom/restcontroller/webmanage/sale/serviceorder/serviceorder.java

@@ -287,7 +287,7 @@ public class serviceorder extends Controller {
         ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
         RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
 
-//        RowsMap warrantycardRowsMap = SQLFactory.createQuerySQL(this, "sa_warrantycard", "sku","name", "phonenumber","address","sa_customersid","province","city","county").setWhere("sku", rows.toArrayList("sku")).query().toRowsMap("sku");
+        RowsMap warrantycardRowsMap = SQLFactory.createQuerySQL(this, "sa_warrantycard", "sku","name", "phonenumber","address","sa_customersid","province","city","county").setWhere("sku", rows.toArrayList("sku")).query().toRowsMap("sku");
 
         for (Row row : rows) {
             if (attRowsMap.getOrDefault(row.getString("itemid"), new Rows()).isNotEmpty()) {
@@ -295,25 +295,25 @@ public class serviceorder extends Controller {
             } else {
                 row.put("attinfos", defaultImageRows);
             }
-//            String sku = row.getString("sku");
-//            if (warrantycardRowsMap.containsKey(sku) && warrantycardRowsMap.get(sku).isNotEmpty()) {
-//                Row warrantycardRow = warrantycardRowsMap.get(sku).get(0);
-//                row.put("name", warrantycardRow.getString("name"));
-//                row.put("phonenumber", warrantycardRow.getString("phonenumber"));
-//                row.put("address", warrantycardRow.getString("address"));
-//                row.put("sa_customersid", warrantycardRow.getLong("sa_customersid"));
-//                row.put("province", warrantycardRow.getString("province"));
-//                row.put("city", warrantycardRow.getString("city"));
-//                row.put("county", warrantycardRow.getString("county"));
-//            }else{
-//                row.put("name", "");
-//                row.put("phonenumber", "");
-//                row.put("address","");
-//                row.put("sa_customersid", "");
-//                row.put("province", "");
-//                row.put("city", "");
-//                row.put("county", "");
-//            }
+            String sku = row.getString("sku");
+            if (warrantycardRowsMap.containsKey(sku) && warrantycardRowsMap.get(sku).isNotEmpty()) {
+                Row warrantycardRow = warrantycardRowsMap.get(sku).get(0);
+                row.put("name", warrantycardRow.getString("name"));
+                row.put("phonenumber", warrantycardRow.getString("phonenumber"));
+                row.put("address", warrantycardRow.getString("address"));
+                row.put("sa_customersid", warrantycardRow.getLong("sa_customersid"));
+                row.put("province", warrantycardRow.getString("province"));
+                row.put("city", warrantycardRow.getString("city"));
+                row.put("county", warrantycardRow.getString("county"));
+            }else{
+                row.put("name", "");
+                row.put("phonenumber", "");
+                row.put("address","");
+                row.put("sa_customersid", "");
+                row.put("province", "");
+                row.put("city", "");
+                row.put("county", "");
+            }
 
         }
 
@@ -965,7 +965,7 @@ public class serviceorder extends Controller {
         dbConnect.runSqlUpdate("update sa_workorder set verificationcode='" + verificationCode + "' where sa_workorderid=" + sa_workorderid);
         Rows wxserviceRows = dbConnect.runSqlQuery("select t2.userid from sys_wechatapp_openids t1 inner join sys_users t2 on t1.userid=t2.userid where t2.phonenumber='" + customerphone + "'");
         Row row = new Row();
-        if (wxserviceRows.isEmpty()) {
+        if (wxserviceRows.isNotEmpty()) {
             ArrayList<Long> userids = wxserviceRows.toArrayList("userid", new ArrayList<>());
             JSONObject extradata = new JSONObject();
             extradata.put("extraUserList", userids);
@@ -1015,6 +1015,8 @@ public class serviceorder extends Controller {
         }
         long createuserid = rows.get(0).getLong("createuserid");
         String type = rows.get(0).getString("type");
+        Rows rows_nterprise = dbConnect.runSqlQuery("select t1.userid from sys_users t1 inner join sys_enterprise_hr t2 on t1.userid = t2.userid where t2.sys_enterpriseid=84846");
+        RowsMap rows_nterpriseMap = rows_nterprise.toRowsMap("userid");
         Rows userrows = dbConnect.runSqlQuery("select t2.usertype,t1.phonenumber from  sys_users t1 inner join sys_usersite t2 on t1.userid = t2.userid where t2.siteid = '" + siteid + "' and t1.userid=" + createuserid);
         long usertype = 0;
         if (userrows.isNotEmpty()) {
@@ -1031,9 +1033,10 @@ public class serviceorder extends Controller {
             }
         }
         String code = content.getStringValue("code");
+
         boolean isgeneralcompletioncode = Parameter.getBoolean(siteid, "isgeneralcompletioncode");
         String generalcompletioncode = Parameter.getString(siteid, "generalcompletioncode");
-        if (isgeneralcompletioncode) {
+        if (isgeneralcompletioncode || rows_nterpriseMap.containsKey(createuserid)) {
             if (!code.equals(generalcompletioncode)) {
                 if (!message_map.containsKey(customerphone) || !message_map.get(customerphone).check(code)) {
                     return getErrReturnObject().setErrMsg("验证码错误或者过期").toString();

+ 2 - 0
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -418,6 +418,7 @@ public class stockbill extends Controller {
             querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise_contacts", "t4", "t1.rec_contactsid=t4.contactsid and t1.siteid = t4.siteid");
             querySQL.addJoinTable(JOINTYPE.left, "sa_accountbalance", "t5", "t5.sys_enterpriseid=t1.sys_enterpriseid and t1.siteid = t5.siteid and t5.sa_accountclassid =(select t1.sa_accountclassid from sa_accountclass t1 where t1.siteid='" + siteid + "' and t1.accountname='现金账户')",
                     "discountamount");
+            //querySQL.addJoinTable(JOINTYPE.left, "(select dataid,table_name,count(0) as printcount from sys_report_session  GROUP BY dataid,table_name)", "t11", "t11.dataid=t1.st_stockbillid and t11.table_name='st_stockbill'", "printcount");
             querySQL.addQueryFields("recname", "t4.name");
             querySQL.addQueryFields("recphonenumber", "t4.phonenumber");
             querySQL.addQueryFields("recaddress", "t4.address");
@@ -444,6 +445,7 @@ public class stockbill extends Controller {
         querySQL.setWhere(where);
         querySQL.setCondition("t1.billno", "t1.outplace", "t3.agentnum", " t2.enterprisename", "t6.depname");
         querySQL.setPage(pageSize, pageNumber);
+        System.err.println(querySQL.getSQL());
         Rows rows = querySQL.query();
 
 

+ 2 - 1
src/custom/restcontroller/webmanage/sale/toolscode/SQL/商品序列号档案详情查询.sql

@@ -21,6 +21,7 @@ SELECT
 	t1.changedate,
 	t3.agentnum ,
 	t4.enterprisename,
+    t4.abbreviation,
 	t5.stockno,
 	t5.stockname,
     t6.changenotes
@@ -28,7 +29,7 @@ FROM
 	sa_itemsku t1
 	LEFT JOIN plm_item t2 ON t1.itemid = t2.itemid 
 	AND t1.siteid = t2.siteid
-	LEFT JOIN sa_agents t3 ON t1.sa_agentsid = t3.sa_agentsid
+	LEFT JOIN sa_agents t3 ON t1.sys_enterpriseid = t3.sys_enterpriseid
 	AND t1.siteid = t3.siteid
     LEFT JOIN sys_enterprise t4 ON t3.sys_enterpriseid = t4.sys_enterpriseid
         AND t3.siteid = t4.siteid

+ 2 - 2
src/custom/restcontroller/webmanage/sale/toolscode/toolscode.java

@@ -340,8 +340,8 @@ public class toolscode extends Controller {
         skuQuery.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid", "itemid", "itemno", "itemname", "spec", "model", "topclassnum");
         skuQuery.addJoinTable(JOINTYPE.left, "plm_unit", "t3", "t2.unitid=t3.unitid");
         skuQuery.addJoinTable(JOINTYPE.left, "st_stock", "t4", "t4.stockno=t2.stockno");
-        skuQuery.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t1.sys_enterpriseid=t5.sys_enterpriseid", "t5.enterprisename","abbreviation");
-        skuQuery.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t1.sys_enterpriseid=t6.sys_enterpriseid", "t6.agentnum");
+        skuQuery.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t1.sys_enterpriseid=t5.sys_enterpriseid", "enterprisename","abbreviation");
+        skuQuery.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t1.sys_enterpriseid=t6.sys_enterpriseid", "agentnum");
         skuQuery.addJoinTable(JOINTYPE.left, "st_stock", "t7", "t1.stockid=t7.stockid", "stockno", "stockname");
 
         skuQuery.addQueryFields("itemstockno", "t2.stockno");

+ 16 - 7
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursement.java

@@ -524,6 +524,13 @@ public class tpartreimbursement extends Controller {
         amount=sumamountRows.sum("payamount").subtract(rows1.sum("payamount"));
         discountamount=sumamountRows.sum("paydiscountamount").subtract(rows1.sum("paydiscountamount"));
 
+        if(discountamount.compareTo(BigDecimal.ZERO)<0){
+            discountamount=BigDecimal.ZERO;
+        }
+        if(amount.compareTo(BigDecimal.ZERO)<0){
+            amount=BigDecimal.ZERO;
+        }
+
         JSONArray sa_tpartreimbursementdetailids = content.getJSONArray("sa_tpartreimbursementdetailids");
         JSONArray iteminfos = content.getJSONArray("iteminfos");
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail", "sa_tpartreimbursementdetailid","isverified","qty","sa_orderitemsid","hongbillno");
@@ -696,13 +703,15 @@ public class tpartreimbursement extends Controller {
             Integer sa_tpartreimbursementdetailid = (Integer) object;
             sqllist.add("update sa_tpartreimbursementdetail set hongbillno='"+billno+"' where sa_tpartreimbursementdetailid="+sa_tpartreimbursementdetailid);
         }
-        if (discountamount.compareTo(totalamount) > 0) {
-            insertSQL.setValue("payamount", 0);
-            insertSQL.setValue("paydiscountamount", totalamount);
-        } else {
-            insertSQL.setValue("payamount", totalamount.subtract(discountamount));
-            insertSQL.setValue("paydiscountamount", discountamount);
-        }
+//        if (discountamount.compareTo(totalamount) > 0) {
+//            insertSQL.setValue("payamount", 0);
+//            insertSQL.setValue("paydiscountamount", totalamount);
+//        } else {
+//            insertSQL.setValue("payamount", totalamount.subtract(discountamount));
+//            insertSQL.setValue("paydiscountamount", discountamount);
+//        }
+        insertSQL.setValue("payamount", totalamount);
+        insertSQL.setValue("paydiscountamount", 0);
         if(totalamount.compareTo((discountamount.add(amount)))>0){
             return getErrReturnObject().setErrMsg("大于当月剩余可核销金额,无法核销").toString();
         }

+ 16 - 3
src/custom/restcontroller/webmanage/sale/u8/u8itemprice.java

@@ -1,6 +1,7 @@
 package restcontroller.webmanage.sale.u8;
 
 import beans.data.BatchDeleteErr;
+import beans.itemclass.ItemClass;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import common.Controller;
@@ -8,9 +9,8 @@ import common.YosException;
 import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
-import common.data.QuerySQL;
-import common.data.Rows;
-import common.data.SQLFactory;
+import common.data.*;
+import org.apache.commons.lang.StringUtils;
 import restcontroller.R;
 
 import java.util.ArrayList;
@@ -39,6 +39,7 @@ public class u8itemprice  extends Controller {
         }
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "u8itemprice","*");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.siteid = t2.siteid and t1.itemid = t2.itemid","itemno","itemname","spec","model");
+        querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t3", "t1.siteid = t3.siteid and t1.stockid = t3.stockid","stockno");
         querySQL.setTableAlias("t1");
         querySQL.setWhere("t1.siteid", siteid);
         querySQL.setWhere("t1.u8id", u8id);
@@ -46,6 +47,18 @@ public class u8itemprice  extends Controller {
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
 
+        ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
+        // 存货类别
+        RowsMap itemclassRowsMap = ItemClass.getAllItemUpperClassRowsMap_new(this, ids).get("存货").toRowsMap("itemid");
+        for (Row row : rows) {
+            String[] itemclass = itemclassRowsMap.getOrDefault(row.getString("itemid"), new Rows()).toArray("itemclassname");
+            row.put("itemclass", StringUtils.join(itemclass, ","));
+
+            String[] itemclassnum = itemclassRowsMap.getOrDefault(row.getString("itemid"), new Rows()).toArray("itemclassnum");
+            row.put("itemclassnum", StringUtils.join(itemclassnum, ","));
+
+        }
+
         return getSucReturnObject().setData(rows).toString();
     }
 

+ 40 - 19
src/custom/restcontroller/webmanage/sale/workorder/SQL/服务人员列表查询.sql

@@ -1,20 +1,41 @@
-select t1.userid,
-       t1.name,
-       t1.createby,
-       t1.createdate,
-       t1.changeby,
-       t1.remarks,
-       t1.changedate,
-       t1.phonenumber,
-       t1.status,
-       t1.accountno,
-       t2.siteid,
-       t2.usertype
-from sys_users t1
-         inner join sys_usersite t2 on t1.userid = t2.userid and t2.siteid = $siteid$
-         inner join sys_enterprise_hr t4 on t1.userid = t4.userid
-         inner join sa_agents t5 on t5.sys_enterpriseid = t4.sys_enterpriseid
-where exists(select userid,rolename from  sys_userrole a1 inner join sys_role a2 on a1.roleid=a2.roleid and userid=t1.userid and rolename like '%AGENT_FWRY%') and $where$
-  and t1.status!='DELETED' and t5.isservice=1
+select * from (select t1.userid,
+                      t1.name,
+                      t1.createby,
+                      t1.createdate,
+                      t1.changeby,
+                      t1.remarks,
+                      t1.changedate,
+                      t1.phonenumber,
+                      t1.status,
+                      t1.accountno,
+                      t2.siteid,
+                      t2.usertype,
+                      t5.sys_enterpriseid
+               from sys_users t1
+                        inner join sys_usersite t2 on t1.userid = t2.userid and t2.siteid =$siteid$
+                        inner join sys_enterprise_hr t4 on t1.userid = t4.userid
+                        inner join sa_agents t5 on t5.sys_enterpriseid = t4.sys_enterpriseid
+               where exists(select userid,rolename from  sys_userrole a1 inner join sys_role a2 on a1.roleid=a2.roleid and userid=t1.userid and rolename like '%AGENT_FWRY%')
+                 and t1.status='ACTIVE' and t5.isservice=1
+               union all
+               select t1.userid,
+                      t1.name,
+                      t1.createby,
+                      t1.createdate,
+                      t1.changeby,
+                      t1.remarks,
+                      t1.changedate,
+                      t1.phonenumber,
+                      t1.status,
+                      t1.accountno,
+                      t2.siteid,
+                      t2.usertype,
+                      t5.sys_enterpriseid
+               from sys_users t1
+                        inner join sys_usersite t2 on t1.userid = t2.userid and t2.siteid =$siteid$
+                        inner join sys_enterprise_hr t4 on t1.userid = t4.userid
+                        inner join sa_agents t5 on t5.sys_enterpriseid = t4.sys_enterpriseid
+               where t1.status='ACTIVE' and t5.isservice=1 and t2.usertype=21) t1 where $where$
 group by t1.userid, t1.name, t1.createby, t1.createdate, t1.changeby, t1.remarks,
-    t1.changedate, t1.phonenumber, t1.status, t1.accountno, t2.siteid, t2.usertype
+         t1.changedate, t1.phonenumber, t1.status, t1.accountno, t1.siteid, t1.usertype,t1.sys_enterpriseid
+

+ 7 - 5
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -175,13 +175,13 @@ public class workorder extends Controller {
             }
             if (whereObject.containsKey("usertype") && !"".equals(whereObject.getString("usertype"))) {
                 where.append(" and(");
-                where.append("t2.usertype ='").append(whereObject.getString("usertype")).append("' ");
+                where.append("t1.usertype ='").append(whereObject.getString("usertype")).append("' ");
                 where.append(")");
             }
         }
         if (sys_enterpriseid > 0) {
             where.append(" and(");
-            where.append("t4.sys_enterpriseid ='").append(sys_enterpriseid).append("' ");
+            where.append("t1.sys_enterpriseid ='").append(sys_enterpriseid).append("' ");
             where.append(")");
         }
 
@@ -194,6 +194,7 @@ public class workorder extends Controller {
         querySQL.setTableAlias("t0");
         querySQL.addJoinTable(JOINTYPE.right, sqlFactory, "t1", "t0.siteid='111'", "*");
         querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy("t1.usertype asc");
         Rows rows = querySQL.query();
         return getSucReturnObject().setData(rows).toString();
     }
@@ -295,6 +296,7 @@ public class workorder extends Controller {
                     rowsTwoLevel.add(rowOneLevel);
                 }
             }
+            RowsMap rowsOneLevelMap = rowsOneLevel.toRowsMap("parentid");
             RowsMap rowsTwoLevelMap = rowsTwoLevel.toRowsMap("parentid");
             // 附件
             ArrayList<Long> ids = rowsOneLevel.toArrayList("sa_workorder_nodeid", new ArrayList<>());
@@ -302,8 +304,8 @@ public class workorder extends Controller {
             RowsMap attRowsMap = getAttachmentUrl("sa_workorder_node", ids);
 
             RowsMap rowsMapdetails = queryWorkOrderNodedetails(sa_workorderid, row.getLong("sys_enterpriseid"),attRowsMap);
-            if (!rowsOneLevel.isEmpty()) {
-                for (Row rowOneLevel : rowsOneLevel) {
+            if (rowsOneLevelMap.containsKey("0")) {
+                for (Row rowOneLevel : rowsOneLevelMap.get("0")) {
                     long sa_workorder_template_worksid = 0;
                     if (rowOneLevel.getJSONObject("workpresetjson") == null || rowOneLevel.getJSONObject("workpresetjson").isEmpty()) {
                         if (rowsOneLevelMapWorkpreset.containsKey(rowOneLevel.getString("rownum"))) {
@@ -330,7 +332,7 @@ public class workorder extends Controller {
                     rowOneLevel.put("child", lowerRows);
                 }
             }
-            row.put("nodes", rowsOneLevel);
+            row.put("nodes",  rowsOneLevelMap.get("0"));
             /** 工单团队查询 **/
             Rows workorderteamRows = dbConnect.runSqlQuery("select t1.*,t2.phonenumber from sys_datateam t1 left join sys_users t2 on t1.userid=t2.userid where t1.siteid='" + siteid
                     + "' and t1.ownertable='sa_workorder' and t1.ownerid=" + sa_workorderid);