shenjingwei hai 1 semana
pai
achega
8cdabc7075

+ 14 - 20
src/custom/restcontroller/crm/agent/item/item.java

@@ -165,28 +165,22 @@ public class item extends Controller {
             @Param(paramname = "sys_enterprise_itemids", fieldtype = FieldType.JSON, remarks = "企业商品ID,[1,2,3]", isrequired = true)})
             @Param(paramname = "sys_enterprise_itemids", fieldtype = FieldType.JSON, remarks = "企业商品ID,[1,2,3]", isrequired = true)})
     public String sys_enterprise_item_delete() throws YosException {
     public String sys_enterprise_item_delete() throws YosException {
         JSONArray sys_enterprise_itemids = content.getJSONArray("sys_enterprise_itemids");
         JSONArray sys_enterprise_itemids = content.getJSONArray("sys_enterprise_itemids");
-        for (int i = 0; i < sys_enterprise_itemids.size(); i++) {
-            long sys_enterprise_itemid = sys_enterprise_itemids.getLongValue(i);
-            Rows enterprise_itemRows = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setUniqueid(sys_enterprise_itemid).query();
-            if (enterprise_itemRows.isNotEmpty() && enterprise_itemRows.getRow(0).getBoolean("isonsale")) {
-                return getErrReturnObject().setErrMsg("商品" + enterprise_itemRows.getRow(0).getString("itemname") + "已上架,请先下架").toString();
-            }
-            Rows custorderitemsRows = SQLFactory.createQuerySQL(this, "sa_custorderitems").setWhere("sys_enterprise_itemid", sys_enterprise_itemid).setPage(1, 1).query();
-            if (custorderitemsRows.isNotEmpty()) {
-                return getErrReturnObject().setErrMsg("商品" + enterprise_itemRows.getRow(0).getString("itemname") + "已存在订单,无法删除").toString();
-            }
 
 
-            QuerySQL usecheck = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setTableAlias("t1");
-            usecheck.setSiteid(siteid);
-            usecheck.setWhere("sys_enterprise_itemid", sys_enterprise_itemid);
-            usecheck.setWhere("exists(select distinct sys_enterprise_itemid from sys_enterprise_invbal t2 where t1.sys_enterprise_itemid=t2.sys_enterprise_itemid)" +
-                    "or exists(select distinct sys_enterprise_itemid from sa_custorderitems t3 where t1.sys_enterprise_itemid=t3.sys_enterprise_itemid)" +
-                    "or exists(select distinct sys_enterprise_itemid from sys_enterprise_stockbill_items t4 where t1.sys_enterprise_itemid=t4.sys_enterprise_itemid)");
-            if (!usecheck.query().isEmpty()) {
-                return getErrReturnObject().setErrMsg("该商品已被使用,不可删除!").toString();
-            }
-            SQLFactory.createDeleteSQL(this, "sys_enterprise_item").setSiteid(siteid).setWhere("sys_enterprise_itemid", sys_enterprise_itemid).delete();
+        Rows enterprise_itemRows = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setWhere("sys_enterprise_itemid", sys_enterprise_itemids).setWhere("isonsale", true).query();
+        if (enterprise_itemRows.isNotEmpty()) {
+            return getErrReturnObject().setErrMsg("商品【" + String.join(",", enterprise_itemRows.toArray("itemname")) + "】已上架,请先下架").toString();
+        }
+        Rows custorderitemsRows = SQLFactory.createQuerySQL(this, "sa_custorderitems").setWhere("sys_enterprise_itemid", sys_enterprise_itemids).setPage(1, 1).query();
+        if (custorderitemsRows.isNotEmpty()) {
+            return getErrReturnObject().setErrMsg("商品【" + String.join(",", enterprise_itemRows.toArray("itemname")) + "】已存在订单,无法删除").toString();
+        }
+        Rows sys_enterprise_stockbill_itemsRows = SQLFactory.createQuerySQL(this, "sys_enterprise_stockbill_items").setTableAlias("t1")
+                .addJoinTable(JOINTYPE.inner, "sys_enterprise_item", "t2", "t1.sys_enterprise_itemid=t2.sys_enterprise_itemid", "itemname")
+                .setWhere("t1.sys_enterprise_itemid", sys_enterprise_itemids).setPage(1, 1).query();
+        if (sys_enterprise_stockbill_itemsRows.isNotEmpty()) {
+            return getErrReturnObject().setErrMsg("商品【" + String.join(",", sys_enterprise_stockbill_itemsRows.toArray("itemname")) + "】存在出入库信息,无法删除").toString();
         }
         }
+        SQLFactory.createDeleteSQL(this, "sys_enterprise_item").setSiteid(siteid).setWhere("sys_enterprise_itemid", sys_enterprise_itemids).delete();
         return getSucReturnObject().toString();
         return getSucReturnObject().toString();
     }
     }
 
 

+ 1 - 1
src/custom/restcontroller/crm/manage/stock/skudbapply.java

