Parcourir la source

新增配件申请单以及管理应用行新增编辑功能2025121314111503

hu il y a 4 mois
Parent
commit
9de167105d

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

@@ -6936,6 +6936,11 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025121314111503 {
+        public static class v1 {
+        }
+    }
 }
 
 

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

@@ -200,12 +200,12 @@ public class serviceorder extends Controller {
         sqlList.add(sqlFactoryupdate.getSQL());
 
         if (issumbit) {
-            Rows agents = dbConnect.runSqlQuery("select * from sa_agents where status=1 and siteid='" + siteid + "' and sys_enterpriseid=" + rows.get(0).getLong("sys_enterpriseid"));
+            Rows agents = dbConnect.runSqlQuery("select * from sa_agents where status=1 and signingstate!='停用(已止)' and siteid='" + siteid + "' and sys_enterpriseid=" + rows.get(0).getLong("sys_enterpriseid"));
             if (agents.isNotEmpty()) {
                 if (agents.get(0).getBoolean("isservice")) {
                     sqlList.add("update sa_serviceorder set status='待受理',sys_enterpriseid_service=" + agents.get(0).getLong("sys_enterpriseid") + " where sa_serviceorderid=" + sa_serviceorderid);
                 } 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");
+                    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 status=1 and signingstate!='停用(已止)' and t1.isservice=1");
                     RowsMap countyRowsMap = serviceagents.toRowsMap("county");
                     RowsMap cityRowsMap = serviceagents.toRowsMap("city");
                     RowsMap provinceRowsMap = serviceagents.toRowsMap("province");

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

@@ -46,6 +46,165 @@ public class OrderItems extends Controller {
         super(content);
     }
 
+    @API(title = "配件订单明细新增或更新", apiversion = R.ID2025121314111503.v1.class, intervaltime = 200)
+    @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class, accessoryorder.class})
+    public String insertOrUpdate_pj() throws YosException {
+        Long sa_orderid = content.getLong("sa_orderid");
+        Long sys_enterpriseid = content.getLong("sys_enterpriseid");
+        JSONArray items = content.getJSONArray("items");
+        //辅助类
+        OrderItemsHelper orderItemsHelper = new OrderItemsHelper(this);
+        ArrayList<String> sqlList = new ArrayList<>();
+
+        Rows orderRows = getOrderRows(this, sa_orderid);
+        if (orderRows.isEmpty()) {
+            return getErrReturnObject().setErrMsg("数据不存在,无法添加").toString();
+        } else {
+            if (!orderRows.get(0).getString("status").equals("新建") && !orderRows.get(0).getString("status").equals("提交") && !orderRows.get(0).getString("status").equals("预提交")) {
+                return getErrReturnObject().setErrMsg("该状态无法操作").toString();
+            }
+        }
+
+        //通过版本更新订单表头数据
+        beans.order.Order.updateOrderWithVersion(this);
+
+        String type = orderRows.get(0).getString("type");
+
+        //批量查询商品信息
+        RowsMap itemRowsMap = orderItemsHelper.getItemRowsMap(items);
+
+        BigDecimal sumqty = BigDecimal.ZERO;
+        ArrayList<Long> sa_orderitemsids_insert =new ArrayList<>();
+        for (Object obj : items) {
+
+            JSONObject item = (JSONObject) obj;
+            Long itemid = item.getLong("itemid");
+            Long sa_orderitemsid = item.getLong("sa_orderitemsid");
+            BigDecimal qty = item.getBigDecimal("qty");
+            sumqty = sumqty.add(qty);
+
+            Row itemRow = getItemRow(itemid);
+
+            Boolean isInsert = true;
+            JSONArray customproperties = new JSONArray();
+            if (sa_orderitemsid <= 0) {
+                Rows rows;
+                if(!type.equals("配件订单")){
+                    rows= dbConnect.runSqlQuery("SELECT sa_orderitemsid,price from sa_orderitems WHERE siteid='" + siteid + "' and itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and sa_promotion_itemsid=" + item.getLongValue("sa_promotion_itemsid"));
+                }else{
+                    if(StringUtils.isBlank(item.getStringValue("cardno"))){
+                        rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1  WHERE t1.siteid='" + siteid + "' and ifnull(cardno,'')='' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid);
+                    }else{
+                        rows= dbConnect.runSqlQuery("SELECT t1.sa_orderitemsid,qty from sa_orderitems t1  WHERE t1.siteid='" + siteid + "' and t1.itemid=" + itemid + " and t1.sa_orderid=" + sa_orderid + " and ifnull(t1.cardno,'')='"+item.getStringValue("cardno")+"'");
+                    }
+
+                }
+
+                if (rows.isEmpty()) {
+                    sa_orderitemsid = createTableID("sa_orderitems");
+                } else {
+                    //System.out.println(beans.order.Order.getDefaultIsRepeatValue(siteid, type));
+                    if (beans.order.Order.getDefaultIsRepeatValue(siteid, type)) {
+                        sa_orderitemsid = createTableID("sa_orderitems");
+                        isInsert = true;
+                    } else {
+                        //price1 = rows.get(0).getBigDecimal("price");
+                        sa_orderitemsid = rows.get(0).getLong("sa_orderitemsid");
+                        item.put("qty",item.getBigDecimal("qty").add(rows.get(0).getBigDecimal("qty")));
+                        isInsert = false;
+                    }
+
+                }
+            } else {
+                isInsert = false;
+            }
+            if (!isInsert) {
+                if (dbConnect.runSqlQuery("SELECT 1 from sa_orderitems WHERE itemid=" + itemid + " and sa_orderid=" + sa_orderid + " and siteid='" + siteid + "'").isEmpty()) {
+                    continue;
+                }
+            }
+
+            //是否符合商品起订量和增量判断
+            orderItemsHelper.compareQty(type, itemRowsMap, item, itemRow, new Rows());
+
+            BigDecimal defaultprice;
+            BigDecimal price;
+            BigDecimal saleprice;
+
+
+            //价格
+            ItemPrice itemPrice = ItemPrice.getItemPrice(this, sys_enterpriseid, itemid);
+            price = orderItemsHelper.getPrice(orderRows.get(0), itemPrice, item);
+            saleprice = orderItemsHelper.getSalePrice(orderRows.get(0), itemPrice, item, itemRowsMap);
+            if (price.compareTo(BigDecimal.ZERO) < 0) {
+                return getErrReturnObject().setErrMsg("价格不可小于0").toString();
+            }
+            defaultprice = price;
+            if (isInsert) {
+                sa_orderitemsids_insert.add(sa_orderitemsid);
+                sqlList.add(orderItemsHelper.getInsertSQL(customproperties, sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, itemPrice.getMarketprice(), "", new Rows(), 0, 0, BigDecimal.ZERO, BigDecimal.valueOf(1),  BigDecimal.valueOf(1)).getSQL());
+                if (item.getLongValue("sa_workorderid") != 0) {
+                    sqlList.add("update sa_workorder_node_items set sourceid=" + sa_orderid + ",sourcetable='sa_order' where sa_workorderid=" + item.getLongValue("sa_workorderid") + " and itemid=" + item.getLong("itemid"));
+                }
+            } else {
+                price = item.getBigDecimal("price");
+                defaultprice=item.getBigDecimal("defaultprice");
+                sqlList.add(orderItemsHelper.getUpdateSQL(sa_orderitemsid, item, itemRow, type, defaultprice, price, saleprice, 0,0).getSQL());
+            }
+
+
+        }
+
+        dbConnect.runSqlUpdate(sqlList);
+        //重新排序
+        updateRowNo(sa_orderid);
+        //更新订单扣款信息
+        updateAccountclassinfos(sa_orderid);
+
+        if(type.equals("配件订单")){
+            dbConnect.runSqlUpdate("UPDATE sa_order o JOIN (SELECT  sa_orderid,GROUP_CONCAT(DISTINCT delivery SEPARATOR '+') AS delivery FROM sa_orderitems where sa_orderid="+sa_orderid+" GROUP BY sa_orderid) od ON o.sa_orderid = od.sa_orderid SET  o.delivery = od.delivery ");
+        }
+        sqlList=new ArrayList<>();
+        if (type.equals("配件订单")) {
+            Rows rowsdetails = dbConnect.runSqlQuery("select t1.price,t1.amount,t1.sa_orderitemsid,t1.itemid,ifnull(t2.iswriteoff,0) iswriteoff,t3.begdate,t3.enddate from sa_orderitems t1 " +
+                    "left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid " +
+                    "left join sa_warrantycard t3 on t1.cardno=t3.cardno and t1.siteid=t3.siteid and t3.isvoid=0 and t3.deleted=0 where t1.sa_orderid=" + sa_orderid);
+            for (Row rowsdetail : rowsdetails) {
+                String billingstatus = "";
+                BigDecimal price = rowsdetail.getBigDecimal("price");
+                BigDecimal amount = rowsdetail.getBigDecimal("amount");
+                String begdate = rowsdetail.getString("begdate");
+                String enddate = rowsdetail.getString("enddate");
+                if (StringUtils.isBlank(begdate) || StringUtils.isBlank(enddate)) {
+                    billingstatus = "保外收费";
+                } else {
+                    Date date = new Date();
+                    if (date.before(rowsdetail.getDate("enddate"))) {
+                        if (rowsdetail.getBoolean("iswriteoff")) {
+                            billingstatus = "保内收费";
+                        } else {
+                            billingstatus = "保内免费";
+                            if(sa_orderitemsids_insert.contains(rowsdetail.getLong("sa_orderitemsid"))){
+                                price = BigDecimal.ZERO;
+                                amount = BigDecimal.ZERO;
+                            }
+
+                        }
+                    }else{
+                        billingstatus = "保外收费";
+                    }
+                }
+                if(!billingstatus.equals("保内收费")){
+                    sqlList.add("update sa_orderitems set canoffqty=0 where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
+                }
+                sqlList.add("update sa_orderitems set price=" + price + ",amount=" + amount + ",billingstatus='" + billingstatus + "' where sa_orderitemsid=" + rowsdetail.getLong("sa_orderitemsid"));
+            }
+        }
+        dbConnect.runSqlUpdate(sqlList);
+
+        return getSucReturnObject().toString();
+    }
+
     @API(title = "新增或更新", apiversion = R.ID20221109093602.v1.class, intervaltime = 200)
     @CACHEING_CLEAN(apiClass = {Order.class, OrderItems.class, restcontroller.sale.order.Order.class, ToolBill.class, accessoryorder.class})
     public String insertOrUpdate() throws YosException {