Kaynağa Gözat

该配件核销单提交审核时增加数量判断

hxh 4 ay önce
ebeveyn
işleme
6f18ac1d55

+ 46 - 1
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursement.java

@@ -249,7 +249,7 @@ public class tpartreimbursement extends Controller {
                     + sa_tpartreimbursementid + "' and  t1.siteid='" + siteid + "'");
 
             QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
-            tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(qty)");
+            tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(checkqty)");
             tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
             tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
 
@@ -260,6 +260,7 @@ public class tpartreimbursement extends Controller {
             orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
             orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
             Rows orderitemsrows = orderitemsQuery.query();
+            RowsMap rowsMap = orderitemsrows.toRowsMap("sa_orderitemsid");
             if(!rows.get(0).getBoolean("createflag")){
                 for (Row row :orderitemsrows) {
                     if(row.getBigDecimal("qty").compareTo(BigDecimal.ZERO)<0){
@@ -267,6 +268,16 @@ public class tpartreimbursement extends Controller {
                     }
                 }
             }
+
+            for (int i = 0; i < rowsdetail.size(); i++) {
+                if(rowsMap.containsKey(rowsdetail.get(i).getString("sa_orderitemsid"))){
+                    if(rowsMap.get(rowsdetail.get(i).getString("sa_orderitemsid")).get(0).getBigDecimal("qty").compareTo(rowsdetail.get(i).getBigDecimal("qty"))<0){
+                        return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
+                    }
+                }else{
+                    return getErrReturnObject().setErrMsg("订单行不存在,请检查").toString();
+                }
+            }
             sqlList.add(
                     DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "提交", "配件核销单提交成功").getSQL());
         } else {
@@ -303,6 +314,40 @@ public class tpartreimbursement extends Controller {
             }
 
         }
+        Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursementdetail t1 where t1.sa_tpartreimbursementid ='"
+                + sa_tpartreimbursementid + "' and  t1.siteid='" + siteid + "'");
+
+        QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
+        tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(checkqty)");
+        tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
+        tpartreimbursementdetailQuery.addGroupBy("sa_orderitemsid");
+
+
+        QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
+        orderitemsQuery.setTableAlias("t1");
+        orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+        orderitemsQuery.setWhere("t1.sa_orderitemsid", rowsdetail.toArrayList("sa_orderitemsid"));
+        orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
+        Rows orderitemsrows = orderitemsQuery.query();
+        RowsMap rowsMap = orderitemsrows.toRowsMap("sa_orderitemsid");
+        if(!rows.get(0).getBoolean("createflag")){
+            for (Row row :orderitemsrows) {
+                if(row.getBigDecimal("qty").compareTo(BigDecimal.ZERO)<0){
+                    return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
+                }
+            }
+        }
+
+        for (int i = 0; i < rowsdetail.size(); i++) {
+            if(rowsMap.containsKey(rowsdetail.get(i).getString("sa_orderitemsid"))){
+                if(rowsMap.get(rowsdetail.get(i).getString("sa_orderitemsid")).get(0).getBigDecimal("qty").compareTo(rowsdetail.get(i).getBigDecimal("qty"))<0){
+                    return getErrReturnObject().setErrMsg("该配件核销单数量不符合要求,请检查").toString();
+                }
+            }else{
+                return getErrReturnObject().setErrMsg("订单行不存在,请检查").toString();
+            }
+        }
+
         ArrayList<String> sqlList = new ArrayList<>();
         sqlList.add(
                 DataContrlLog.createLog(this, "sa_tpartreimbursement", sa_tpartreimbursementid, "审核", "配件核销单审核成功").getSQL());

+ 3 - 16
src/custom/service/AutoCompletionWorkOrder.java

@@ -54,22 +54,9 @@ public class AutoCompletionWorkOrder extends ServiceController {
                         if(changedate.plusDays(autocompletiondays).compareTo(today)>0){
                             continue;
                         }
-                        Rows workorders = dbConnect
-                                .runSqlQuery("select sa_serviceorderid,status,billno from sa_workorder where sa_serviceorderid ='"
-                                        +row.getLong("sa_serviceorderid") + "' and  siteid='" + siteid
-                                        + "' and sa_workorderid !=" + row.getLong("sa_workorderid"));
-                        boolean isallcomplete = true;
-                        for (int i = 0; i < workorders.size(); i++) {
-                            if (!workorders.get(i).getString("status").equals("已完工")
-                                    && !workorders.get(i).getString("status").equals("关闭")
-                                    && !workorders.get(i).getString("status").equals("作废")) {
-                                isallcomplete = false;
-                            }
-                        }
-                        if (isallcomplete) {
-                            sqlList.add("update sa_serviceorder set status='已完结'  where sa_serviceorderid="
-                                    + row.getLong("sa_serviceorderid"));
-                        }
+
+                        sqlList.add("update sa_serviceorder set status='已完结'  where sa_serviceorderid="
+                                + row.getLong("sa_serviceorderid"));
                         sqlList.add("update sa_workorder set status='已完工',finishby='admin',finishdate=CURRENT_TIME  where sa_workorderid=" + row.getLong("sa_workorderid"));
                         sqlList.add(DataContrlLog.createLog(new Controller(new JSONObject()), "sa_workorder", row.getLong("sa_workorderid"), "工单完结", "服务工单完结成功").getSQL());
                     }