Selaa lähdekoodia

经销商客户保修卡转移

hxh 3 viikkoa sitten
vanhempi
commit
efaa49e4f1

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

@@ -7004,6 +7004,10 @@ public class R {
         public static class v1 {
         }
     }
+    public static class ID2025122416185003 {
+        public static class v1 {
+        }
+    }
 
 }
 

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

@@ -219,6 +219,15 @@ public class accessoryorder extends Controller {
             if(expressformrowsMap.containsKey(row.getString("sa_orderid"))){
                 row.put("expressform",expressformrowsMap.get(row.getString("sa_orderid")).get(0));
             }
+            if(expressformrowsMap.containsKey(row.getString("sa_orderid"))){
+                row.put("expressform_mailno",expressformrowsMap.get(row.getString("sa_orderid")).get(0).getString("mailno"));
+                row.put("expressform_txlogisticid",expressformrowsMap.get(row.getString("sa_orderid")).get(0).getString("txlogisticid"));
+
+            }else{
+                row.put("expressform_mailno","");
+                row.put("expressform_txlogisticid","");
+
+            }
 //            if(arearowsrowsMap.containsKey(row.getString("sys_enterpriseid"))){
 //                row.put("areaname",arearowsrowsMap.get(row.getString("sys_enterpriseid")).get(0).getString("areaname"));
 //                row.put("areanum",arearowsrowsMap.get(row.getString("sys_enterpriseid")).get(0).getString("areanum"));

+ 1 - 0
src/custom/restcontroller/webmanage/sale/agents/SQL/经销商详情查询.sql

@@ -34,6 +34,7 @@ select t1.sys_enterpriseid,
        t2.salearea,
        t2.paymans,
        t2.regiontype,
+       t2.toagentnum,
        (SELECT enterprisename  FROM sys_enterprise WHERE sys_enterpriseid = (SELECT sys_enterpriseid FROM sa_agents WHERE sa_agentsid = t2.parentid)) parent_enterprisename,
        t4.erpagentnum,
        t2.isservice,

+ 142 - 0
src/custom/restcontroller/webmanage/sale/agents/agents.java

@@ -19,13 +19,17 @@ import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.DataFormat;
 import org.apache.poi.xssf.usermodel.*;
 import restcontroller.R;
+import restcontroller.sale.stockbill.stockbill;
 import restcontroller.webmanage.executorService.Executor;
 import restcontroller.webmanage.sale.bankabcxccard.bankabcxccard;
+import restcontroller.webmanage.sale.customer.Customer;
 import restcontroller.webmanage.sale.enterprisesaleclass.EnterpriseSaleClass;
 import restcontroller.webmanage.sale.enterprisetradefield.EnterpriseTradeField;
+import restcontroller.webmanage.sale.expressform.expressform;
 import restcontroller.webmanage.sale.salearea.salearea;
 import restcontroller.webmanage.sale.tpartreimbursement.tpartreimbursement;
 import restcontroller.webmanage.sale.tpartreimbursement.tpartreimbursementdetail;
+import restcontroller.webmanage.sale.warrantycard.warrantycard;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -118,6 +122,144 @@ public class agents extends Controller {
         return getSucReturnObject().setData(agentRows.isNotEmpty() ? agentRows.get(0) : new Row()).toString();
     }
 
+    public void changeagentvalidate(boolean ischange,long sa_agentsid,String toagentnum,Rows agents_toagentslogRows,String agentnum,Rows agentsRows) throws YosException {
+        if (ischange) {
+            if (StringUtils.isBlank(toagentnum)) {
+                throw new YosException("授权经销商编号不能为空");
+            }
+            if (agentnum.equals(toagentnum)) {
+                throw new YosException( "授权经销商不可等于当前经销商");
+            }
+            if (!agents_toagentslogRows.isEmpty()) {
+                throw new YosException("已授权,不能重复授权,如需变更,请先取消授权");
+            }
+            if(StringUtils.isNotBlank(agentsRows.get(0).getString("toagentnum"))){
+                throw new YosException("已授权,不能重复授权");
+            }
+        } else {// 取消授权
+            if(StringUtils.isBlank(agentsRows.get(0).getString("toagentnum"))){
+                throw new YosException("未授权,无法取消授权");
+            }
+            if (agents_toagentslogRows.isEmpty()) {
+                throw new YosException("不存在授权其他经销商变更记录,无法取消授权");
+            }
+            ArrayList sa_warrantycardids= agents_toagentslogRows.toRowsMap("sourceobject").get("sa_warrantycard").toArrayList("sourceid");
+            ArrayList sa_customersids= agents_toagentslogRows.toRowsMap("sourceobject").get("sa_customers").toArrayList("sourceid");
+
+            QuerySQL warrantycardquerySQL=SQLFactory.createQuerySQL(this,"sa_warrantycard","*");
+            warrantycardquerySQL.setTableAlias("t1");
+            warrantycardquerySQL.setWhere("t1.siteid",siteid);
+            warrantycardquerySQL.setWhere("t1.sa_warrantycardid",sa_warrantycardids);
+            Rows warrantycardrows=warrantycardquerySQL.query();
+            RowsMap warrantycardrowsMap =warrantycardrows.toRowsMap("sa_warrantycardid");
+
+            QuerySQL customersquerySQL=SQLFactory.createQuerySQL(this,"sa_customers","*");
+            customersquerySQL.setTableAlias("t1");
+            customersquerySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t2", " t1.sa_agentsid_to = t2.sa_agentsid and t1.siteid = t2.siteid");
+            customersquerySQL.setWhere("t1.siteid",siteid);
+            customersquerySQL.setWhere("t1.sa_customersid",sa_customersids);
+            customersquerySQL.addQueryFields("toagentnum","t2.agentnum");
+            Rows customersrows=customersquerySQL.query();
+            RowsMap customersrowsMap = customersrows.toRowsMap("sa_customersid");
+            for(Row row : agents_toagentslogRows){
+                if(row.getString("sourceobject").equals("sa_warrantycard")){
+                    if(warrantycardrowsMap.containsKey(row.getString("sourceid"))){
+                        if(!warrantycardrowsMap.get(row.getString("sourceid")).get(0).getString("toagentnum").equals(agentsRows.get(0).getString("toagentnum"))){
+                            throw new YosException("保修卡的授权经销商已变为"
+                                    + warrantycardrowsMap.get(row.getString("sourceid")).get(0).getString("toagentnum")
+                                    + "不可取消授权");
+                        }
+                    }
+                }
+                if(row.getString("sourceobject").equals("sa_customers")){
+                    if(customersrowsMap.containsKey(row.getString("sourceid"))){
+                        if(!customersrowsMap.get(row.getString("sourceid")).get(0).getString("toagentnum").equals(agentsRows.get(0).getString("toagentnum"))){
+                            throw new YosException("客户档案的授权经销商已变为"
+                                    + customersrowsMap.get(row.getString("sourceid")).get(0).getString("toagentnum")
+                                    + "不可取消授权");
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    @API(title = "经销商客户保修卡转移", apiversion = R.ID2025122416185003.v1.class)
+    @CACHEING_CLEAN(apiClass = {agents.class, warrantycard.class, Customer.class})
+    public String changeagent() throws YosException {
+        boolean ischange = content.getBoolean("ischange");
+        String toagentnum=content.getString("toagentnum");
+        long sa_agentsid_to=content.getLong("sa_agentsid_to");
+        long sa_agentsid=content.getLong("sa_agentsid");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows agents_toagentslogRows =dbConnect.runSqlQuery("select * from sa_agents_toagentslog where isvoid=0 and sa_agentsid="+sa_agentsid);
+        String agentnum = "";
+
+        Rows agentsRows =dbConnect.runSqlQuery("select agentnum,toagentnum from sa_agents where sa_agentsid="+sa_agentsid);
+        if(agentsRows.isEmpty()){
+            throw new YosException("该经销商不存在");
+        }else{
+            agentnum=agentsRows.get(0).getString("agentnum");
+        }
+
+        changeagentvalidate(ischange,sa_agentsid,toagentnum,agents_toagentslogRows,agentnum,agentsRows);
+
+
+        if (ischange) {
+            sqlList.add("update sa_agents set toagentnum ='"+toagentnum+"' where sa_agentsid="+sa_agentsid);
+
+            Rows customersRows=dbConnect.runSqlQuery("select * from sa_customers where sa_agentsid=sa_agentsid_to and sa_agentsid="+sa_agentsid);
+            Rows warrantycardRows=dbConnect.runSqlQuery("select * from sa_warrantycard  where toagentnum='"+agentnum+"' and sa_agentsid="+sa_agentsid);
+
+            long[] sa_agents_toagentslogsid = createTableID("sa_agents_toagentslog", customersRows.size()+warrantycardRows.size());
+            int i = 0;
+            for(Row row :customersRows){
+                sqlList.add("update sa_customers set sa_agentsid_to="+sa_agentsid_to+" where sa_customersid="+row.getLong("sa_customersid"));
+                InsertSQL insertSQL =SQLFactory.createInsertSQL(this,"sa_agents_toagentslog");
+                insertSQL.setUniqueid(sa_agents_toagentslogsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_agentsid", sa_agentsid);
+                insertSQL.setValue("toagentnum", toagentnum);
+                insertSQL.setValue("sourceobject", "sa_customers");
+                insertSQL.setValue("sourceid", row.getLong("sa_customersid"));
+                insertSQL.setValue("isvoid", 0);
+                insertSQL.setValue("createby", username);
+                insertSQL.setDateValue("createdate");
+                sqlList.add(insertSQL.getSQL());
+                i++;
+            }
+
+            for(Row row :warrantycardRows){
+                sqlList.add("update sa_warrantycard set toagentnum="+toagentnum+" where sa_warrantycardid="+row.getLong("sa_warrantycardid"));
+                InsertSQL insertSQL =SQLFactory.createInsertSQL(this,"sa_agents_toagentslog");
+                insertSQL.setUniqueid(sa_agents_toagentslogsid[i]);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("sa_agentsid", sa_agentsid);
+                insertSQL.setValue("toagentnum", toagentnum);
+                insertSQL.setValue("sourceobject", "sa_warrantycard");
+                insertSQL.setValue("sourceid", row.getLong("sa_warrantycardid"));
+                insertSQL.setValue("isvoid", 0);
+                insertSQL.setValue("createby", username);
+                insertSQL.setDateValue("createdate");
+                sqlList.add(insertSQL.getSQL());
+                i++;
+            }
+        } else {// 取消授权
+            for(Row row : agents_toagentslogRows){
+                if(row.getString("sourceobject").equals("sa_warrantycard")){
+                    sqlList.add("update sa_warrantycard set toagentnum='"+agentnum+"' where sa_warrantycardid="+row.getLong("sourceid"));
+                }
+                if(row.getString("sourceobject").equals("sa_customers")){
+                    sqlList.add("update sa_customers set sa_agentsid_to="+sa_agentsid+" where sa_customersid="+row.getLong("sourceid"));
+                }
+                sqlList.add("update sa_agents_toagentslog set isvoid=1 where sa_agents_toagentslogid="+row.getLong("sa_agents_toagentslogid"));
+            }
+            sqlList.add("update sa_agents set toagentnum ='' where sa_agentsid="+sa_agentsid);
+        }
+
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
 
     @API(title = "经销商新增修改", intervaltime = 200)
     @CACHEING_CLEAN(apiClass = {EnterpriseTradeField.class}, cms = {@cm(clazz = agents.class, method = {"query_agentList", "query_agentMain"}), @cm(clazz = salearea.class, method = {"query_agent"}), @cm(clazz = salearea.class, method = {"query_agent"})})

+ 12 - 2
src/custom/restcontroller/webmanage/sale/expressform/expressform.java

@@ -121,7 +121,7 @@ public class expressform extends Controller {
             sqlList.add(DataContrlLog.createLog(this, "expressform", expressformid, "新增", "快递信息新增成功").getSQL());
         } else {
             Rows rows = dbConnect.runSqlQuery(
-                    "SELECT status from expressform WHERE expressformid = "
+                    "SELECT status,txlogisticid from expressform WHERE expressformid = "
                             + expressformid);
             if (rows.isNotEmpty()) {
                 if (rows.get(0).getString("status").equals("新建")) {
@@ -157,6 +157,10 @@ public class expressform extends Controller {
                     updateSQL.setDateValue("changedate");
                     sqlList.add(updateSQL.getSQL());
 
+                    Rows expressform_stockbillrows = dbConnect.runSqlQuery("select * from sa_expressform_stockbill from expressformid="+expressformid);
+                    for (Row row:expressform_stockbillrows) {
+                        sqlList.add("update st_stockbill set txlogisticid='"+rows.get(0).getString("txlogisticid")+"',mailno='"+mailno+"' where st_stockbillid="+row.getLong("st_stockbillid"));
+                    }
                     sqlList.add(DataContrlLog.createLog(this, "expressform", expressformid, "更新", "快递信息更新成功").getSQL());
                 } else {
                     return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
@@ -360,7 +364,7 @@ public class expressform extends Controller {
             insertSQL.setValue("st_stockbillid",  row.getLong("st_stockbillid"));
             insertSQL.setValue("expressformid", expressformid);
             sqlList.add(insertSQL.getSQL());
-//            sqlList.add("update st_stockbill set txlogisticid='" + txlogisticid + "',mailno='" + mailno + "' where st_stockbillid=" + row.getLong("st_stockbillid"));
+            sqlList.add("update st_stockbill set txlogisticid='" + txlogisticid + "',mailno='" + mailno + "' where st_stockbillid=" + row.getLong("st_stockbillid"));
         }
         dbConnect.runSqlUpdate(sqlList);
         return getSucReturnObject().toString();
@@ -472,6 +476,7 @@ public class expressform extends Controller {
      * @throws YosException
      */
     @API(title = "申请圆通电子面单号", apiversion = R.ID2025080714245303.v1.class)
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
     public String applyMailNo_YTO() throws YosException {
         JSONArray expressformids = content.getJSONArray("expressformids");
         ArrayList<String> sqlList = new ArrayList<>();
@@ -562,6 +567,11 @@ public class expressform extends Controller {
                     updateSQL.setValue("success", 1);
                     updateSQL.setValue("changeby", username);
                     updateSQL.setDateValue("changedate");
+                    Rows expressform_stockbillrows = dbConnect.runSqlQuery("select * from sa_expressform_stockbill from expressformid="+row.getLong("expressformid"));
+                    for (Row row1:expressform_stockbillrows) {
+                        sqlList.add("update st_stockbill set txlogisticid='"+row.getString("txlogisticid")+"',mailno='"+(String) resultMap.get("mailNo")+"' where st_stockbillid="+row1.getLong("st_stockbillid"));
+                    }
+
                     sqlList.add(updateSQL.getSQL());
                 } else {//失败
                     UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");

+ 1 - 1
src/custom/restcontroller/webmanage/sale/salearea/salearea.java

@@ -463,7 +463,7 @@ public class salearea extends Controller {
 
     public QuerySQL getAgentList(String where) throws YosException {
         QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_agents","sys_enterpriseid", "isservice",
-                "sa_agentsid","agentnum","priceadjustment","type","signdate","createby","createdate","islimitaccessories","islimitorder","signingstate","aftersalesphonenumber");
+                "sa_agentsid","agentnum","priceadjustment","type","signdate","createby","createdate","islimitaccessories","islimitorder","signingstate","aftersalesphonenumber","toagentnum");
         querySQL.setTableAlias("t1");
         querySQL.addJoinTable(JOINTYPE.inner, "sys_enterprise", "t2", "t1.siteid = t2.siteid and t1.sys_enterpriseid = t2.sys_enterpriseid",
                 "enterprisename","abbreviation", "phonenumber", "contact", "province", "city", "county", "address", "limitreturnday", "freefreightamount", "invoicingpoint","saleclassauth");