Explorar o código

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

shenjingwei hai 2 meses
pai
achega
2784819ef4

+ 0 - 1
src/custom/beans/stockbill/bills/XSCK.java

@@ -87,7 +87,6 @@ public class XSCK extends BasicBill {
                 Rows rowsDispatchDetailGroup = dbConnect.runSqlQuery("select sum(t1.qty) qty,t1.sa_orderitemsid,t1.siteid from st_stockbill_items t1  where t1.sa_orderitemsid>0 and t1.st_stockbillid=" + st_stockbillid + " group by t1.sa_orderitemsid,t1.siteid");
                 for (Row row : rowsDispatchDetailGroup) {
                     sqlList.add("update sa_orderitems set undeliqty=undeliqty-" + row.getDouble("qty") + ",deliedqty=deliedqty+" + row.getDouble("qty") + ",offstatus=if(billingstatus='保内收费','待核销','不可核销'),offdate=CURRENT_TIME  where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
-
                     sqlList.add("update sa_orderitems set tobeoffqty=case when tobeoffqty+" + row.getDouble("qty") + ">canoffqty then canoffqty else tobeoffqty+" + row.getDouble("qty") + " end where sa_orderitemsid=" + row.getLong("sa_orderitemsid"));
 
                 }

+ 48 - 6
src/custom/restcontroller/sale/serviceorder/serviceorder.java

@@ -194,6 +194,45 @@ public class serviceorder extends Controller {
                                 DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
                     }
                 }
+            }else {
+                Rows serviceagents = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t2.province,t2.city,t2.county from sa_agents t1 inner join sa_agents_salescope  t2  on  t1.sa_agentsid=t2.sa_agentsid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and t1.isservice=1");
+                RowsMap countyRowsMap = serviceagents.toRowsMap("county");
+                RowsMap cityRowsMap = serviceagents.toRowsMap("city");
+                RowsMap provinceRowsMap = serviceagents.toRowsMap("province");
+                if (countyRowsMap.containsKey(rows.get(0).getString("county"))) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                    updateSQL.setUniqueid(sa_serviceorderid);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("status", "待受理");
+                    updateSQL.setValue("sys_enterpriseid_service", countyRowsMap.get(rows.get(0).getString("county")).get(0).getLong("sys_enterpriseid"));
+                    updateSQL.setDateValue("allocationdate");
+                    updateSQL.setValue("allocationby", username);
+                    sqlList.add(updateSQL.getSQL());
+                    sqlList.add(
+                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                } else if (cityRowsMap.containsKey(rows.get(0).getString("city"))) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                    updateSQL.setUniqueid(sa_serviceorderid);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("status", "待受理");
+                    updateSQL.setValue("sys_enterpriseid_service", cityRowsMap.get(rows.get(0).getString("city")).get(0).getLong("sys_enterpriseid"));
+                    updateSQL.setDateValue("allocationdate");
+                    updateSQL.setValue("allocationby", username);
+                    sqlList.add(updateSQL.getSQL());
+                    sqlList.add(
+                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                } else if (provinceRowsMap.containsKey(rows.get(0).getString("province"))) {
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
+                    updateSQL.setUniqueid(sa_serviceorderid);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("status", "待受理");
+                    updateSQL.setValue("sys_enterpriseid_service", provinceRowsMap.get(rows.get(0).getString("province")).get(0).getLong("sys_enterpriseid"));
+                    updateSQL.setDateValue("allocationdate");
+                    updateSQL.setValue("allocationby", username);
+                    sqlList.add(updateSQL.getSQL());
+                    sqlList.add(
+                            DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "自动分配", "服务申请单自动分配成功").getSQL());
+                }
             }
             Rows workersRows = dbConnect.runSqlQuery(
                     "select  t3.phonenumber from sys_hr t1 left join sys_users t3 on t1.userid = t3.userid left join sys_hr t4 on t1.siteid = t4.siteid and t1.reporthrid = t4.hrid where t1.siteid = '"
@@ -231,9 +270,10 @@ public class serviceorder extends Controller {
         if (rows.isEmpty()) {
             return getErrReturnObject().setErrMsg("该服务申请单不存在").toString();
         }
-        if (!rows.get(0).getString("status").equals("待分配") && !rows.get(0).getString("status").equals("手工完结") && !rows.get(0).getString("status").equals("拒绝受理")) {
-            return getErrReturnObject().setErrMsg("非待分配或手工完结或拒绝受理的服务申请单无法分配服务商").toString();
+        if (rows.get(0).getString("status").equals("新建") || rows.get(0).getString("status").equals("已完结")) {
+            return getErrReturnObject().setErrMsg("非新建或完结的服务申请单无法分配服务商").toString();
         }
+        ArrayList<String> sqllist = new ArrayList<>();
         UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_serviceorder");
         updateSQL.setUniqueid(sa_serviceorderid);
         updateSQL.setSiteid(siteid);
@@ -243,10 +283,12 @@ public class serviceorder extends Controller {
         updateSQL.setValue("refuseremarks", "");
         updateSQL.setDateValue("allocationdate");
         updateSQL.setValue("allocationby", username);
-
-        dbConnect.runSqlUpdate(updateSQL.getSQL());
-        dbConnect.runSqlUpdate(
-                DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "手工分配", "服务申请单手工分配成功").getSQL());
+        if(rows.get(0).getString("status").equals("待服务") || rows.get(0).getString("status").equals("服务中")){
+            sqllist.add("update sa_workorder set status='作废' where sa_serviceorderid ="+sa_serviceorderid);
+        }
+        sqllist.add(updateSQL.getSQL());
+        sqllist.add(DataContrlLog.createLog(this, "sa_serviceorder", sa_serviceorderid, "手工分配", "服务申请单手工分配成功").getSQL());
+        dbConnect.runSqlUpdate(sqllist);
         return getSucReturnObject().toString();
     }
 

+ 8 - 4
src/custom/restcontroller/webmanage/sale/aftersalesbom/ExportExcel_pj.java

@@ -77,7 +77,7 @@ public class ExportExcel_pj {
         cellStyle2.setDataFormat(workbook.createDataFormat().getFormat("TEXT"));
         cellStyle3.setDataFormat(workbook.createDataFormat().getFormat("TEXT"));
         /*第一行*/
-        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 18));
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 23));
 
         /*第一行塞值*/
         row = sheet.createRow(0);
