Jelajahi Sumber

工单完工流程(注:自动自动完工工单自动任务未测试)

hu 5 bulan lalu
induk
melakukan
ad7dec7214

+ 70 - 33
src/custom/restcontroller/webmanage/sale/serviceorder/serviceorder.java

@@ -3,6 +3,7 @@ package restcontroller.webmanage.sale.serviceorder;
 import beans.data.BatchDeleteErr;
 import beans.datacontrllog.DataContrlLog;
 import beans.datateam.DataTeam;
+import beans.parameter.Parameter;
 import beans.salearea.SaleArea;
 import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
@@ -684,25 +685,40 @@ public class serviceorder extends Controller {
 
     @API(title = "发送手机验证码", apiversion = R.ID20230215173103.v1.class, accesstoken = false)
     public String sendMessage() throws YosException {
-        String customerphone = content.getStringValue("customerphone");
+        String customerphone = "";
+        long sa_workorderid=content.getLong("sa_workorderid");
+        Rows rows = dbConnect.runSqlQuery("select t1.type,t2.* from sa_workorder t1 inner join sa_serviceorder t2 on t1.sa_serviceorderid=t2.sa_serviceorderid and t1.siteid=t2.siteid where t1.sa_workorderid="+sa_workorderid);
+        if(rows.isEmpty()){
+            return getErrReturnObject().setErrMsg("该工单不存在").toString();
+        }
+        long createuserid = rows.get(0).getLong("createuserid");
+        String type=rows.get(0).getString("type");
+        Rows userrows =dbConnect.runSqlQuery("select t2.usertype,t1.phonenumber from  sys_users t1 inner join sys_usersite t2 on t1.userid = t2.userid where t2.siteid = '"+siteid+"' and t1.userid="+createuserid);
+        long usertype = 0;
+        if(userrows.isNotEmpty()){
+            usertype=userrows.get(0).getLong("usertype");
+        }else{
+            //return getErrReturnObject().setErrMsg("工单创建人信息有误").toString();
+        }
+
+        if(usertype==99){
+            customerphone=userrows.get(0).getString("phonenumber");
+        }else{
+            if(type.equals("安装")){
+                customerphone=rows.get(0).getString("scenecontactphonenumber");
+            }
+        }
+
         if (!Pattern.matches("^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$", customerphone)) {
             return getErrReturnObject().setErrMsg("手机格式有误").toString();
         }
-        Rows rows = dbConnect.runSqlQuery("select scenecontactphonenumber from sa_serviceorder where scenecontactphonenumber='" + customerphone + "'");
-        if (rows.isEmpty()) {
-            return getErrReturnObject().setErrMsg("您的手机号暂无使用权限!").toString();
-        }
         String verificationCode = createVerificationCode();
-        String result = null;
-        try {
-            result = sendMessage_0(customerphone, verificationCode);
-        } catch (Exception e) {
-            return getErrReturnObject().setErrMsg(e.getMessage()).toString();
-        }
+        Sms sms = new Sms();
+        sms.sendout(Sms.SmsType.PassWord,customerphone, Parameter.getString("chuanglan_sms_model_password"), new String[]{verificationCode});
         message_map.put(customerphone, new VerificationManage(verificationCode));
         Row row = new Row();
-        row.put("code", verificationCode);
-        row.put("msg", result);
+        row.put("code", 1);
+        row.put("msg", "手机验证码已发送,请注意查收!");
         return getSucReturnObject().setData(row).toString();
     }
 
@@ -711,7 +727,29 @@ public class serviceorder extends Controller {
      **/
     @API(title = "发送手机验证码", apiversion = R.ID20230215173203.v1.class, accesstoken = false)
     public String checkVerificationCode() throws YosException {
-        String customerphone = content.getStringValue("customerphone");
+        String customerphone = "";
+        long sa_workorderid=content.getLong("sa_workorderid");
+        Rows rows = dbConnect.runSqlQuery("select t1.type,t2.* from sa_workorder t1 inner join sa_serviceorder t2 on t1.sa_serviceorderid=t2.sa_serviceorderid and t1.siteid=t2.siteid where t1.sa_workorderid="+sa_workorderid);
+        if(rows.isEmpty()){
+            return getErrReturnObject().setErrMsg("该工单不存在").toString();
+        }
+        long createuserid = rows.get(0).getLong("createuserid");
+        String type=rows.get(0).getString("type");
+        Rows userrows =dbConnect.runSqlQuery("select t2.usertype,t1.phonenumber from  sys_users t1 inner join sys_usersite t2 on t1.userid = t2.userid where t2.siteid = '"+siteid+"' and t1.userid="+createuserid);
+        long usertype = 0;
+        if(userrows.isNotEmpty()){
+            usertype=userrows.get(0).getLong("usertype");
+        }else{
+            //return getErrReturnObject().setErrMsg("工单创建人信息有误").toString();
+        }
+
+        if(usertype==99){
+            customerphone=userrows.get(0).getString("phonenumber");
+        }else{
+            if(type.equals("安装")){
+                customerphone=rows.get(0).getString("scenecontactphonenumber");
+            }
+        }
         String code = content.getStringValue("code");
         if (!message_map.containsKey(customerphone) || !message_map.get(customerphone).check(code)) {
             return getErrReturnObject().setErrMsg("验证码错误或者过期").toString();
@@ -796,25 +834,24 @@ 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");
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("account", "YZM1357742");
-        jsonObject.put("password", "cBLqr5kRMVc541");
-        jsonObject.put("msg", "【Banninger】您好,您的验证码是" + verificationCode);
-        jsonObject.put("phone", phone);
-        rest.addRawBody(jsonObject.toString());
-        String s = rest.post();
-//        PaoSetRemote verCodehistory = getpaoset("VerCodehistory");
-//        PaoRemote remote = verCodehistory.addAtEnd();
-//        remote.setValue("phone",phone);
-//        remote.setValue("msg","【Banninger】您好,您的验证码是"+verificationCode);
-//        remote.setValue("content",s);
-//        verCodehistory.save();
-        return s;
-    }
+//    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");
+//        JSONObject jsonObject = new JSONObject();
+//        jsonObject.put("account", "N3147701");
+//        jsonObject.put("password", "4ClGyab6fv6a87");
+//        jsonObject.put("msg", "【浙江美大】您好,您的验证码是" + verificationCode);
+//        jsonObject.put("phone", phone);
+//        rest.addRawBody(jsonObject.toString());
+//        String s = rest.post();
+////        PaoSetRemote verCodehistory = getpaoset("VerCodehistory");
+////        PaoRemote remote = verCodehistory.addAtEnd();
+////        remote.setValue("phone",phone);
+////        remote.setValue("msg","【Banninger】您好,您的验证码是"+verificationCode);
+////        remote.setValue("content",s);
+////        verCodehistory.save();
+//        return s;
+//    }
 
 
     public static String createVerificationCode() {

+ 2 - 1
src/custom/restcontroller/webmanage/sale/workorder/SQL/服务工单列表查询.sql

@@ -27,7 +27,8 @@ select  t1.*,
         t10.enterprisename serviceenterprisename,
         t10.abbreviation serviceabbreviation,
         t10.phonenumber servicephonenumber,
-        t11.agentnum serviceagentnum
+        t11.agentnum serviceagentnum,
+        t2.createuserid serviceordercreateuserid
         from  sa_workorder t1 
    left join sa_serviceorder t2 on t1.sa_serviceorderid=t2.sa_serviceorderid and t1.siteid=t2.siteid 
    left join sa_workorder_template t4 on t1.sa_workorder_templateid=t4.sa_workorder_templateid and t1.siteid=t4.siteid

+ 25 - 1
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -453,6 +453,15 @@ public class workorder extends Controller {
         Rows rows_total = dbConnect.runSqlQuery(sqlFactory2.getSQL());
         Rows curnodesRows = dbConnect.runSqlQuery("select sa_workorderid,siteid,workpresetjson,status from (select ROW_NUMBER() over(partition by t.sa_workorderid,t.siteid order by t.sequence asc) RowNum ,t.* from sa_workorder_node t where t.status!=1 and t.parentid!=0) as t1  where RowNum = 1");
         RowsMap curnodesRowsMap = curnodesRows.toRowsMap("sa_workorderid");
+
+        QuerySQL userquerySQL = SQLFactory.createQuerySQL(this, "sys_users","userid");
+        userquerySQL.setTableAlias("t1");
+        userquerySQL.addJoinTable(JOINTYPE.left, "sys_usersite", "t2", "t1.userid = t2.userid", "usertype");
+        userquerySQL.setWhere("t2.siteid",siteid);
+        userquerySQL.setWhere("t1.userid",rows.toArrayList("serviceordercreateuserid"));
+        Rows userrows = userquerySQL.query();
+        RowsMap userrowsMap =userrows.toRowsMap("userid");
+
         if (!rows.isEmpty()) {
             for (Row row : rows) {
                 if (curnodesRowsMap.containsKey(row.getString("sa_workorderid"))) {
@@ -467,6 +476,21 @@ public class workorder extends Controller {
                     row.put("curcontent", "");
                 }
 
+                if(userrowsMap.containsKey(row.getString("serviceordercreateuserid"))){
+                    if(userrowsMap.get(row.getString("serviceordercreateuserid")).get(0).getLong("usertype")==99){
+                        row.put("needcode", true);
+                    }else{
+                        if(row.getString("type").equals("安装")){
+                            row.put("needcode", true);
+                        }else{
+                            row.put("needcode", false);
+                        }
+                    }
+
+                }else{
+                    row.put("needcode", true);
+                }
+
             }
             rows.get(0).put("rows_total", rows_total);
         }
@@ -918,7 +942,7 @@ public class workorder extends Controller {
                     .toString();
         }
         sqlList.add(
-                "update sa_workorder set status='提交' where sa_workorderid=" + sa_workorderid);
+                "update sa_workorder set status='提交,changeby='"+username+"',changedate=CURRENT_TIME where sa_workorderid=" + sa_workorderid);
         sqlList.add(DataContrlLog.createLog(this, "sa_workorder", sa_workorderid, "工单提交", "服务工单提交成功").getSQL());
 
         dbConnect.runSqlUpdate(sqlList);

+ 83 - 0
src/custom/service/AutoCompletionWorkOrder.java

@@ -0,0 +1,83 @@
+package service;
+
+import beans.datacontrllog.DataContrlLog;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
+import common.Controller;
+import common.ServiceController;
+import common.data.*;
+import common.data.db.DBConnect;
+import restcontroller.webmanage.sale.workorder.workpresetInfo;
+
+import java.time.LocalDate;
+import java.time.ZoneId;
+import java.util.ArrayList;
+/**
+ * 自动完工工单
+ */
+public class AutoCompletionWorkOrder extends ServiceController {
+    @Override
+    public void serviceRun() throws Exception {
+        String siteid = "MD";
+        int autocompletiondays = 0;
+        Rows parameterrows = dbConnect.runSqlQuery("select autocompletiondays from sys_site_parameter where siteid='" + siteid + "'");
+        if (parameterrows.isNotEmpty()) {
+            autocompletiondays = parameterrows.get(0).getInteger("autocompletiondays");
+        }
+        ArrayList<String> sqlList = new ArrayList<>();
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(dbConnect, "sa_workorder", "*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.inner, "sa_serviceorder", "t2", "t1.sa_serviceorderid=t2.sa_serviceorder and t1.siteid=t2.siteid");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.status='提交'");
+
+        querySQL.addQueryFields("serviceordercreateuserid", "t2.createuserid");
+        Rows rows = querySQL.query();
+
+
+        QuerySQL userquerySQL = SQLFactory.createQuerySQL(dbConnect, "sys_users", "userid");
+        userquerySQL.setTableAlias("t1");
+        userquerySQL.addJoinTable(JOINTYPE.left, "sys_usersite", "t2", "t1.userid = t2.userid", "usertype");
+        userquerySQL.setWhere("t2.siteid", siteid);
+        userquerySQL.setWhere("t1.userid", rows.toArrayList("serviceordercreateuserid"));
+        Rows userrows = userquerySQL.query();
+        RowsMap userrowsMap = userrows.toRowsMap("userid");
+        LocalDate today = LocalDate.now();
+
+        for (Row row : rows) {
+            if (userrowsMap.containsKey(row.getString("serviceordercreateuserid"))) {
+                if (userrowsMap.get(row.getString("serviceordercreateuserid")).get(0).getLong("usertype") != 99) {
+                    if (!row.getString("type").equals("安装")) {
+                        //row.put("needcode", true);
+                        LocalDate changedate = row.getDate("changedate").toInstant()
+                                .atZone(ZoneId.systemDefault())
+                                .toLocalDate();
+                        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_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());
+                    }
+                }
+            }
+        }
+        dbConnect.runSqlUpdate(sqlList);
+    }
+}