@@ -23,7 +23,7 @@ public class skudbapply extends Controller {
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid_in=t2.sys_enterpriseid", "t2.enterprisename as enterprisename_in");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid_in=t2.sys_enterpriseid", "t2.enterprisename as enterprisename_in");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t1.sys_enterpriseid_out=t3.sys_enterpriseid", "t3.enterprisename as enterprisename_out");
         querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t1.sys_enterpriseid_out=t3.sys_enterpriseid", "t3.enterprisename as enterprisename_out");
         querySQL.addJoinTable(JOINTYPE.left, "sa_itemsku", "t4", "t1.sku=t4.sku");
         querySQL.addJoinTable(JOINTYPE.left, "sa_itemsku", "t4", "t1.sku=t4.sku");
-        querySQL.addJoinTable(JOINTYPE.left, "sa_itemsku", "t5", "t4.itemid=t5.itemid", "itemno", "itemname", "model", "spec");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t5", "t4.itemid=t5.itemid", "itemno", "itemname", "model", "spec");
         querySQL.setSiteid(siteid);
         querySQL.setSiteid(siteid);
         querySQL.setPage(pageSize, pageNumber);
         querySQL.setPage(pageSize, pageNumber);
         Rows rows = querySQL.query();
         Rows rows = querySQL.query();

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

