Ver código fonte

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

沈静伟 2 anos atrás
pai
commit
1660318ac9

+ 3 - 3
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("找不到商品牌价信息itemid:" + itemid);
+                throw new YosException(false,"找不到商品牌价信息itemid:" + itemid);
             }
         }
         return marketprice;
@@ -256,7 +256,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("存在一个以上的价格协议信息:" + itemid);
+            throw new YosException(false,"存在一个以上的价格协议信息:" + itemid);
         } else if (contract_itemRows.size() == 1) {
             //类型:折扣系数、指定单价
             String type = contract_itemRows.get(0).getString("type");
@@ -291,7 +291,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("存在一个以上的价格协议信息:" + itemid);
+            throw new YosException(false,"存在一个以上的价格协议信息:" + itemid);
         } else if (contract_itemRows.size() == 1) {
             //商品价格
             BigDecimal price = contract_itemRows.get(0).getBigDecimal("price");

+ 13 - 13
src/custom/restcontroller/sale/itemgroup/SQL/查询授权范围内的商品组商品.sql

@@ -1,13 +1,13 @@
-SELECT
-	t1.sa_itemgroupid
-FROM
-	sa_itemgroupmx t1
-	LEFT JOIN plm_item t2 ON t1.itemno = t2.itemno 
-	AND t1.siteid = t2.siteid
-	LEFT JOIN sa_itemsaleclass t4 ON t2.itemid = t4.itemid 
-	AND t2.siteid = t4.siteid
-	LEFT JOIN plm_itemclass t5 ON t5.itemclassid = t4.itemclassid 
-	AND t5.siteid = t4.siteid
-	LEFT JOIN plm_unit t6 ON t6.unitid = t2.unitid 
-	AND t6.siteid = t2.siteid
-	where  t5.itemclassid in $itemclassid$ and t1.siteid=$siteid$ and ifnull(t2.isonsale,0)=1
+SELECT t1.sa_itemgroupid,max(t7.price) maxprice,min(t7.price) minprice
+FROM sa_itemgroupmx t1
+         LEFT JOIN plm_item t2 ON t1.itemno = t2.itemno
+    AND t1.siteid = t2.siteid
+         LEFT JOIN sa_itemsaleclass t4 ON t2.itemid = t4.itemid
+    AND t2.siteid = t4.siteid
+         LEFT JOIN plm_itemclass t5 ON t5.itemclassid = t4.itemclassid
+    AND t5.siteid = t4.siteid
+         LEFT JOIN plm_unit t6 ON t6.unitid = t2.unitid
+    AND t6.siteid = t2.siteid
+         left join sa_itemprice t7 on t2.itemid = t7.itemid and t7.pricegrade = $pricegrade$
+where t5.itemclassid in $itemclassid$ and t1.siteid=$siteid$ and ifnull(t2.isonsale,0)=1
+group by t1.sa_itemgroupid

+ 138 - 125
src/custom/restcontroller/sale/itemgroup/itemgroup.java

@@ -136,8 +136,8 @@ public class itemgroup extends Controller {
                 list.add(whereObject.getLong("itemclassid"));
                 ArrayList<Long> listNew = new ArrayList<>();
                 listNew.add((long) 0);
-                for (long itemclassid:list) {
-                    if(itemclassList.contains(itemclassid)){
+                for (long itemclassid : list) {
+                    if (itemclassList.contains(itemclassid)) {
                         listNew.add(itemclassid);
                     }
                 }
@@ -172,8 +172,14 @@ public class itemgroup extends Controller {
         }
 
         factorygroupid.addParameter("siteid", siteid);
-        //System.out.println(factorygroupid.getSQL());
+        Enterprise.EnterpriseGrade enterpriseGrade = Enterprise.getEnterpriseGrade(this, sys_enterpriseid);
+        if (enterpriseGrade != null) {
+            factorygroupid.addParameter("pricegrade", enterpriseGrade.getPricegrade());
+        }else {
+            factorygroupid.addParameter("pricegrade", "1");
+        }
         Rows rowsgroupids = dbConnect.runSqlQuery(factorygroupid.getSQL());
+        RowsMap itemgroupRowMap = rowsgroupids.toRowsMap("sa_itemgroupid");
         /*
          * SQL查询参数设置并查询
          */
@@ -188,25 +194,35 @@ public class itemgroup extends Controller {
         Rows rows = dbConnect.runSqlQuery(sql);
         ArrayList<Long> itemgroupids = rows.toArrayList("sa_itemgroupid", new ArrayList<Long>());
         RowsMap itemgroupScemeRowsMap = Itemgroup.getItemgroupScemeid(this, itemgroupids);
+
         for (Row row2 : rows) {
-            ArrayList<String> list = DataTag.queryTag(this, "sa_itemgroup", row2.getLong("sa_itemgroupid"), false);
+            long sa_itemgroupid = row2.getLong("sa_itemgroupid");
+            ArrayList<String> list = DataTag.queryTag(this, "sa_itemgroup", sa_itemgroupid, false);
             row2.put("tag1", JSONArray.parseArray(JSON.toJSONString(list)));
-            HashMap<Long, ItemPrice> ItemPriceList = ItemPrice.getItemGroupPrice(this, sys_enterpriseid,
-                    row2.getLong("sa_itemgroupid"));
-            BigDecimal max = new BigDecimal(0);
-            BigDecimal min = ((ItemPrice) ItemPriceList.values().toArray()[0]).getPrice();
-            for (ItemPrice itemPrice : ItemPriceList.values()) {
-                if (itemPrice.getPrice().compareTo(max) >0) {
-                    max = itemPrice.getPrice();
-                }
-                if (itemPrice.getPrice().compareTo(min) <0) {
-                    min = itemPrice.getPrice();
-                }
+//            HashMap<Long, ItemPrice> ItemPriceList = ItemPrice.getItemGroupPrice(this, sys_enterpriseid,
+//                    row2.getLong("sa_itemgroupid"));
+//            BigDecimal max = new BigDecimal(0);
+//            BigDecimal min = ((ItemPrice) ItemPriceList.values().toArray()[0]).getPrice();
+//            for (ItemPrice itemPrice : ItemPriceList.values()) {
+//                BigDecimal itemprice = itemPrice.getPrice();
+//                if (itemprice.compareTo(max) >0) {
+//                    max = itemprice;
+//                }
+//                if (itemprice.compareTo(min) <0) {
+//                    min = itemprice;
+//                }
+//            }
+            Rows rows1 = itemgroupRowMap.get(String.valueOf(sa_itemgroupid));
+            if (rows1.isEmpty()) {
+                row2.put("maxprice", 0);
+                row2.put("minprice", 0);
+            } else {
+                row2.put("maxprice", rows1.get(0).getBigDecimal("maxprice"));
+                row2.put("minprice", rows1.get(0).getBigDecimal("minprice"));
             }
-            row2.put("maxprice", max);
-            row2.put("minprice", min);
 
-            Long id = row2.getLong("sa_itemgroupid");
+
+            Long id = sa_itemgroupid;
             if (itemgroupScemeRowsMap.get(id.toString()).isNotEmpty()) {
                 if (itemgroupScemeRowsMap.get(id.toString()).get(0).getLong("sa_customschemeid") > 0) {
                     row2.put("isscheme", true);
@@ -237,7 +253,7 @@ public class itemgroup extends Controller {
                 row.put("gradeprice", itemPrice.getMarketprice());
             }
         }
-        RowsMap itemRowsMap =itemrows.toRowsMap("itemid");
+        RowsMap itemRowsMap = itemrows.toRowsMap("itemid");
 
         //默认商品图片
         Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
@@ -252,7 +268,7 @@ public class itemgroup extends Controller {
         RowsMap itemclassRowsMap = rowsitemclass.toRowsMap("itemid");
         for (Row row : rows) {
             Rows itemRows = itemRowsMap.get(row.getString("itemid"));
-            row.put("item",itemRows);
+            row.put("item", itemRows);
 
             Rows coverRows = coverRowsMap.get(row.getString("itemid"));
             if (coverRows.isEmpty()) {
@@ -412,12 +428,12 @@ public class itemgroup extends Controller {
         SQLFactory factory = new SQLFactory(this, "商品组明细查询");
         factory.addParameter("sa_itemgroupid", content.getString("sa_itemgroupid"));
         factory.addParameter("siteid", siteid);
-        String where1=" 1=1 ";
+        String where1 = " 1=1 ";
         Rows tradefieldRows = dbConnect.runSqlQuery("SELECT DISTINCT t1.tradefield from sys_enterprise_tradefield t1  WHERE t1.sys_enterpriseid = " + sys_enterpriseid + " and t1.siteid='" + siteid + "'");
 
-        if(!tradefieldRows.isEmpty()){
-            for (Row row: tradefieldRows) {
-                where1= where1 +" or t4.tradefield like '%"+row.getString("tradefield")+"%' ";
+        if (!tradefieldRows.isEmpty()) {
+            for (Row row : tradefieldRows) {
+                where1 = where1 + " or t4.tradefield like '%" + row.getString("tradefield") + "%' ";
             }
         }
         factory.addParameter_SQL("where1", where1);
@@ -464,22 +480,22 @@ public class itemgroup extends Controller {
             for (Row row : rows) {
                 for (String value : listParmBlank) {
                     if (value.equals("color")) {
-                        JSONObject jsonObject =new JSONObject();
+                        JSONObject jsonObject = new JSONObject();
                         jsonObject.put("parm", row.getString("color"));
                         jsonObject.put("flag", true);
                         colormap.add(jsonObject);
                     } else if (value.equals("spec")) {
-                        JSONObject jsonObject =new JSONObject();
+                        JSONObject jsonObject = new JSONObject();
                         jsonObject.put("parm", row.getString("spec"));
                         jsonObject.put("flag", true);
                         specmap.add(jsonObject);
                     } else if (value.equals("material")) {
-                        JSONObject jsonObject =new JSONObject();
+                        JSONObject jsonObject = new JSONObject();
                         jsonObject.put("parm", row.getString("material"));
                         jsonObject.put("flag", true);
                         materialmap.add(jsonObject);
                     } else if (value.equals("cheek")) {
-                        JSONObject jsonObject =new JSONObject();
+                        JSONObject jsonObject = new JSONObject();
                         jsonObject.put("parm", row.getString("cheek"));
                         jsonObject.put("flag", true);
                         cheekmap.add(jsonObject);
@@ -532,11 +548,11 @@ public class itemgroup extends Controller {
             for (String value : listAll) {
                 if (value.equals("color")) {
                     factory.addParameter_SQL("where", " 1=1 " + specwhere + materialwhere + cheekwhere);
-                     System.out.println(" 1=1 " + specwhere + materialwhere + cheekwhere);
+                    System.out.println(" 1=1 " + specwhere + materialwhere + cheekwhere);
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("color"));
                             jsonObject.put("flag", true);
                             colormap.add(jsonObject);
@@ -547,7 +563,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("spec"));
                             jsonObject.put("flag", true);
                             specmap.add(jsonObject);
@@ -558,7 +574,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("material"));
                             jsonObject.put("flag", true);
                             materialmap.add(jsonObject);
@@ -569,7 +585,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("cheek"));
                             jsonObject.put("flag", true);
                             cheekmap.add(jsonObject);
@@ -579,76 +595,76 @@ public class itemgroup extends Controller {
             }
 
             for (String firstcolor : firstcolorList) {
-                boolean isexistParm=false;
-                for (Object object:colormap) {
+                boolean isexistParm = false;
+                for (Object object : colormap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstcolor)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstcolor)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstcolor);
                     jsonObject.put("flag", false);
                     colormap.add(jsonObject);
                 }
             }
             for (String firstspec : firstspecList) {
-                boolean isexistParm=false;
-                for (Object object:specmap) {
+                boolean isexistParm = false;
+                for (Object object : specmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstspec)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstspec)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstspec);
                     jsonObject.put("flag", false);
                     specmap.add(jsonObject);
                 }
             }
             for (String firstmaterial : firstmaterialList) {
-                boolean isexistParm=false;
-                for (Object object:materialmap) {
+                boolean isexistParm = false;
+                for (Object object : materialmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstmaterial)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstmaterial)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstmaterial);
                     jsonObject.put("flag", false);
                     materialmap.add(jsonObject);
                 }
             }
             for (String firstcheek : firstcheekList) {
-                boolean isexistParm=false;
-                for (Object object:cheekmap) {
+                boolean isexistParm = false;
+                for (Object object : cheekmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstcheek)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstcheek)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstcheek);
                     jsonObject.put("flag", false);
                     cheekmap.add(jsonObject);
                 }
             }
 
-            factory.addParameter_SQL("where", " 1=1 " + colorwhere + specwhere + materialwhere+cheekwhere);
+            factory.addParameter_SQL("where", " 1=1 " + colorwhere + specwhere + materialwhere + cheekwhere);
         } else {
             String where = " 1=1 ";
             for (String value : listParmNotBlank) {
                 if (value.equals("color")) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", content.getString("color"));
                     jsonObject.put("flag", true);
                     colormap.add(jsonObject);
@@ -661,7 +677,7 @@ public class itemgroup extends Controller {
 //                        }
 //                    }
                 } else if (value.equals("spec")) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", content.getString("spec"));
                     jsonObject.put("flag", true);
                     specmap.add(jsonObject);
@@ -674,7 +690,7 @@ public class itemgroup extends Controller {
 //                        }
 //                    }
                 } else if (value.equals("material")) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", content.getString("material"));
                     jsonObject.put("flag", true);
                     materialmap.add(jsonObject);
@@ -687,7 +703,7 @@ public class itemgroup extends Controller {
 //                        }
 //                    }
                 } else if (value.equals("cheek")) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", content.getString("cheek"));
                     jsonObject.put("flag", true);
                     cheekmap.add(jsonObject);
@@ -708,7 +724,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("color"));
                             jsonObject.put("flag", true);
                             colormap.add(jsonObject);
@@ -719,7 +735,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("spec"));
                             jsonObject.put("flag", true);
                             specmap.add(jsonObject);
@@ -729,7 +745,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("material"));
                             jsonObject.put("flag", true);
                             materialmap.add(jsonObject);
@@ -739,7 +755,7 @@ public class itemgroup extends Controller {
                     rows = dbConnect.runSqlQuery(factory.getSQL());
                     if (!rows.isEmpty()) {
                         for (Row row : rows) {
-                            JSONObject jsonObject =new JSONObject();
+                            JSONObject jsonObject = new JSONObject();
                             jsonObject.put("parm", row.getString("cheek"));
                             jsonObject.put("flag", true);
                             cheekmap.add(jsonObject);
@@ -750,66 +766,65 @@ public class itemgroup extends Controller {
             }
 
 
-
             for (String firstcolor : firstcolorList) {
-                boolean isexistParm=false;
-                for (Object object:colormap) {
+                boolean isexistParm = false;
+                for (Object object : colormap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstcolor)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstcolor)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstcolor);
                     jsonObject.put("flag", false);
                     colormap.add(jsonObject);
                 }
             }
             for (String firstspec : firstspecList) {
-                boolean isexistParm=false;
-                for (Object object:specmap) {
+                boolean isexistParm = false;
+                for (Object object : specmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstspec)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstspec)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstspec);
                     jsonObject.put("flag", false);
                     specmap.add(jsonObject);
                 }
             }
             for (String firstmaterial : firstmaterialList) {
-                boolean isexistParm=false;
-                for (Object object:materialmap) {
+                boolean isexistParm = false;
+                for (Object object : materialmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstmaterial)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstmaterial)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstmaterial);
                     jsonObject.put("flag", false);
                     materialmap.add(jsonObject);
                 }
             }
             for (String firstcheek : firstcheekList) {
-                boolean isexistParm=false;
-                for (Object object:cheekmap) {
+                boolean isexistParm = false;
+                for (Object object : cheekmap) {
                     JSONObject jsonObject = (JSONObject) object;
-                    if(jsonObject.getString("parm").equals(firstcheek)){
-                        isexistParm=true;
+                    if (jsonObject.getString("parm").equals(firstcheek)) {
+                        isexistParm = true;
                         break;
                     }
                 }
                 if (!isexistParm) {
-                    JSONObject jsonObject =new JSONObject();
+                    JSONObject jsonObject = new JSONObject();
                     jsonObject.put("parm", firstcheek);
                     jsonObject.put("flag", false);
                     cheekmap.add(jsonObject);
@@ -818,62 +833,61 @@ public class itemgroup extends Controller {
         }
 
 
-        colormap=jsonArraySortByField(colormap.toJSONString(),"parm","0");
-        specmap=jsonArraySortByField(specmap.toJSONString(),"parm","0");
-        materialmap=jsonArraySortByField(materialmap.toJSONString(),"parm","0");
-        cheekmap=jsonArraySortByField(cheekmap.toJSONString(),"parm","0");
-
+        colormap = jsonArraySortByField(colormap.toJSONString(), "parm", "0");
+        specmap = jsonArraySortByField(specmap.toJSONString(), "parm", "0");
+        materialmap = jsonArraySortByField(materialmap.toJSONString(), "parm", "0");
+        cheekmap = jsonArraySortByField(cheekmap.toJSONString(), "parm", "0");
 
 
-        for (Object object:colormap) {
-            boolean flag=false;
-            parm parm =JSON.parseObject(((JSONObject)object).toJSONString(),parm.class);
-            for (parm parm1:colorList) {
-                if(parm1.getParm().equals(parm.getParm())){
-                    flag=true;
+        for (Object object : colormap) {
+            boolean flag = false;
+            parm parm = JSON.parseObject(((JSONObject) object).toJSONString(), parm.class);
+            for (parm parm1 : colorList) {
+                if (parm1.getParm().equals(parm.getParm())) {
+                    flag = true;
                     break;
                 }
             }
-            if(!flag){
+            if (!flag) {
                 colorList.add(parm);
             }
         }
-        for (Object object:specmap) {
-            boolean flag=false;
-            parm parm =JSON.parseObject(((JSONObject)object).toJSONString(),parm.class);
-            for (parm parm1:specList) {
-                if(parm1.getParm().equals(parm.getParm())){
-                    flag=true;
+        for (Object object : specmap) {
+            boolean flag = false;
+            parm parm = JSON.parseObject(((JSONObject) object).toJSONString(), parm.class);
+            for (parm parm1 : specList) {
+                if (parm1.getParm().equals(parm.getParm())) {
+                    flag = true;
                     break;
                 }
             }
-            if(!flag){
+            if (!flag) {
                 specList.add(parm);
             }
         }
-        for (Object object:materialmap) {
-            boolean flag=false;
-            parm parm =JSON.parseObject(((JSONObject)object).toJSONString(),parm.class);
-            for (parm parm1:materialList) {
-                if(parm1.getParm().equals(parm.getParm())){
-                    flag=true;
+        for (Object object : materialmap) {
+            boolean flag = false;
+            parm parm = JSON.parseObject(((JSONObject) object).toJSONString(), parm.class);
+            for (parm parm1 : materialList) {
+                if (parm1.getParm().equals(parm.getParm())) {
+                    flag = true;
                     break;
                 }
             }
-            if(!flag){
+            if (!flag) {
                 materialList.add(parm);
             }
         }
-        for (Object object:cheekmap) {
-            boolean flag=false;
-            parm parm =JSON.parseObject(((JSONObject)object).toJSONString(),parm.class);
-            for (parm parm1:cheekList) {
-                if(parm1.getParm().equals(parm.getParm())){
-                    flag=true;
+        for (Object object : cheekmap) {
+            boolean flag = false;
+            parm parm = JSON.parseObject(((JSONObject) object).toJSONString(), parm.class);
+            for (parm parm1 : cheekList) {
+                if (parm1.getParm().equals(parm.getParm())) {
+                    flag = true;
                     break;
                 }
             }
-            if(!flag){
+            if (!flag) {
                 cheekList.add(parm);
             }
         }
@@ -884,8 +898,8 @@ public class itemgroup extends Controller {
         rows = dbConnect.runSqlQuery(factory.getSQL());
 
         String itemno = "";
-        if(!rows.isEmpty()){
-            itemno=rows.get(0).getString("itemno");
+        if (!rows.isEmpty()) {
+            itemno = rows.get(0).getString("itemno");
         }
 
         /**
@@ -957,16 +971,15 @@ public class itemgroup extends Controller {
     }
 
 
-
     /**
-     *	 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
+     * 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
      *
      * @param jsonArrayStr json数组字符串
-     * @param sortkeyname 根据哪个字段进行排序
-     * @param order 倒序:0;非0顺序
+     * @param sortkeyname  根据哪个字段进行排序
+     * @param order        倒序:0;非0顺序
      * @return 排序后的jsonarray
      */
-    public  JSONArray jsonArraySortByField(String jsonArrayStr,String sortkeyname, String order)  throws YosException  {
+    public JSONArray jsonArraySortByField(String jsonArrayStr, String sortkeyname, String order) throws YosException {
 
         JSONArray sortedJsonArray = new JSONArray();
 
@@ -988,7 +1001,7 @@ public class itemgroup extends Controller {
                     String strA = new String();
                     String strB = new String();
 
-                    String regEx="[\n`~!@#$%^&*()+=|{}':;',\\-_\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。, 、?]";
+                    String regEx = "[\n`~!@#$%^&*()+=|{}':;',\\-_\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。, 、?]";
 
                     String aStr = a.getStringValue(sortkeyname);
                     strA = aStr.replaceAll(regEx, "");
@@ -997,7 +1010,7 @@ public class itemgroup extends Controller {
 
                     if ("0".equals(order)) {
                         return -strA.compareTo(strB);
-                    }else {
+                    } else {
                         return strA.compareTo(strB);
                     }
 

+ 3 - 0
src/custom/restcontroller/webmanage/sale/accountclass/accountclass.java

@@ -165,6 +165,9 @@ public class accountclass extends Controller {
             }
 
         }
+        if(content.containsKey("sys_enterpriseid")){
+            sys_enterpriseid=content.getLongValue("sys_enterpriseid");
+        }
         /*
          * SQL通告板块查询参数设置并查询
          */

+ 1 - 0
src/custom/restcontroller/webmanage/sale/dispatch/SQL/发货商品列表查询.sql

@@ -10,6 +10,7 @@ SELECT t1.sa_orderitemsid,
        t1.undeliqty,
        t1.remarks,
        t1.rowno,
+       t1.customproperties,
        t3.sonum,
        t3.billdate,
        t3.createdate,

+ 32 - 18
src/custom/restcontroller/webmanage/sale/dispatch/dispatch.java

@@ -740,7 +740,10 @@ public class dispatch extends Controller {
         Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderitemsid in (select sa_orderitemsid from sa_dispatch_items where sa_dispatchid=" + sa_dispatchid + ")");
         RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
         Rows rowsDispatchDetail = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t1.rowno,t2.itemname,t2.itemno from sa_dispatch_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid);
-        RowsMap rowsMapDispatchDetail = rowsDispatchDetail.toRowsMap("itemno");
+
+
+        Rows rowsDispatchDetailGroupByItem = dbConnect.runSqlQuery("select sum(t1.qty) qty,t2.itemno from sa_dispatch_items t1 inner join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid  where t1.sa_dispatchid=" + sa_dispatchid+" group by t2.itemno");
+        RowsMap rowsMapDispatchDetailGroupByItem = rowsDispatchDetailGroupByItem.toRowsMap("itemno");
 
         JSONObject object = new JSONObject();
         object.put("classname", "getIcinvbal");
@@ -757,21 +760,41 @@ public class dispatch extends Controller {
         if(isJSONArray(result)){
             jsonArray = JSONArray.parseArray(result);
         }
+        SQLFactory sqlFactory1 = new SQLFactory(this, "商品发货数量汇总");
+        sqlFactory1.addParameter("siteid", siteid);
+        sqlFactory1.addParameter_in("itemno", rowsDispatchDetail.toArrayList("itemno",new ArrayList<>()));
+        Rows sumQtyRows = dbConnect.runSqlQuery(sqlFactory1);
+        RowsMap sumQtyRowsMap = sumQtyRows.toRowsMap("itemno");
+
         for (Object obj : jsonArray) {
             JSONObject jsonObject = (JSONObject) obj;
-            if (rowsMapDispatchDetail.containsKey(jsonObject.getString("fitemno"))) {
-                if (rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).isNotEmpty()) {
-                    rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("FQty"));
+            if (rowsMapDispatchDetailGroupByItem.containsKey(jsonObject.getString("fitemno"))) {
+                if (rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).isNotEmpty()) {
+                    rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", jsonObject.getBigDecimalValue("FQty"));
                 } else {
-                    rowsMapDispatchDetail.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", 0);
+                    rowsMapDispatchDetailGroupByItem.get(jsonObject.getString("fitemno")).get(0).put("invbalqty", 0);
                 }
             }
         }
 
+        if (Parameter.get(siteid, "dispatchinstock").equals("1")) {
+            for (Row row : rowsDispatchDetailGroupByItem) {
+                if (sumQtyRowsMap.containsKey(row.getString("itemno"))) {
+                    row.put("delinvbalqty", (row.containsKey("invbalqty")?row.getBigDecimal("invbalqty"):BigDecimal.ZERO).subtract(sumQtyRowsMap.get(row.getString("fitemno")).get(0).getBigDecimal("qty")));
+                } else {
+                    row.put("delinvbalqty", row.containsKey("invbalqty")?row.getBigDecimal("invbalqty"):BigDecimal.ZERO);
+                }
+
+                if (row.getBigDecimal("qty").compareTo(row.getBigDecimal("delinvbalqty")) > 0) {
+                    return getErrReturnObject().setErrMsg("发货商品"+row.getString("itemno")+",库存不足,无法操作复核!")
+                            .toString();
+                }
+            }
+        }
+
+
         if (!rowsDispatchDetail.isEmpty()) {
             for (Row row : rowsDispatchDetail) {
-                System.out.println(Parameter.get(siteid, "dispatchinstock"));
-                System.out.println(Parameter.get(siteid, "dispatchinstock").equals("1"));
                 if (rowsMap.get(row.getString("sa_orderitemsid")).isEmpty()) {
                     return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细不存在对应得订单行,无法复核")
                             .toString();
@@ -780,15 +803,6 @@ public class dispatch extends Controller {
                     return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的数量大于对应订单行的未发货数量,无法复核")
                             .toString();
                 }
-
-                if (Parameter.get(siteid, "dispatchinstock").equals("1")) {
-                    if (row.getBigDecimal("qty").compareTo(row.getBigDecimal("invbalqty")) > 0) {
-                        return getErrReturnObject().setErrMsg("行号为:【" + row.getString("rowno") + "】的发货单明细的数量大于erp的库存数量,无法复核")
-                                .toString();
-                    }
-                }
-
-
                 sqlList.add("update sa_orderitems set undeliqty=" + rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("undeliqty").subtract(row.getBigDecimal("qty")) + ",deliedqty=" + (row.getBigDecimal("qty").add(rowsMap.get(row.getLong("sa_orderitemsid")).get(0).getBigDecimal("deliedqty"))) + " where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
             }
         } else {
@@ -941,7 +955,7 @@ public class dispatch extends Controller {
         sqlFactory.addParameter("freightstatus", orderRows.get(0).getString("freightstatus"));
         sqlFactory.addParameter("billdate", now());
         sqlList.add(sqlFactory.getSQL());
-        RowsMap orderitemsRowsMap = dbConnect.runSqlQuery("select itemid,itemno,qty,sa_orderitemsid,sa_orderid,remarks from sa_orderitems where isfreeze=0 and siteid='" + siteid + "' and sa_orderid=" + sa_orderid).toRowsMap("sa_orderitemsid");
+        RowsMap orderitemsRowsMap = dbConnect.runSqlQuery("select itemid,itemno,qty,sa_orderitemsid,sa_orderid,remarks,customproperties from sa_orderitems where isfreeze=0 and siteid='" + siteid + "' and sa_orderid=" + sa_orderid).toRowsMap("sa_orderitemsid");
         RowsMap dispatchitemsRowsMap;
         if (dbConnect.runSqlQuery("select 1 from sys_site_parameter where siteid='" + siteid + "' and dispatch_recheck=1").isEmpty()) {
             dispatchitemsRowsMap = dbConnect.runSqlQuery("select sa_orderid,sa_orderitemsid,ifnull(sum(qty),0) qty from sa_dispatch t1 inner join sa_dispatch_items t2 on t1.siteid=t2.siteid and t1.sa_dispatchid=t2.sa_dispatchid where t1.siteid='" + siteid + "' and t1.status in ('审核','关闭') group by t1.sa_orderid,t2.sa_orderitemsid").toRowsMap("sa_orderitemsid");
@@ -978,7 +992,7 @@ public class dispatch extends Controller {
                 sqlFactory.addParameter("qty", qty);
                 sqlFactory.addParameter("batchcontrol", 0);
                 sqlFactory.addParameter("batchno", "");
-                sqlFactory.addParameter("remarks", orderRows.get(0).getString("remarks"));
+                sqlFactory.addParameter("remarks", orderitemsRows.get(0).getString("customproperties"));
                 sqlFactory.addParameter("userid", userid);
                 sqlFactory.addParameter("username", username);
                 sqlList.add(sqlFactory.getSQL());

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

@@ -21,11 +21,11 @@ import org.apache.poi.ss.usermodel.DataFormat;
 import org.apache.poi.xssf.usermodel.*;
 import restcontroller.R;
 import restcontroller.webmanage.sale.itemgroup.itemgroup;
-import sun.plugin2.main.client.MessagePassingOneWayJSObject;
 import utility.ERPDocking;
 import utility.tools.WebRequest;
 
 import java.io.IOException;
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.HashMap;
 
@@ -107,6 +107,12 @@ public class Item extends Controller {
         sqlFactory.addParameter("model", content.getString("model"));
         sqlFactory.addParameter("spec", content.getString("spec"));
         // 订单起订量
+        if(content.getBigDecimalValue("orderminqty").compareTo(BigDecimal.ZERO)<=0){
+            return getErrReturnObject().setErrMsg("起订量必须大于零").toString();
+        }
+        if(content.getBigDecimalValue("orderaddqty").compareTo(BigDecimal.ZERO)<=0){
+            return getErrReturnObject().setErrMsg("增量必须大于零").toString();
+        }
         sqlFactory.addParameter("orderminqty", content.getBigDecimalValue("orderminqty"));
         // 订单增量
         sqlFactory.addParameter("orderaddqty", content.getBigDecimalValue("orderaddqty"));

+ 134 - 98
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -113,14 +113,14 @@ public class Order extends Controller {
             sqlFactory.addParameter("sa_accountclassid", "69");
             sqlList.addAll(updateAccountclassinfos(sa_orderid, 69, sys_enterpriseid));
         } else {
-            if(type.equals("促销订单")){
-                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='"+siteid+"' and sa_promotionid="+content.getLongValue("sa_promotionid"));
-                if(!accountclassRows.isEmpty()){
+            if (type.equals("促销订单")) {
+                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='" + siteid + "' and sa_promotionid=" + content.getLongValue("sa_promotionid"));
+                if (!accountclassRows.isEmpty()) {
                     sqlFactory.addParameter("sa_accountclassid", accountclassRows.get(0).getLong("sa_accountclassid"));
-                }else{
+                } else {
                     sqlFactory.addParameter("sa_accountclassid", beans.order.Order.getDefaultAccount(siteid, type));
                 }
-            }else{
+            } else {
                 sqlFactory.addParameter("sa_accountclassid", beans.order.Order.getDefaultAccount(siteid, type));
             }
             sqlList.addAll(updateAccountclassinfos(sa_orderid, beans.order.Order.getDefaultAccount(siteid, type), sys_enterpriseid));
@@ -180,8 +180,12 @@ public class Order extends Controller {
                 sqlFactory.addParameter("billdate", billdate);
             }
             if (content.containsKey("sa_accountclassid")) {
-                sqlFactory.addParameter("sa_accountclassid", content.getLongValue("sa_accountclassid"));
-                sqlList.addAll(updateAccountclassinfos(sa_orderid, content.getLongValue("sa_accountclassid"), sys_enterpriseid));
+                Long sa_accountclassid =  content.getLongValue("sa_accountclassid");
+                if(sa_accountclassid<=0){
+                    return getErrReturnObject().setErrMsg("账户不存在").toString();
+                }
+                sqlFactory.addParameter("sa_accountclassid", sa_accountclassid);
+                sqlList.addAll(updateAccountclassinfos(sa_orderid,sa_accountclassid, sys_enterpriseid));
             }
         } else {
             //订单更新时
@@ -197,6 +201,8 @@ public class Order extends Controller {
                             return getErrReturnObject().setErrMsg("物料账户只能添加物料商品,请检查").toString();
                         }
                     }
+                }else {
+                    return getErrReturnObject().setErrMsg("账户不存在").toString();
                 }
                 sqlFactory.addParameter("sa_accountclassid", content.getLongValue("sa_accountclassid"));
                 sqlList.addAll(updateAccountclassinfos(sa_orderid, content.getLongValue("sa_accountclassid"), sys_enterpriseid));
@@ -286,23 +292,34 @@ public class Order extends Controller {
         sqlFactory.addParameter("typemx", "");
         //订货企业id
         sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
+        Long sa_accountclassid = 0L;
         //营销账户类型ID
         if ((type.equals("标准订单") || type.equals("特殊订单")) && content.getString("tradefield").equals("整装工程")) {
-            sqlFactory.addParameter("sa_accountclassid", "69");
+            sa_accountclassid = 69l;
+
 
         } else {
-            if(type.equals("促销订单")){
-                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='"+siteid+"' and sa_promotionid="+content.getLongValue("sa_promotionid"));
-                if(!accountclassRows.isEmpty()){
-                    sqlFactory.addParameter("sa_accountclassid", accountclassRows.get(0).getLong("sa_accountclassid"));
-                }else{
-                    sqlFactory.addParameter("sa_accountclassid", beans.order.Order.getDefaultAccount(siteid, type));
+            if (type.equals("促销订单")) {
+                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='" + siteid + "' and sa_promotionid=" + content.getLongValue("sa_promotionid"));
+                if (!accountclassRows.isEmpty()) {
+                    sa_accountclassid = accountclassRows.get(0).getLong("sa_accountclassid");
+
+                } else {
+                    sa_accountclassid = beans.order.Order.getDefaultAccount(siteid, type);
+
                 }
-            }else{
-                sqlFactory.addParameter("sa_accountclassid", beans.order.Order.getDefaultAccount(siteid, type));
+            } else {
+                sa_accountclassid = beans.order.Order.getDefaultAccount(siteid, type);
+
             }
 
         }
+        if(sa_accountclassid<=0){
+            return getErrReturnObject().setErrMsg("账户不存在").toString();
+        }
+        sqlFactory.addParameter("sa_accountclassid", sa_accountclassid);
+
+
 
         //品牌ID
         sqlFactory.addParameter("sa_brandid", sa_brandid);
@@ -385,14 +402,14 @@ public class Order extends Controller {
         if ((type.equals("标准订单") || type.equals("特殊订单")) && content.getString("tradefield").equals("整装工程")) {
             sqlList1.addAll(updateAccountclassinfos(sa_orderid, 69, sys_enterpriseid));
         } else {
-            if(type.equals("促销订单")){
-                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='"+siteid+"' and sa_promotionid="+content.getLongValue("sa_promotionid"));
-                if(!accountclassRows.isEmpty()){
+            if (type.equals("促销订单")) {
+                Rows accountclassRows = dbConnect.runSqlQuery("select sa_accountclassid from sa_promotion where siteid='" + siteid + "' and sa_promotionid=" + content.getLongValue("sa_promotionid"));
+                if (!accountclassRows.isEmpty()) {
                     sqlList1.addAll(updateAccountclassinfos(sa_orderid, accountclassRows.get(0).getLong("sa_accountclassid"), sys_enterpriseid));
-                }else{
+                } else {
                     sqlList1.addAll(updateAccountclassinfos(sa_orderid, beans.order.Order.getDefaultAccount(siteid, type), sys_enterpriseid));
                 }
-            }else{
+            } else {
                 sqlList1.addAll(updateAccountclassinfos(sa_orderid, beans.order.Order.getDefaultAccount(siteid, type), sys_enterpriseid));
             }
 
@@ -824,7 +841,7 @@ public class Order extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t6.sys_enterpriseid=t1.sys_enterpriseid and t6.siteid = t1.siteid",
                 "agentnum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_promotion", "t7", "t7.sa_promotionid=t1.sa_promotionid and t7.siteid = t1.siteid",
-                "promnum","promname");
+                "promnum", "promname");
         querySQL.addQueryFields("amount", "CAST(0 AS CHAR(20))");
         querySQL.addQueryFields("qty", "CAST(0 AS CHAR(20))");
         querySQL.setWhere("t1.siteid", siteid);
@@ -1237,7 +1254,7 @@ public class Order extends Controller {
         if (type.equals("标准订单")) {
             Rows iteminfos = dbConnect.runSqlQuery("select t2.itemno from sa_orderitems t1 inner join plm_item t2 on t1.siteid=t2.siteid and t1.itemid=t2.itemid where t1.sa_orderid=" + sa_orderid + " and t1.siteid='" + siteid + "' and t2.isonsale!=1");
             if (iteminfos.isNotEmpty()) {
-                return getErrReturnObject().setErrMsg("检测到品号"+iteminfos.get(0).getLong("itemno") + "未上架,请删除后重试").toString();
+                return getErrReturnObject().setErrMsg("检测到品号" + iteminfos.get(0).getLong("itemno") + "未上架,请删除后重试").toString();
             }
         }
 
@@ -1285,7 +1302,7 @@ public class Order extends Controller {
                         boolean islimit = promotionitemsRowsMap.get(itemid).get(0).getBoolean("islimit");
                         if (islimit) {
                             if (groupqty.compareTo(saledqty.add(qty)) < 0) {
-                                return getErrReturnObject().setErrMsg("品号:"+orderdetail.getString("itemno") +"已超过限购数量:"+groupqty.subtract(saledqty)).toString();
+                                return getErrReturnObject().setErrMsg("品号:" + orderdetail.getString("itemno") + "已超过限购数量:" + groupqty.subtract(saledqty)).toString();
                             }
                         }
                         sqlList.add("update sa_promotion_items set saledqty=ifnull(saledqty,0)+" + qty + " where sa_promotion_itemsid=" + promotionitemsRowsMap.get(itemid).get(0).getLong("sa_promotion_itemsid"));
@@ -1294,34 +1311,34 @@ public class Order extends Controller {
             }
 
             //促销订单经销商限购金额判断
-            String promotiontype="";
-            BigDecimal associationamount=BigDecimal.ZERO;
-            Rows promotion = dbConnect.runSqlQuery(" select * from sa_promotion where siteid='"+siteid+"'and  sa_promotionid="+sa_promotionid);
-            Rows promotion_auth = dbConnect.runSqlQuery(" select * from sa_promotion_auth where siteid='"+siteid+"'and sys_enterpriseid="+sys_enterpriseid+" and sa_promotionid="+sa_promotionid);
-            if(promotion.isNotEmpty()){
-                promotiontype=promotion.get(0).getString("type");
-                associationamount=promotion.get(0).getBigDecimal("associationamount");
-            }
-            if(promotion_auth.isNotEmpty()){
+            String promotiontype = "";
+            BigDecimal associationamount = BigDecimal.ZERO;
+            Rows promotion = dbConnect.runSqlQuery(" select * from sa_promotion where siteid='" + siteid + "'and  sa_promotionid=" + sa_promotionid);
+            Rows promotion_auth = dbConnect.runSqlQuery(" select * from sa_promotion_auth where siteid='" + siteid + "'and sys_enterpriseid=" + sys_enterpriseid + " and sa_promotionid=" + sa_promotionid);
+            if (promotion.isNotEmpty()) {
+                promotiontype = promotion.get(0).getString("type");
+                associationamount = promotion.get(0).getBigDecimal("associationamount");
+            }
+            if (promotion_auth.isNotEmpty()) {
                 boolean islimit = promotion_auth.get(0).getBoolean("islimit");
                 BigDecimal limitamount = promotion_auth.get(0).getBigDecimal("limitamount");
                 BigDecimal saledamount = promotion_auth.get(0).getBigDecimal("saledamount");
-                 System.out.println("limitamount:"+limitamount);
-                System.out.println("saledamount:"+saledamount);
-                System.out.println("associationamount:"+associationamount);
-                if(islimit){
-                    if(!promotiontype.equals("返利促销")){
-                        if(amount.compareTo(limitamount.subtract(saledamount))>0){
+                System.out.println("limitamount:" + limitamount);
+                System.out.println("saledamount:" + saledamount);
+                System.out.println("associationamount:" + associationamount);
+                if (islimit) {
+                    if (!promotiontype.equals("返利促销")) {
+                        if (amount.compareTo(limitamount.subtract(saledamount)) > 0) {
                             return getErrReturnObject().setErrMsg("已超过促销方案限定金额,无法提交").toString();
                         }
                         sqlList.add("update sa_promotion_auth set saledamount=saledamount+" + amount + " where sa_promotion_authid=" + promotion_auth.get(0).getLong("sa_promotion_authid"));
-                    }else{
-                        if(amount.subtract((limitamount.subtract(saledamount))).compareTo(associationamount)>0){
+                    } else {
+                        if (amount.subtract((limitamount.subtract(saledamount))).compareTo(associationamount) > 0) {
                             return getErrReturnObject().setErrMsg("已超过促销方案限定金额,无法提交").toString();
                         }
-                        if(amount.compareTo((limitamount.subtract(saledamount)))>0){
+                        if (amount.compareTo((limitamount.subtract(saledamount))) > 0) {
                             sqlList.add("update sa_promotion_auth set saledamount=saledamount+" + (limitamount.subtract(saledamount)) + " where sa_promotion_authid=" + promotion_auth.get(0).getLong("sa_promotion_authid"));
-                        }else{
+                        } else {
                             sqlList.add("update sa_promotion_auth set saledamount=saledamount+" + amount + " where sa_promotion_authid=" + promotion_auth.get(0).getLong("sa_promotion_authid"));
                         }
 
@@ -1368,7 +1385,7 @@ public class Order extends Controller {
                     for (Object object : accountclassinfos) {
                         JSONObject jsonObject = (JSONObject) object;
                         if (Accountbalance.judgeBalance(this, pay_enterpriseid, jsonObject.getLong("sa_accountclassid"), jsonObject.getBigDecimal("amount"))) {
-                            CashbillEntity entity = getCashbillEntity(jsonObject.getBigDecimal("amount"), sa_orderid, "订单提交", sonum,"由" + sonum + "订单提交时," + jsonObject.getString("accountname") + "账户自动支出产生");
+                            CashbillEntity entity = getCashbillEntity(jsonObject.getBigDecimal("amount"), sa_orderid, "订单提交", sonum, "由" + sonum + "订单提交时," + jsonObject.getString("accountname") + "账户自动支出产生");
                             //
                             if (accountclassrowsMap.containsKey(jsonObject.getString("sa_accountclassid")) && accountclassrowsMap.get(jsonObject.getString("sa_accountclassid")).isNotEmpty()) {
                                 jsonObject.put("balance", accountclassrowsMap.get(jsonObject.getString("sa_accountclassid")).get(0).getBigDecimal("balance").subtract(jsonObject.getBigDecimal("amount")));
@@ -1383,7 +1400,7 @@ public class Order extends Controller {
                     }
                 } else {
                     if (Accountbalance.judgeBalance(this, pay_enterpriseid, sa_accountclassid, amount)) {
-                        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, "订单提交",sonum, "由" + sonum + "订单提交时自动产生");
+                        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, "订单提交", sonum, "由" + sonum + "订单提交时自动产生");
                         sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, sa_accountclassid, entity, true));
                     } else {
                         return getErrReturnObject().setErrMsg("账户余额不足,还差" + Accountbalance.InsufficientBalance(this, pay_enterpriseid, sa_accountclassid, amount) + "元!").toString();
@@ -1437,7 +1454,7 @@ public class Order extends Controller {
         //金额=金额-返利金金额
         BigDecimal amount = beans.order.Order.getAmount(this, sa_orderid);
         //创建支出凭证
-        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, source,sonum, "由" + sonum + source + "时自动产生");
+        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, source, sonum, "由" + sonum + source + "时自动产生");
         sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, sa_accountclassid, entity, true));
         //创建返利金支出凭证
         Rows cashbillRows = dbConnect.runSqlQuery("SELECT * from sa_cashbill WHERE class='返利金' and STATUS ='审核' and rebate_enddate>=CURRENT_TIME and rebate_balance>0 and sys_enterpriseid= " + pay_enterpriseid + " and siteid = '" + siteid + "'  ORDER BY  rebate_enddate ");
@@ -1453,7 +1470,7 @@ public class Order extends Controller {
 
             //返利代金券小于返利金金额,例如:rebate_balance:10,rebateamount:50
             if (rebate_balance.compareTo(rebateamount) == -1) {
-                entity2 = getCashbillEntity(rebate_balance, sa_orderid, source,sonum,"【返利金】由" + sonum + source + "时自动产生");
+                entity2 = getCashbillEntity(rebate_balance, sa_orderid, source, sonum, "【返利金】由" + sonum + source + "时自动产生");
                 rebateamount = rebateamount.subtract(rebate_balance);
                 rebate_balance = BigDecimal.ZERO;
 
@@ -1461,14 +1478,14 @@ public class Order extends Controller {
             }
             //返利代金券等于返利金金额
             if (rebate_balance.compareTo(rebateamount) == 0) {
-                entity2 = getCashbillEntity(rebate_balance, sa_orderid, source,sonum, "【返利金】由" + sonum + source + "时自动产生");
+                entity2 = getCashbillEntity(rebate_balance, sa_orderid, source, sonum, "【返利金】由" + sonum + source + "时自动产生");
                 rebateamount = BigDecimal.ZERO;
                 rebate_balance = BigDecimal.ZERO;
 
             }
             //返利代金券大于返利金金额
             if (rebate_balance.compareTo(rebateamount) == 1) {
-                entity2 = getCashbillEntity(rebateamount, sa_orderid, source, sonum,"【返利金】由" + sonum + source + "时自动产生");
+                entity2 = getCashbillEntity(rebateamount, sa_orderid, source, sonum, "【返利金】由" + sonum + source + "时自动产生");
                 rebate_balance = rebate_balance.subtract(rebateamount);
                 rebateamount = BigDecimal.ZERO;
 
@@ -1558,7 +1575,7 @@ public class Order extends Controller {
                     for (Object object : accountclassinfos) {
                         JSONObject jsonObject = (JSONObject) object;
                         if (Accountbalance.judgeBalance(this, pay_enterpriseid, jsonObject.getLong("sa_accountclassid"), jsonObject.getBigDecimal("amount"))) {
-                            CashbillEntity entity = getCashbillEntity(jsonObject.getBigDecimal("amount"), sa_orderid, "订单审核",sonum, "由" + sonum + "订单审核时," + jsonObject.getString("accountname") + "账户自动支出产生");
+                            CashbillEntity entity = getCashbillEntity(jsonObject.getBigDecimal("amount"), sa_orderid, "订单审核", sonum, "由" + sonum + "订单审核时," + jsonObject.getString("accountname") + "账户自动支出产生");
                             jsonObject.put("balance", jsonObject.getBigDecimalValue("balance").subtract(jsonObject.getBigDecimal("amount")));
                             sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, jsonObject.getLong("sa_accountclassid"), entity, true));
                         } else {
@@ -1567,7 +1584,7 @@ public class Order extends Controller {
                     }
                 } else {
                     if (Accountbalance.judgeBalance(this, pay_enterpriseid, sa_accountclassid, amount)) {
-                        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, "订单审核", sonum,"由" + sonum + "订单审核时自动产生");
+                        CashbillEntity entity = getCashbillEntity(amount, sa_orderid, "订单审核", sonum, "由" + sonum + "订单审核时自动产生");
                         sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, sa_accountclassid, entity, true));
                     } else {
                         return getErrReturnObject().setErrMsg("账户余额不足,还差" + Accountbalance.InsufficientBalance(this, pay_enterpriseid, sa_accountclassid, amount) + "元!").toString();
@@ -1618,7 +1635,6 @@ public class Order extends Controller {
         }
 
 
-
         //通过版本更新订单表头数据
         beans.order.Order.updateOrderWithVersion(this);
 
@@ -1639,7 +1655,7 @@ public class Order extends Controller {
         //订单扣款节点(1:订单提交、2:订单审核)
         String order_paymentnode = Parameter.get(siteid, "order_paymentnode");
         if (order_paymentnode.equals("2")) {
-            sqlList.addAll(returnPayBill(row, "订单反审核",sonum, "由" + sonum + "订单反审核时自动产生"));
+            sqlList.addAll(returnPayBill(row, "订单反审核", sonum, "由" + sonum + "订单反审核时自动产生"));
         }
 
 
@@ -1793,7 +1809,7 @@ public class Order extends Controller {
         if (!rows.get(0).getString("status").equals("提交")) {
             return getErrReturnObject().setErrMsg("订单非提交状态无法退回").toString();
         }
-        if(rows.get(0).getLong("sa_promotionid")!=0){
+        if (rows.get(0).getLong("sa_promotionid") != 0) {
             if (dbConnect.runSqlQuery("SELECT 1 FROM sa_promotion WHERE CURRENT_TIME> enddate AND siteid='" + siteid + "' AND sa_promotionid='" + rows.get(0).getLong("sa_promotionid") + "'").isNotEmpty()) {
                 //return getErrReturnObject().setErrMsg("活动已结束,是否确认退回,退回后无法再次提交").toString();
             }
@@ -1807,6 +1823,13 @@ public class Order extends Controller {
         String sonum = row.getString("sonum");
         Long sys_enterpriseid = row.getLong("sys_enterpriseid");
 
+        if(StringUtils.isBlank(row.getString("sa_accountclassinfos"))){
+            dbConnect.runSqlUpdate(updateAccountclassinfos(sa_orderid,sa_accountclassid,sys_enterpriseid));
+            rows = getOrderRows(this, sa_orderid);
+            row = rows.get(0);
+        }
+
+         System.out.println(rows.get(0).getString("sa_accountclassinfos"));
         BigDecimal amount = beans.order.Order.getAmount(this, sa_orderid);
         ArrayList<String> sqlList = new ArrayList<>();
 
@@ -1826,12 +1849,12 @@ public class Order extends Controller {
             }
 
             //促销订单经销商限购金额判断
-            Rows promotion_auth = dbConnect.runSqlQuery("select * from sa_promotion_auth where sys_enterpriseid="+sys_enterpriseid+" and sa_promotionid="+row.getLong("sa_promotionid"));
-            if(promotion_auth.isNotEmpty()){
+            Rows promotion_auth = dbConnect.runSqlQuery("select * from sa_promotion_auth where sys_enterpriseid=" + sys_enterpriseid + " and sa_promotionid=" + row.getLong("sa_promotionid"));
+            if (promotion_auth.isNotEmpty()) {
                 boolean islimit = promotion_auth.get(0).getBoolean("islimit");
                 BigDecimal limitamount = promotion_auth.get(0).getBigDecimal("limitamount");
                 BigDecimal saledamount = promotion_auth.get(0).getBigDecimal("saledamount");
-                if(islimit){
+                if (islimit) {
                     sqlList.add("update sa_promotion_auth set saledamount=saledamount-" + amount + " where sa_promotion_authid=" + promotion_auth.get(0).getLong("sa_promotion_authid"));
                 }
             }
@@ -1855,7 +1878,7 @@ public class Order extends Controller {
 //            sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, sa_accountclassid, entity, true));
 //        }
 
-        sqlList.addAll(returnPayBill(row, "订单退回",sonum, "由" + sonum + "订单退回时自动产生"));
+        sqlList.addAll(returnPayBill(row, "订单退回", sonum, "由" + sonum + "订单退回时自动产生"));
 
         String message = "您的订单【" + sonum + "】已退回,退款金额为【" + amount + "】 已转入到您的资金账户";
 
@@ -1891,6 +1914,11 @@ public class Order extends Controller {
         Long sys_enterpriseid = row.getLong("sys_enterpriseid");
         String sonum = row.getString("sonum");
 
+        if(StringUtils.isBlank(row.getString("sa_accountclassinfos"))){
+            dbConnect.runSqlUpdate(updateAccountclassinfos(sa_orderid,sa_accountclassid,sys_enterpriseid));
+            rows = getOrderRows(this, sa_orderid);
+            row = rows.get(0);
+        }
         BigDecimal amount = beans.order.Order.getAmount(this, sa_orderid);
         ArrayList<String> sqlList = new ArrayList<>();
 
@@ -1922,7 +1950,7 @@ public class Order extends Controller {
         }
 
 
-        sqlList.addAll(returnPayBill(row, "订单撤回", sonum,"由" + sonum + "订单撤回时自动产生"));
+        sqlList.addAll(returnPayBill(row, "订单撤回", sonum, "由" + sonum + "订单撤回时自动产生"));
 
         String message = "您的订单【" + sonum + "】 金额为【" + amount + "】 已撤回!";
 
@@ -2062,7 +2090,7 @@ public class Order extends Controller {
         //订单扣款节点(1:订单提交、2:订单审核)
         String order_paymentnode = Parameter.get(siteid, "order_paymentnode");
         if (order_paymentnode.equals("2")) {
-            sqlList.addAll(returnPayBill(row, "订单_交期撤回",sonum, "由" + sonum + "订单交期撤回时自动产生"));
+            sqlList.addAll(returnPayBill(row, "订单_交期撤回", sonum, "由" + sonum + "订单交期撤回时自动产生"));
         }
 
         sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单交期撤回", "订单交期撤回:" + amount).getSQL());
@@ -2087,7 +2115,7 @@ public class Order extends Controller {
                 amount = rebateRow.getBigDecimal("amount");
                 if (amount.compareTo(BigDecimal.ZERO) > 0) {
                     Long sa_cashbillid_rebate = rebateRow.getLong("sa_cashbillid_rebate");
-                    CashbillEntity entity = getCashbillEntity(amount.negate(), sa_orderid, source,sourcenotes, "【返利金】" + remarks);
+                    CashbillEntity entity = getCashbillEntity(amount.negate(), sa_orderid, source, sourcenotes, "【返利金】" + remarks);
                     sqlList.addAll(beans.order.Order.createRebateBillPay(this, entity, pay_enterpriseid, sa_cashbillid_rebate));
                 }
             }
@@ -2112,7 +2140,7 @@ public class Order extends Controller {
                     }
                 }
                 if (amount.compareTo(BigDecimal.ZERO) > 0) {
-                    CashbillEntity entity = getCashbillEntity(amount.negate(), sa_orderid, source,sourcenotes, remarks);
+                    CashbillEntity entity = getCashbillEntity(amount.negate(), sa_orderid, source, sourcenotes, remarks);
                     sqlList.addAll(Accountbalance.createCashbillPay(this, pay_enterpriseid, row.getLong("sa_accountclassid"), entity, true));
                 }
             }
@@ -2557,7 +2585,7 @@ public class Order extends Controller {
         } else {
             sqlFactory.addParameter("rebate_used", 0);
         }
-        sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid_copy, "订单复制", "由订单" +row.getString("sonum")+"复制而来").getSQL());
+        sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid_copy, "订单复制", "由订单" + row.getString("sonum") + "复制而来").getSQL());
         sqlList.add(sqlFactory.getSQL());
 
         //复制商品
@@ -2850,7 +2878,8 @@ public class Order extends Controller {
 
 
     /**
-     *  创建凭证实体
+     * 创建凭证实体
+     *
      * @param amount
      * @param ownerid
      * @param source
@@ -2859,7 +2888,7 @@ public class Order extends Controller {
      * @return
      * @throws YosException
      */
-    public CashbillEntity getCashbillEntity(BigDecimal amount, Long ownerid, String source, String sourcenotes,String remarks) throws YosException {
+    public CashbillEntity getCashbillEntity(BigDecimal amount, Long ownerid, String source, String sourcenotes, String remarks) throws YosException {
         CashbillEntity entity = new CashbillEntity();
         entity.setAmount(amount);
         entity.setOwnerid(ownerid);
@@ -2960,6 +2989,7 @@ public class Order extends Controller {
     public String closeOrder() throws YosException {
         Long sa_orderid = content.getLong("sa_orderid");
 
+
         //通过版本更新订单表头数据
         beans.order.Order.updateOrderWithVersion(this);
 
@@ -2977,7 +3007,10 @@ public class Order extends Controller {
 
         Long sys_enterpriseid = orderRow.get(0).getLong("sys_enterpriseid");
         Long sa_accountclassid = orderRow.get(0).getLong("sa_accountclassid");
-
+        if(StringUtils.isBlank(orderRow.get(0).getString("sa_accountclassinfos"))){
+            dbConnect.runSqlUpdate(updateAccountclassinfos(sa_orderid,sa_accountclassid,sys_enterpriseid));
+            orderRow = getOrderRows(this, sa_orderid);
+        }
         if (dbConnect.runSqlQuery("SELECT 1 from sa_dispatch t1 left join sa_dispatch_items t2 on t1.sa_dispatchid=t2.sa_dispatchid and t1.siteid=t2.siteid left join sa_orderitems t3 on t2.sa_orderitemsid=t3.sa_orderitemsid and t2.siteid=t3.siteid WHERE t1.status not in ('关闭','手工关闭') and t1.siteid='" + siteid + "' and t3.sa_orderid=" + sa_orderid).isNotEmpty()) {
             return getErrReturnObject().setErrMsg("存在未关闭的发货单,无法关闭").toString();
         }
@@ -2987,7 +3020,7 @@ public class Order extends Controller {
 
         String type = orderRow.get(0).getString("type");
         if (type.equals("促销订单")) {
-            Rows orderdetails = dbConnect.runSqlQuery("select sa_promotion_itemsid,itemno,sum(undeliqty) qty  from sa_orderitems where siteid='" + siteid + "' and sa_orderid=" + sa_orderid +" group by sa_promotion_itemsid,itemno");
+            Rows orderdetails = dbConnect.runSqlQuery("select sa_promotion_itemsid,itemno,sum(undeliqty) qty  from sa_orderitems where siteid='" + siteid + "' and sa_orderid=" + sa_orderid + " group by sa_promotion_itemsid,itemno");
             Rows promotionitems = dbConnect.runSqlQuery("select * from sa_promotion_items where siteid='" + siteid + "' and sa_promotionid=" + orderRow.get(0).getLong("sa_promotionid"));
             RowsMap promotionitemsRowsMap = promotionitems.toRowsMap("sa_promotion_itemsid");
             for (Row orderdetail : orderdetails) {
@@ -3007,21 +3040,21 @@ public class Order extends Controller {
             JSONArray sa_accountclassinfos = orderRow.get(0).getJSONArray("sa_accountclassinfos");
             JSONObject orderaccountclassinfo = new JSONObject();
             JSONObject promotionaccountclassinfo = new JSONObject();
-            for (Object object:sa_accountclassinfos) {
-                JSONObject jsonObject=(JSONObject)object;
-                if(jsonObject.getLong("sa_accountclassid")==sa_accountclassid){
-                    orderaccountclassinfo=jsonObject;
-                }else{
-                    promotionaccountclassinfo=jsonObject;
+            for (Object object : sa_accountclassinfos) {
+                JSONObject jsonObject = (JSONObject) object;
+                if (jsonObject.getLong("sa_accountclassid") == sa_accountclassid) {
+                    orderaccountclassinfo = jsonObject;
+                } else {
+                    promotionaccountclassinfo = jsonObject;
                 }
             }
-            Rows promotion_auth = dbConnect.runSqlQuery(" select * from sa_promotion_auth where siteid='"+siteid+"'and sys_enterpriseid="+sys_enterpriseid+" and sa_promotionid="+ orderRow.get(0).getLong("sa_promotionid"));
-            long sa_promotion_authid=0;
-            if(promotion_auth.isNotEmpty()){
-                sa_promotion_authid=promotion_auth.get(0).getLong("sa_promotion_authid");
+            Rows promotion_auth = dbConnect.runSqlQuery(" select * from sa_promotion_auth where siteid='" + siteid + "'and sys_enterpriseid=" + sys_enterpriseid + " and sa_promotionid=" + orderRow.get(0).getLong("sa_promotionid"));
+            long sa_promotion_authid = 0;
+            if (promotion_auth.isNotEmpty()) {
+                sa_promotion_authid = promotion_auth.get(0).getLong("sa_promotion_authid");
             }
-            if(orderaccountclassinfo.getBigDecimal("amount").compareTo(totalprice)>=0){
-                 System.out.println("1111");
+            if (orderaccountclassinfo.getBigDecimal("amount").compareTo(totalprice) >= 0) {
+                System.out.println("1111");
                 CashbillEntity entity = new CashbillEntity();
                 entity.setAmount(totalprice.negate());
                 entity.setSource("订单手工关闭");
@@ -3033,7 +3066,7 @@ public class Order extends Controller {
                 entity.setTypemx("订单关闭退款");
                 sqlList.addAll(Accountbalance.createCashbillPay(this, sys_enterpriseid, orderaccountclassinfo.getLongValue("sa_accountclassid"), entity, true));
                 sqlList.add("update sa_promotion_auth set saledamount=saledamount-" + totalprice + " where sa_promotion_authid=" + sa_promotion_authid);
-            }else if(orderaccountclassinfo.getBigDecimal("amount").compareTo(totalprice)<0){
+            } else if (orderaccountclassinfo.getBigDecimal("amount").compareTo(totalprice) < 0) {
                 System.out.println("222");
                 CashbillEntity entity = new CashbillEntity();
                 entity.setAmount(orderaccountclassinfo.getBigDecimal("amount").negate());
@@ -3048,7 +3081,7 @@ public class Order extends Controller {
 
                 sqlList.add("update sa_promotion_auth set saledamount=saledamount-" + orderaccountclassinfo.getBigDecimal("amount") + " where sa_promotion_authid=" + sa_promotion_authid);
 
-                CashbillEntity  promotionentity = new CashbillEntity();
+                CashbillEntity promotionentity = new CashbillEntity();
                 promotionentity.setAmount((totalprice.subtract(orderaccountclassinfo.getBigDecimal("amount"))).negate());
                 promotionentity.setSource("订单手工关闭");
                 promotionentity.setSourcenote(orderRow.get(0).getString("sonum"));
@@ -3057,7 +3090,7 @@ public class Order extends Controller {
                 promotionentity.setRemarks("由" + orderRow.get(0).getString("sonum") + "订单手工关闭时自动产生");
                 promotionentity.setType("普通费用");
                 promotionentity.setTypemx("订单关闭退款");
-                sqlList.addAll(Accountbalance.createCashbillPay(this, sys_enterpriseid,  promotionaccountclassinfo.getLongValue("sa_accountclassid"),  promotionentity, true));
+                sqlList.addAll(Accountbalance.createCashbillPay(this, sys_enterpriseid, promotionaccountclassinfo.getLongValue("sa_accountclassid"), promotionentity, true));
 
             }
 
@@ -3092,8 +3125,11 @@ public class Order extends Controller {
         ArrayList<String> sqlList = new ArrayList<>();
         JSONArray jsonArray = new JSONArray();
         JSONObject jsonObject = new JSONObject();
-        BigDecimal orderamount =  getAmount(this, sa_orderid);
-        Rows accountclassrows = dbConnect.runSqlQuery("select t1.*,ifnull(t2.balance,0) balance,ifnull(t2.creditquota,0) creditquota from sa_accountclass t1 left join sa_accountbalance t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid and t2.sys_enterpriseid=" + (sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid) + " where isused=1 and t1.siteid='" + siteid + "' and t1.sa_accountclassid="+(sa_accountclassid == 0 ? orderRows.get(0).getLong("sa_accountclassid") : sa_accountclassid));
+        BigDecimal orderamount = getAmount(this, sa_orderid);
+        Rows accountclassrows = dbConnect.runSqlQuery("select t1.*,ifnull(t2.balance,0) balance,ifnull(t2.creditquota,0) creditquota from sa_accountclass t1 left join sa_accountbalance t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid and t2.sys_enterpriseid=" + (sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid) + " where isused=1 and t1.siteid='" + siteid + "' and t1.sa_accountclassid=" + (sa_accountclassid == 0 ? orderRows.get(0).getLong("sa_accountclassid") : sa_accountclassid));
+        if (accountclassrows.isEmpty()) {
+            return new ArrayList<>();
+        }
         if (orderRows.isEmpty()) {
             //全部优先账户扣款
             jsonObject.put("amount", orderamount);
@@ -3105,21 +3141,21 @@ public class Order extends Controller {
             sqlList.add("update sa_order set sa_accountclassinfos='" + jsonArray + "' where sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'");
             return sqlList;
         }
-        String type="";
-        Rows promotionrows =dbConnect.runSqlQuery("select * from sa_promotion where siteid='"+siteid+"' and  sa_promotionid="+ orderRows.get(0).getLong("sa_promotionid"));
-        Rows promotionenterpriserows =dbConnect.runSqlQuery("select * from sa_promotion_auth where siteid='"+siteid+"'and sys_enterpriseid="+(sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid)+" and  sa_promotionid="+ orderRows.get(0).getLong("sa_promotionid"));
-        if(promotionrows.isNotEmpty()){
-            type=promotionrows.get(0).getString("type");
+        String type = "";
+        Rows promotionrows = dbConnect.runSqlQuery("select * from sa_promotion where siteid='" + siteid + "' and  sa_promotionid=" + orderRows.get(0).getLong("sa_promotionid"));
+        Rows promotionenterpriserows = dbConnect.runSqlQuery("select * from sa_promotion_auth where siteid='" + siteid + "'and sys_enterpriseid=" + (sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid) + " and  sa_promotionid=" + orderRows.get(0).getLong("sa_promotionid"));
+        if (promotionrows.isNotEmpty()) {
+            type = promotionrows.get(0).getString("type");
         }
-        if(type.equals("返利促销")){
+        if (type.equals("返利促销")) {
             BigDecimal associationamount = promotionrows.get(0).getBigDecimal("associationamount");
             long associationaccountclassid = promotionrows.get(0).getLong("associationaccountclassid");
-            Rows associationaccountclassrows = dbConnect.runSqlQuery("select t1.*,ifnull(t2.balance,0) balance,ifnull(t2.creditquota,0) creditquota from sa_accountclass t1 left join sa_accountbalance t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid and t2.sys_enterpriseid=" + (sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid) + " where isused=1 and t1.siteid='" + siteid + "' and t1.sa_accountclassid="+associationaccountclassid);
-            if(promotionenterpriserows.isNotEmpty()){
-                if(promotionenterpriserows.get(0).getBoolean("islimit")){
+            Rows associationaccountclassrows = dbConnect.runSqlQuery("select t1.*,ifnull(t2.balance,0) balance,ifnull(t2.creditquota,0) creditquota from sa_accountclass t1 left join sa_accountbalance t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid and t2.sys_enterpriseid=" + (sys_enterpriseid == 0 ? orderRows.get(0).getLong("pay_enterpriseid") : sys_enterpriseid) + " where isused=1 and t1.siteid='" + siteid + "' and t1.sa_accountclassid=" + associationaccountclassid);
+            if (promotionenterpriserows.isNotEmpty()) {
+                if (promotionenterpriserows.get(0).getBoolean("islimit")) {
                     BigDecimal limitamount = promotionenterpriserows.get(0).getBigDecimal("limitamount");
                     BigDecimal saledamount = promotionenterpriserows.get(0).getBigDecimal("saledamount");
-                    if(orderamount.compareTo(limitamount.subtract(saledamount))<=0){
+                    if (orderamount.compareTo(limitamount.subtract(saledamount)) <= 0) {
                         //全部优先账户扣款
                         jsonObject.put("amount", orderamount);
                         jsonObject.put("sa_accountclassid", accountclassrows.get(0).getLong("sa_accountclassid"));
@@ -3127,7 +3163,7 @@ public class Order extends Controller {
                         jsonObject.put("balance", accountclassrows.get(0).getBigDecimal("balance"));
                         jsonObject.put("creditquota", accountclassrows.get(0).getBigDecimal("creditquota"));
                         jsonArray.add(jsonObject);
-                    }else if(orderamount.compareTo(limitamount.subtract(saledamount))>0){
+                    } else if (orderamount.compareTo(limitamount.subtract(saledamount)) > 0) {
                         //全部优先账户扣款
                         jsonObject.put("amount", limitamount.subtract(saledamount));
                         jsonObject.put("sa_accountclassid", accountclassrows.get(0).getLong("sa_accountclassid"));
@@ -3143,11 +3179,11 @@ public class Order extends Controller {
                         associationjsonObject.put("balance", associationaccountclassrows.get(0).getBigDecimal("balance"));
                         associationjsonObject.put("creditquota", associationaccountclassrows.get(0).getBigDecimal("creditquota"));
                         jsonArray.add(associationjsonObject);
-                    }else{
+                    } else {
                         return sqlList;
                     }
                 }
-            }else{
+            } else {
                 //全部优先账户扣款
                 jsonObject.put("amount", orderamount);
                 jsonObject.put("sa_accountclassid", accountclassrows.get(0).getLong("sa_accountclassid"));
@@ -3156,7 +3192,7 @@ public class Order extends Controller {
                 jsonObject.put("creditquota", accountclassrows.get(0).getBigDecimal("creditquota"));
                 jsonArray.add(jsonObject);
             }
-        }else{
+        } else {
             //全部优先账户扣款
             jsonObject.put("amount", orderamount);
             jsonObject.put("sa_accountclassid", accountclassrows.get(0).getLong("sa_accountclassid"));

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

@@ -209,6 +209,11 @@ public class OrderItems extends Controller {
         BigDecimal orderamount = getAmount(this, sa_orderid);
         System.out.println(orderamount);
         Rows accountclassrows = dbConnect.runSqlQuery("select t1.*,ifnull(t2.balance,0) balance,ifnull(t2.creditquota,0) creditquota from sa_accountclass t1 left join sa_accountbalance t2 on t1.sa_accountclassid=t2.sa_accountclassid and t1.siteid=t2.siteid and t2.sys_enterpriseid=" + orderRows.get(0).getLong("pay_enterpriseid") + " where isused=1 and t1.siteid='" + siteid + "' and t1.sa_accountclassid=" + orderRows.get(0).getLong("sa_accountclassid"));
+       if(accountclassrows.isEmpty()){
+           return "未找到扣款账户";
+       }
+
+
         JSONObject jsonObject = new JSONObject();
         if (type.equals("返利促销")) {
             BigDecimal associationamount = promotionrows.get(0).getBigDecimal("associationamount");
@@ -740,7 +745,7 @@ public class OrderItems extends Controller {
                 } else if (convenient.equals("待审核")) {
                     where.append(" and t5.status ='提交' ");
                 } else if (convenient.equals("待发货")) {
-                    where.append(" and t5.status not in ('预提交','新建') and not exists(select 1 from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 and s1.sa_orderitemsid=t1.sa_orderitemsid)");
+                    where.append(" and t5.status in ('审核') and not exists(select 1 from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 and s1.sa_orderitemsid=t1.sa_orderitemsid)");
                 } else if (convenient.equals("已发货")) {
                     where.append(" and exists(select 1 from st_stockbill_items s1 inner join st_stockbill s2 on s1.st_stockbillid=s2.st_stockbillid and s1.siteid=s2.siteid where s2.status='审核' and s2.rb=1 and s1.sa_orderitemsid=t1.sa_orderitemsid)");
                 } else if (convenient.equals("已取消")) {

+ 2 - 2
src/custom/restcontroller/webmanage/sale/paybill/Paybill.java

@@ -262,16 +262,16 @@ public class Paybill extends Controller {
         long sys_enterpriseid = rows.get(0).getLong("sys_enterpriseid");
         String billno = rows.get(0).getString("billno");
         String remarks = rows.get(0).getString("remarks");
+        dbConnect.runSqlUpdate(sqlList);
         for (Row row : accountclassRows) {
             BigDecimal amount = row.getBigDecimal("amount");
             CashbillEntity cashbillEntity = new CashbillEntity(amount, remarks, "打款凭证", billno, "sa_paybill", sa_paybillid, "货款", "");
-            sqlList.addAll(Accountbalance.createCashbillIncome(this, sys_enterpriseid, row.getLong("sa_accountclassid"), cashbillEntity, false));
+            sqlList = Accountbalance.createCashbillIncome(this, sys_enterpriseid, row.getLong("sa_accountclassid"), cashbillEntity, false);
             dbConnect.runSqlUpdate(sqlList);
 
             String message = "您的打款凭证已审核通过,【"+row.getString("accountname")+"】账户已成功充值【"+amount+"】元";
             sendMsg(message, sa_paybillid, sys_enterpriseid);
         }
-        dbConnect.runSqlUpdate(sqlList);
         return getSucReturnObject().toString();
     }