@@ -113,12 +113,16 @@ public class ExportExcel_pj {
 
             cell = row.createCell( 5+j);
             cell.setCellStyle(cellStyle2);
-            cell.setCellValue("启用时间"+i);
+            cell.setCellValue("数量"+i);
 
             cell = row.createCell( 6+j);
             cell.setCellStyle(cellStyle2);
+            cell.setCellValue("启用时间"+i);
+
+            cell = row.createCell( 7+j);
+            cell.setCellStyle(cellStyle2);
             cell.setCellValue("停用时间"+i);
-            j=j+3;
+            j=j+4;
         }
         int a=2;
         for(common.data.Row bom : rows){
@@ -187,7 +191,7 @@ public class ExportExcel_pj {
         cellStyle1.setWrapText(true);
 
         /*第一行*/
-        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 19));//2.提示信息
+        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 24));//2.提示信息
 
         /*第一行塞值*/
         row = sheet.createRow(0);

+ 44 - 10
src/custom/restcontroller/webmanage/sale/aftersalesbom/aftersalesbom_pjs.java

@@ -95,6 +95,7 @@ public class aftersalesbom_pjs extends Controller {
                 insertSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
                 insertSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
                 insertSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                insertSQL.setValue("qty", iteminfo.getDoubleValue("qty"));
                 insertSQL.setValue("begindate", StringUtils.isBlank(iteminfo.getStringValue("begindate")) ?"null":iteminfo.getStringValue("begindate"));
                 insertSQL.setValue("enddate", StringUtils.isBlank(iteminfo.getStringValue("enddate")) ?"null":iteminfo.getStringValue("enddate"));
                 i++;
@@ -116,6 +117,7 @@ public class aftersalesbom_pjs extends Controller {
                         updateSQL.setValue("itemid", iteminfo.getStringValue("itemid"));
                         updateSQL.setValue("itemname", iteminfo.getStringValue("itemname"));
                         updateSQL.setValue("itemno", iteminfo.getStringValue("itemno"));
+                        updateSQL.setValue("qty", iteminfo.getDoubleValue("qty"));
                         updateSQL.setValue("begindate", StringUtils.isBlank(iteminfo.getStringValue("begindate")) ?"null":iteminfo.getStringValue("begindate"));
                         updateSQL.setValue("enddate", StringUtils.isBlank(iteminfo.getStringValue("enddate")) ?"null":iteminfo.getStringValue("enddate"));
                         sqlList.add(updateSQL.getSQL());
@@ -204,7 +206,7 @@ public class aftersalesbom_pjs extends Controller {
         DataFormat format = xssfFWorkbook.createDataFormat();
         style.setDataFormat(format.getFormat("@"));
         // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
-        for (int i = 0; i <= 20; i++) {
+        for (int i = 0; i <= 25; i++) {
             sheet.setDefaultColumnStyle(i, style);
         }
         // 设置工作薄列宽
@@ -249,11 +251,15 @@ public class aftersalesbom_pjs extends Controller {
         ArrayList<String> sqlList = new ArrayList<>();
         ExcelFactory e;
         try {
-
-            // 华为云
-            e = getExcelAttachment(content.getLong("attachmentid"));
-            // 本地
-            //e = getPostExcelFactory();
+            if (content.getLongValue("attachmentid") > 0) {
+                e = getExcelAttachment(content.getLongValue("attachmentid"));
+                // 本地
+                //e = getPostExcelFactory();
+            } else {
+                e = getPostExcel();
+                // 本地
+                //e = getPostExcelFactory();
+            }
 
             ArrayList<String> keys = new ArrayList<>();
             keys.add("bomname");
@@ -261,23 +267,28 @@ public class aftersalesbom_pjs extends Controller {
             keys.add("component");
             keys.add("accessorie");
             keys.add("itemno1");
+            keys.add("qty1");
             keys.add("begindate1");
             keys.add("enddate1");
             keys.add("itemno2");
+            keys.add("qty2");
             keys.add("begindate2");
             keys.add("enddate2");
             keys.add("itemno3");
+            keys.add("qty3");
             keys.add("begindate3");
             keys.add("enddate3");
             keys.add("itemno4");
+            keys.add("qty4");
             keys.add("begindate4");
             keys.add("enddate4");
             keys.add("itemno5");
+            keys.add("qty5");
             keys.add("begindate5");
             keys.add("enddate5");
 
 
-            Rows rows = e.getSheetRows(0, keys, 3);
+            Rows rows = e.getSheetRows(0, keys, 2);
             boolean iserr = false;
             Rows rowserr = new Rows();
             Rows rowssuc = new Rows();
@@ -291,6 +302,8 @@ public class aftersalesbom_pjs extends Controller {
                     if(!StringUtils.isBlank(row.getString("itemno"+i))){
                         if (!itemRowsMap.containsKey(row.getString("itemno"+i))) {
                             msg = msg +row.getString("itemno"+i)+"商品不存在;";
+                        }else if(!isNumeric(row.getString("qty"+i))){
+                            msg = msg +row.getString("qty"+i)+"不为数字格式;";
                         } else {
                             row.put("itemid"+i, itemRowsMap.get(row.getString("itemno"+i)).get(0).getLong("itemid"));
                             row.put("itemname"+i, itemRowsMap.get(row.getString("itemno"+i)).get(0).getString("itemname"));
@@ -298,7 +311,7 @@ public class aftersalesbom_pjs extends Controller {
                     }
 
                 }
-                if(msg.contains("商品不存在")){
+                if(msg.contains("商品不存在") || msg.contains("不为数字格式")){
                     iserr=true;
                     row.put("msg", msg);
                     rowserr.add(row);
@@ -315,18 +328,23 @@ public class aftersalesbom_pjs extends Controller {
                 map.put("component","层级");
                 map.put("accessorie","层级");
                 map.put("itemno1","物料号1");
+                map.put("qty1","数量1");
                 map.put("begindate1","启用时间1");
                 map.put("enddate1","停用时间1");
                 map.put("itemno2","物料号2");
+                map.put("qty2","数量2");
                 map.put("begindate2","启用时间2");
                 map.put("enddate2","停用时间2");
                 map.put("itemno3","物料号3");
+                map.put("qty3","数量3");
                 map.put("begindate3","启用时间3");
                 map.put("enddate3","停用时间3");
                 map.put("itemno4","物料号4");
+                map.put("qty4","数量4");
                 map.put("begindate4","启用时间4");
                 map.put("enddate4","停用时间4");
                 map.put("itemno5","物料号5");
+                map.put("qty5","数量5");
                 map.put("begindate5","启用时间5");
                 map.put("enddate5","停用时间5");
                 map.put("msg", "错误信息");
@@ -337,18 +355,23 @@ public class aftersalesbom_pjs extends Controller {
                 colNameList.add("component");
                 colNameList.add("accessorie");
                 colNameList.add("itemno1");
+                colNameList.add("qty1");
                 colNameList.add("begindate1");
                 colNameList.add("enddate1");
                 colNameList.add("itemno2");
+                colNameList.add("qty2");
                 colNameList.add("begindate2");
                 colNameList.add("enddate2");
                 colNameList.add("itemno3");
+                colNameList.add("qty3");
                 colNameList.add("begindate3");
                 colNameList.add("enddate3");
                 colNameList.add("itemno4");
+                colNameList.add("qty4");
                 colNameList.add("begindate4");
                 colNameList.add("enddate4");
                 colNameList.add("itemno5");
+                colNameList.add("qty5");
                 colNameList.add("begindate5");
                 colNameList.add("enddate5");
                 colNameList.add("msg");
@@ -357,22 +380,26 @@ public class aftersalesbom_pjs extends Controller {
                 keytypemap.put("component",String.class);
                 keytypemap.put("accessorie",String.class);
                 keytypemap.put("itemno1",String.class);
+                keytypemap.put("qty1",String.class);
                 keytypemap.put("begindate1",String.class);
                 keytypemap.put("enddate1",String.class);
                 keytypemap.put("itemno2",String.class);
+                keytypemap.put("qty2",String.class);
                 keytypemap.put("begindate2",String.class);
                 keytypemap.put("enddate2",String.class);
                 keytypemap.put("itemno3",String.class);
+                keytypemap.put("qty3",String.class);
                 keytypemap.put("begindate3",String.class);
                 keytypemap.put("enddate3",String.class);
                 keytypemap.put("itemno4",String.class);
+                keytypemap.put("qty4",String.class);
                 keytypemap.put("begindate4",String.class);
                 keytypemap.put("enddate4",String.class);
                 keytypemap.put("itemno5",String.class);
+                keytypemap.put("qty5",String.class);
                 keytypemap.put("begindate5",String.class);
                 keytypemap.put("enddate5",String.class);
                 keytypemap.put("msg",  String.class);
-                keytypemap.put("msg", String.class);
                 rowserr.setFieldList(colNameList);
                 rowserr.setFieldTypeMap(keytypemap);
                 addSheet(excelFactory, "Sheet1", rowserr, map);
@@ -399,6 +426,7 @@ public class aftersalesbom_pjs extends Controller {
                             insertSQL.setValue("component", row.getString("component"));
                             insertSQL.setValue("accessorie", row.getString("accessorie"));
                             insertSQL.setValue("itemid", row.getString("itemid"+i));
+                            insertSQL.setValue("qty", row.getString("qty"+i));
                             insertSQL.setValue("itemname", row.getString("itemname"+i));
                             insertSQL.setValue("itemno", row.getString("itemno"+i));
                             insertSQL.setValue("begindate", StringUtils.isBlank(row.getString("begindate"+i)) ?"null":row.getString("begindate"+i));
@@ -464,11 +492,17 @@ public class aftersalesbom_pjs extends Controller {
                 } else {
                     datarow.createCell(i1).setCellValue(row.getString((String) keylist.get(i1)));
                 }
-                if (i1 == 19) {
+                if (i1 == 24) {
                     datarow.getCell(i1).setCellStyle(xssfCellStyle1);
                 }
             }
         }
         return sheet;
     }
+    public static boolean isNumeric(String strNum) {
+        if (strNum == null) {
+            return false;
+        }
+        return strNum.matches("-?\\d+(\\.\\d+)?");
+    }
 }

+ 9 - 0
src/custom/restcontroller/webmanage/sale/aftersalesmag/aftersalesmag.java

@@ -256,6 +256,15 @@ public class aftersalesmag extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t4.sa_agentsid=t6.sa_agentsid and t4.siteid=t6.siteid", "agentnum", "sa_agentsid");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t5.sys_enterpriseid=t4.sys_enterpriseid and t5.siteid=t4.siteid", "enterprisename", "abbreviation", "sys_enterpriseid");
         querySQL.addJoinTable(JOINTYPE.left, "sa_customers", "t7", "t6.sa_customersid=t7.sa_customersid and t6.siteid=t7.siteid", "name", "phonenumber", "province", "city", "county", "address");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t8", "t8.agentnum=t6.toagentnum and t8.siteid=t6.siteid");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t9", "t9.sys_enterpriseid=t8.sys_enterpriseid and t9.siteid=t8.siteid");
+
+        querySQL.addQueryFields("sa_agentsid_service","t8.sa_agentsid");
+        querySQL.addQueryFields("agentnum_service","t8.agentnum");
+        querySQL.addQueryFields("enterprisename_service","t9.enterprisename");
+        querySQL.addQueryFields("abbreviation_service","t9.abbreviation");
+        querySQL.addQueryFields("sys_enterpriseid_service","t9.sys_enterpriseid");
+
         querySQL.setSiteid(siteid);
         querySQL.setWhere("t6.sa_customersid", sa_customersid);
         querySQL.setWhere(where.toString());

+ 5 - 1
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -1795,7 +1795,11 @@ public class Order extends Controller {
         stockbillQuerySQL.setTableAlias("t1");
         stockbillQuerySQL.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid and t1.siteid=t2.siteid");
         stockbillQuerySQL.setWhere("t1.siteid",siteid);
-        stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
+        if(orderRows.toArrayList("sa_orderitemsid").isEmpty()){
+            stockbillQuerySQL.setWhere("1=2");
+        }else{
+            stockbillQuerySQL.setWhere("t1.sa_orderitemsid",orderRows.toArrayList("sa_orderitemsid"));
+        }
         Rows stockbillRows =stockbillQuerySQL.query();
         if(stockbillRows.isNotEmpty()){
             return getErrReturnObject().setErrMsg("存在配件申请单明细已生成销售出库单,无法一键出库").toString();

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

@@ -48,7 +48,7 @@ public class serviceorder extends Controller {
         String tableName = "sa_serviceorder";
         Long sa_serviceorderid = content.getLong("sa_serviceorderid");
         String servicetype = content.getString("servicetype"); //服务分类
-        if (content.containsKey("sys_enterpriseid")) {
+        if (sys_enterpriseid<=0) {
             sys_enterpriseid = content.getLong("sys_enterpriseid");
         }
         String remarks = content.getStringValue("remarks");
@@ -867,7 +867,7 @@ public class serviceorder extends Controller {
 
 //    private String sendMessage_0(String phone, String verificationCode) throws Exception {
 //        HttpURLRest rest = new HttpURLRest("http://smssh1.253.com/msg/v1/send/json");
-//        rest.addHeader("Content-type", "application/json");
+//        rest.addHeader("Content-type", "applica分配tion/json");
 //        JSONObject jsonObject = new JSONObject();
 //        jsonObject.put("account", "N3147701");
 //        jsonObject.put("password", "4ClGyab6fv6a87");

+ 4 - 4
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursement.java

@@ -229,7 +229,7 @@ public class tpartreimbursement extends Controller {
         }
         ArrayList<String> sqlList = new ArrayList<>();
         if (issubmit) {
-            Rows rowsdetail = dbConnect.runSqlQuery("select t1.sa_orderitemsid from sa_tpartreimbursement t1 where t1.sa_tpartreimbursementid ='"
+            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");
@@ -240,7 +240,7 @@ public class tpartreimbursement extends Controller {
 
             QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
             orderitemsQuery.setTableAlias("t1");
-            orderitemsQuery.addJoinTable(JOINTYPE.inner,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+            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();
@@ -370,7 +370,7 @@ public class tpartreimbursement extends Controller {
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price");
         querySQL.setSiteid(siteid);
-        querySQL.addQueryFields("amount","t1.qty*t2.price");
+        querySQL.addQueryFields("amount","ROUND(t1.qty*t2.price, 2)");
         querySQL.setWhere("t1.sa_tpartreimbursementdetailid", sa_tpartreimbursementdetailids);
         Rows rows = querySQL.query();
         return getSucReturnObject().setData(rows.sum("amount")).toString();
@@ -501,7 +501,7 @@ public class tpartreimbursement extends Controller {
                 insertDetailSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
                 insertDetailSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP));
                 insertDetailSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13), 2, BigDecimal.ROUND_HALF_UP)));
-                insertDetailSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBoolean("skucontrol"));
+                insertDetailSQL.setValue("skucontrol", itemRowsMap.containsKey(iteminfo.getStringValue("itemid"))?itemRowsMap.get(iteminfo.getStringValue("itemid")).get(0).getBoolean("skucontrol"):iteminfo.getBooleanValue("skucontrol"));
                 i++;
                 sqllist.add(insertDetailSQL.getSQL());
                 totalamount = totalamount.add(iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));

+ 32 - 5
src/custom/restcontroller/webmanage/sale/tpartreimbursement/tpartreimbursementdetail.java

@@ -47,19 +47,46 @@ public class tpartreimbursementdetail extends Controller {
                 where.append(")");
             }
         }
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","qty","price","amount","rowno","sa_orderitemsid","sa_orderid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_orderitems", "itemid","price","amount","rowno","sa_orderitemsid","sa_orderid");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner,"sa_order", "t2", "t1.sa_orderid = t2.sa_orderid AND t1.siteid = t2.siteid", "sonum");
         querySQL.addJoinTable(JOINTYPE.left,"plm_item", "t3", "t1.itemid = t3.itemid AND t1.siteid = t3.siteid", "itemno","itemname","model","spec");
         querySQL.setSiteid(siteid);
+        querySQL.setWhere("t1.billingstatus='保内收费'");
         if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
-            querySQL.setWhere("t1.tobeoffqty>t1.verifiedqty and t1.tobeoffqty>0");
+            querySQL.setWhere("ifnull(t1.tobeoffqty,0)>ifnull(t1.verifiedqty,0) and ifnull(t1.tobeoffqty,0)>0");
         }
+
         querySQL.setWhere("t2.sys_enterpriseid",sys_enterpriseid);
         querySQL.setWhere(where.toString());
+        querySQL.addQueryFields("qty","ifnull(t1.tobeoffqty,0)");
         querySQL.setOrderBy("t1.rowno asc");
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
+        if(rows.isNotEmpty()){
+            QuerySQL tpartreimbursementdetailQuery = SQLFactory.createQuerySQL(dbConnect, "sa_tpartreimbursementdetail", "sa_orderitemsid");
+            tpartreimbursementdetailQuery.addQueryFields("sumqty", "sum(qty)");
+            tpartreimbursementdetailQuery.setWhere("sa_orderitemsid", rows.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", rows.toArrayList("sa_orderitemsid"));
+            orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
+            Rows rows1 = orderitemsQuery.query();
+            RowsMap rowsMap= rows1.toRowsMap("sa_orderitemsid");
+            for(Row row :rows){
+                if(rowsMap.containsKey(row.getString("sa_orderitemsid"))){
+                    if(!tpartreimbursementRows.get(0).getBoolean("createflag")){
+                        row.put("qty",rowsMap.get(row.getString("sa_orderitemsid")).get(0).getBigDecimal("qty"));
+                    }
+
+                }
+            }
+        }
+
 
         return getSucReturnObject().setData(rows).toString();
     }
@@ -96,7 +123,7 @@ public class tpartreimbursementdetail extends Controller {
 
         QuerySQL orderitemsQuery = SQLFactory.createQuerySQL(dbConnect, "sa_orderitems", "sa_orderitemsid");
         orderitemsQuery.setTableAlias("t1");
-        orderitemsQuery.addJoinTable(JOINTYPE.inner,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
+        orderitemsQuery.addJoinTable(JOINTYPE.left,tpartreimbursementdetailQuery,"t2","t1.sa_orderitemsid=t2.sa_orderitemsid");
         orderitemsQuery.setWhere("t1.sa_orderitemsid", sa_orderitemsids);
         orderitemsQuery.addQueryFields("qty", "t1.tobeoffqty-ifnull(t2.sumqty,0)");
         Rows rows = orderitemsQuery.query();
@@ -165,9 +192,9 @@ public class tpartreimbursementdetail extends Controller {
         }
         Long sa_tpartreimbursementid = content.getLong("sa_tpartreimbursementid");
 
-        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail",  "sa_tpartreimbursementdetailid","remarks","sa_orderitemsid","sa_tpartreimbursementid");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_tpartreimbursementdetail",  "sa_tpartreimbursementdetailid","remarks","sa_orderitemsid","sa_tpartreimbursementid","qty");
         querySQL.setTableAlias("t1");
-        querySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","qty","price","amount","rowno","cardno","offstatus","billingstatus");
+        querySQL.addJoinTable(JOINTYPE.inner, "sa_orderitems", "t2", "t1.sa_orderitemsid = t2.sa_orderitemsid AND t1.siteid = t2.siteid","price","amount","rowno","cardno","billingstatus");
         querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t2.itemid = t3.itemid AND t2.siteid = t3.siteid","itemno","itemname","spec","model");
         querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t4", "t2.sa_orderid = t4.sa_orderid AND t2.siteid = t4.siteid","sonum");
         querySQL.addJoinTable(JOINTYPE.left, "sa_warrantycard", "t5", "t2.cardno = t5.cardno AND t2.siteid = t5.siteid","name","phonenumber");