@@ -1,82 +1,84 @@
-select * from ((SELECT
-                    t4.agentnum,
-                    t5.contact,
-                    t5.phonenumber,
-                    t5.address,
-                    t5.enterprisename,
-                    t5.abbreviation,
-                    case when (LENGTH(t6.cardno)>0 and t6.isvoid=0) then '已安装' else '未安装' end isinstalled,
-                    case when current_date between t6.begdate and t6.enddate then '在保' else '过保' end warrantystatus,
-                    t6.cardno,
-                    t6.begdate,
-                    t6.enddate,
-                    t6.isvoid,
-                    t7.sa_customersid,
-                    t1.sku,
-                    t1.sa_itemskuid,
-                    t2.itemid,
-                    t2.itemno,
-                    t2.itemname,
-                    t2.model,
-                    t2.spec,
-                    t3.unitname,
-                    t7.name as customername,
-                    t7.phonenumber as customerphonenumber,
-                    t2.topclassnum
-                FROM sa_itemsku t1
-                         LEFT JOIN plm_item t2 ON t1.itemid = t2.itemid AND t1.siteid = t2.siteid
-                         LEFT JOIN plm_unit t3 ON t3.unitid = t2.unitid AND t3.siteid = t2.siteid
-                         LEFT JOIN sa_agents t4 ON t4.sys_enterpriseid = t1.sys_enterpriseid
-                    AND t4.siteid = t1.siteid
-                         LEFT JOIN sys_enterprise t5 ON t5.sys_enterpriseid = t4.sys_enterpriseid
-                    AND t5.siteid = t4.siteid
-                         LEFT JOIN sa_warrantycard t6 ON t6.sku = t1.sku AND t1.siteid = t6.siteid
-                         LEFT JOIN sa_customers t7 ON t6.sa_customersid = t7.sa_customersid
-                    AND t6.siteid = t7.siteid
-                WHERE t1.siteid =$siteid$
-                  AND t1.sys_enterpriseid = $sys_enterpriseid$
-                ORDER BY t1.sa_itemskuid)
+select *
+from ((SELECT t4.agentnum,
+              t5.contact,
+              t5.phonenumber,
+              t5.address,
+              t5.enterprisename,
+              t5.abbreviation,
+              case when (LENGTH(t6.cardno) > 0 and t6.isvoid = 0) then '已安装' else '未安装' end  isinstalled,
+              case when current_date between t6.begdate and t6.enddate then '在保' else '过保' end warrantystatus,
+              t6.cardno,
+              t6.begdate,
+              t6.enddate,
+              t6.isvoid,
+              t7.sa_customersid,
+              t1.sku,
+              t1.sa_itemskuid,
+              t2.itemid,
+              t2.itemno,
+              t2.itemname,
+              t2.model,
+              t2.spec,
+              t3.unitname,
+              t7.name        as                                                                    customername,
+              t7.phonenumber as                                                                    customerphonenumber,
+              t2.topclassnum,
+              t6.sa_warrantycardid
+       FROM sa_itemsku t1
+                LEFT JOIN plm_item t2 ON t1.itemid = t2.itemid AND t1.siteid = t2.siteid
+                LEFT JOIN plm_unit t3 ON t3.unitid = t2.unitid AND t3.siteid = t2.siteid
+                LEFT JOIN sa_agents t4 ON t4.sys_enterpriseid = t1.sys_enterpriseid
+           AND t4.siteid = t1.siteid
+                LEFT JOIN sys_enterprise t5 ON t5.sys_enterpriseid = t4.sys_enterpriseid
+           AND t5.siteid = t4.siteid
+                LEFT JOIN sa_warrantycard t6 ON t6.sku = t1.sku AND t1.siteid = t6.siteid
+                LEFT JOIN sa_customers t7 ON t6.sa_customersid = t7.sa_customersid
+           AND t6.siteid = t7.siteid
+       WHERE t1.siteid = $siteid$
+         AND t1.sys_enterpriseid = $sys_enterpriseid$
+       ORDER BY t1.sa_itemskuid)
 
 
-               UNION ALL
+      UNION ALL
 
 
-               (SELECT
-                    t4.agentnum,
-                    t5.contact,
-                    t5.phonenumber,
-                    t5.address,
-                    t5.enterprisename,
-                    t5.abbreviation,
-                    case when (LENGTH(t6.cardno)>0 and t6.isvoid=0) then '已安装' else '未安装' end isinstalled,
-                    case when current_date between t6.begdate and t6.enddate then '在保' else '过保' end warrantystatus,
-                    t6.cardno,
-                    t6.begdate,
-                    t6.enddate,
-                    t6.isvoid,
-                    t7.sa_customersid,
-                    t1.sku,
-                    t1.sa_itemskuid,
-                    t2.itemid,
-                    t2.itemno,
-                    t2.itemname,
-                    t2.model,
-                    t2.spec,
-                    t3.unitname,
-                    t7.name as customername,
-                    t7.phonenumber as customerphonenumber,
-                    t2.topclassnum
-                FROM sa_itemsku t1
-                         INNER JOIN sa_agents a ON t1.sa_agentsid = a.sa_agentsid
-                    AND t1.siteid = a.siteid
-                         LEFT JOIN plm_item t2 ON t1.itemid = t2.itemid AND t1.siteid = t2.siteid
-                         LEFT JOIN plm_unit t3 ON t3.unitid = t2.unitid AND t3.siteid = t2.siteid
-                         LEFT JOIN sa_agents t4 ON t4.sys_enterpriseid = t1.sys_enterpriseid
-                    AND t4.siteid = t1.siteid
-                         LEFT JOIN sys_enterprise t5 ON t5.sys_enterpriseid = t4.sys_enterpriseid
-                    AND t5.siteid = t4.siteid
-                         LEFT JOIN sa_warrantycard t6 ON t6.sku = t1.sku AND t1.siteid = t6.siteid
-                         LEFT JOIN sa_customers t7 ON t6.sa_customersid = t7.sa_customersid
-                    AND t6.siteid = t7.siteid
-                WHERE t1.siteid = $siteid$
-                  AND a.sys_enterpriseid =$sys_enterpriseid$
-                  AND t1.sys_enterpriseid != $sys_enterpriseid$
-                ORDER BY t1.sa_itemskuid)) t1 where $where$
+      (SELECT t4.agentnum,
+              t5.contact,
+              t5.phonenumber,
+              t5.address,
+              t5.enterprisename,
+              t5.abbreviation,
+              case when (LENGTH(t6.cardno) > 0 and t6.isvoid = 0) then '已安装' else '未安装' end  isinstalled,
+              case when current_date between t6.begdate and t6.enddate then '在保' else '过保' end warrantystatus,
+              t6.cardno,
+              t6.begdate,
+              t6.enddate,
+              t6.isvoid,
+              t7.sa_customersid,
+              t1.sku,
+              t1.sa_itemskuid,
+              t2.itemid,
+              t2.itemno,
+              t2.itemname,
+              t2.model,
+              t2.spec,
+              t3.unitname,
+              t7.name        as                                                                    customername,
+              t7.phonenumber as                                                                    customerphonenumber,
+              t2.topclassnum,
+              t6.sa_warrantycardid
+       FROM sa_itemsku t1
+                INNER JOIN sa_agents a ON t1.sa_agentsid = a.sa_agentsid
+           AND t1.siteid = a.siteid
+                LEFT JOIN plm_item t2 ON t1.itemid = t2.itemid AND t1.siteid = t2.siteid
+                LEFT JOIN plm_unit t3 ON t3.unitid = t2.unitid AND t3.siteid = t2.siteid
+                LEFT JOIN sa_agents t4 ON t4.sys_enterpriseid = t1.sys_enterpriseid
+           AND t4.siteid = t1.siteid
+                LEFT JOIN sys_enterprise t5 ON t5.sys_enterpriseid = t4.sys_enterpriseid
+           AND t5.siteid = t4.siteid
+                LEFT JOIN sa_warrantycard t6 ON t6.sku = t1.sku AND t1.siteid = t6.siteid
+                LEFT JOIN sa_customers t7 ON t6.sa_customersid = t7.sa_customersid
+           AND t6.siteid = t7.siteid
+       WHERE t1.siteid = $siteid$
+         AND a.sys_enterpriseid = $sys_enterpriseid$
+         AND t1.sys_enterpriseid != $sys_enterpriseid$
+       ORDER BY t1.sa_itemskuid)) t1
+where $where$