Commit 01e29e236492c1adc14efcb0cb40787fcce4f0a9

Authored by guzijian
1 parent 19895dc8

feat(trash-common): 新增消息发送demo,保留实际派发车辆字段。

Showing 24 changed files with 1006 additions and 4 deletions
trash-common/src/main/java/com/trash/common/utils/MoSync.java 0 → 100644
  1 +package com.trash.common.utils;
  2 +
  3 +
  4 +import com.trash.common.utils.util.JsonUtil;
  5 +import com.trash.common.utils.util.Md5Util;
  6 +import com.trash.common.utils.util.SmsConf;
  7 +import com.trash.common.utils.util.SmsHttp;
  8 +import com.trash.common.utils.vo.mo.JsonMo;
  9 +import com.trash.common.utils.vo.mo.ReqMo;
  10 +
  11 +public class MoSync {
  12 + //拿取上行
  13 + public static void main(String args[]) {
  14 + System.out.println("取上行启动成功");
  15 + try {
  16 + String userName = SmsConf.smsUserName;
  17 + String password = SmsConf.smsPasswd;
  18 + String signTime = SmsConf.getSysTime();
  19 + String signStr = Md5Util.strToMD5(userName + Md5Util.strToMD5(password) + signTime);
  20 + ReqMo reqMo = new ReqMo();
  21 + reqMo.setSignStr(signStr);
  22 + reqMo.setSignTime(signTime);
  23 + reqMo.setUserName(userName);
  24 + String reqJsonStr = JsonUtil.toJson(reqMo);
  25 + String resultJsonStr = SmsHttp.postJson(SmsConf.smsMoUrl, reqJsonStr);
  26 + if (JsonUtil.isJsonStr(resultJsonStr)) {
  27 + JsonMo jsonMo = JsonUtil.returnObj(resultJsonStr, JsonMo.class);
  28 + if(jsonMo!=null){
  29 + //进入数据处理流程
  30 + //saveMo(jsonRpt);
  31 + }
  32 + } else {
  33 + System.out.println("取回执:"+resultJsonStr);
  34 + }
  35 +
  36 + } catch (Exception e) {
  37 + e.printStackTrace();
  38 + }
  39 + }
  40 +}
trash-common/src/main/java/com/trash/common/utils/RptSync.java 0 → 100644
  1 +package com.trash.common.utils;
  2 +
  3 +
  4 +import com.trash.common.utils.util.JsonUtil;
  5 +import com.trash.common.utils.util.Md5Util;
  6 +import com.trash.common.utils.util.SmsConf;
  7 +import com.trash.common.utils.util.SmsHttp;
  8 +import com.trash.common.utils.vo.rpt.JsonRpt;
  9 +import com.trash.common.utils.vo.rpt.ReqRpt;
  10 +
  11 +
  12 +public class RptSync {
  13 + //拿取回执
  14 + public static void main(String args[]) {
  15 + System.out.println("取回执启动成功");
  16 + try {
  17 + String userName = SmsConf.smsUserName;
  18 + String password = SmsConf.smsPasswd;
  19 + String signTime = SmsConf.getSysTime();
  20 + String signStr = Md5Util.strToMD5(userName + Md5Util.strToMD5(password) + signTime);
  21 + ReqRpt reqRpt = new ReqRpt();
  22 + reqRpt.setSignStr(signStr);
  23 + reqRpt.setSignTime(signTime);
  24 + reqRpt.setUserName(userName);
  25 + String reqJsonStr = JsonUtil.toJson(reqRpt);
  26 + String resultJsonStr = SmsHttp.postJson(SmsConf.smsRptUrl, reqJsonStr);
  27 + if (JsonUtil.isJsonStr(resultJsonStr)) {
  28 + JsonRpt jsonRpt = JsonUtil.returnObj(resultJsonStr, JsonRpt.class);
  29 + if(jsonRpt!=null){
  30 + //进入数据处理流程
  31 + //saveRpt(jsonRpt);
  32 + }
  33 + } else {
  34 + System.out.println("取回执:"+resultJsonStr);
  35 + }
  36 +
  37 + } catch (Exception e) {
  38 + e.printStackTrace();
  39 + }
  40 + }
  41 +
  42 +
  43 +}
trash-common/src/main/java/com/trash/common/utils/SmsSend.java 0 → 100644
  1 +package com.trash.common.utils;
  2 +
  3 +
  4 +import com.trash.common.utils.util.PostSms;
  5 +import com.trash.common.utils.vo.mt.JsonSmsSend;
  6 +import com.trash.common.utils.vo.mt.Mobile;
  7 +
  8 +import java.util.ArrayList;
  9 +import java.util.List;
  10 +
  11 +
  12 +public class SmsSend {
  13 +
  14 +
  15 + //调起发送程序
  16 + public static void main(String args[]){
  17 + try{
  18 + //发送
  19 + Mobile mobile=new Mobile();
  20 + mobile.setMobile("13800009999");
  21 + List<Mobile> mobileList=new ArrayList<Mobile>();
  22 + mobileList.add(mobile);
  23 + //更新提交信息
  24 + JsonSmsSend jsonSmsSend= PostSms.sendSms(mobileList,"短信内容");
  25 + if(jsonSmsSend!=null){
  26 + if(jsonSmsSend.getState()==0){
  27 + System.out.println("发送成功");
  28 + }else{
  29 + System.out.println(jsonSmsSend.getMessage());
  30 + }
  31 + }else{
  32 + System.out.println("发送返回空");
  33 + }
  34 +
  35 + }catch(Exception e){e.printStackTrace();}
  36 + }
  37 +
  38 +}
trash-common/src/main/java/com/trash/common/utils/util/Base64Util.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +
  3 +import sun.misc.BASE64Decoder;
  4 +import sun.misc.BASE64Encoder;
  5 +
  6 +import java.io.UnsupportedEncodingException;
  7 +import java.util.regex.Matcher;
  8 +import java.util.regex.Pattern;
  9 +
  10 +public class Base64Util {
  11 + // 加密
  12 +public static String encodeData(String str) {
  13 + //L.p("str-->"+str);
  14 + byte[] b = null;
  15 + String s = null;
  16 + try {
  17 + if(str!=null && !str.trim().isEmpty()){
  18 + b = str.getBytes("utf-8");
  19 + if (b != null) {
  20 + s = new BASE64Encoder().encode(b);
  21 + }
  22 + }
  23 + } catch (UnsupportedEncodingException e) {
  24 + e.printStackTrace();
  25 + }
  26 + return replaceBlank(s);
  27 + }
  28 +
  29 + // 解密
  30 +public static String decodeData(String s) {
  31 + byte[] b = null;
  32 + String result = null;
  33 + if (s != null) {
  34 + BASE64Decoder decoder = new BASE64Decoder();
  35 + try {
  36 + b = decoder.decodeBuffer(s);
  37 + result = new String(b, "utf-8");
  38 + } catch (Exception e) {
  39 + e.printStackTrace();
  40 + }
  41 + }
  42 + return result;
  43 +}
  44 +//去掉换行符
  45 +public static String replaceBlank(String str) {
  46 + String dest = "";
  47 + if (str!=null) {
  48 + Pattern p = Pattern.compile("\\s*|\t|\r|\n");
  49 + Matcher m = p.matcher(str);
  50 + dest = m.replaceAll("");
  51 + }
  52 + return dest;
  53 +}
  54 +
  55 +}
trash-common/src/main/java/com/trash/common/utils/util/JsonUtil.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +import com.google.gson.*;
  3 +
  4 +import java.lang.reflect.Type;
  5 +import java.util.ArrayList;
  6 +import java.util.List;
  7 +
  8 +public class JsonUtil {
  9 + public static Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
  10 +
  11 + public static String toJson(Object msg) {
  12 + return gson.toJson(msg);
  13 + }
  14 +
  15 + public static <T> T returnObj(String json,Class<T> clazz){
  16 + return gson.fromJson(json, clazz);
  17 + }
  18 +
  19 + public static <T> T returnObj(String json, Type type){
  20 + return gson.fromJson(json, type);
  21 + }
  22 +
  23 + //验证是不是JSON字符串
  24 + public static boolean isJsonStr(String jsonInString) {
  25 + try {
  26 + if (jsonInString!=null && !jsonInString.isEmpty()){
  27 + gson.fromJson(jsonInString, Object.class);
  28 + return true;
  29 + }else {
  30 + return false;
  31 + }
  32 + } catch(JsonSyntaxException ex) {
  33 + return false;
  34 + }
  35 + }
  36 +
  37 + public static <T> List<T> toList(String string,Class<T> clz){
  38 + if(string == null || string.length() < 1){
  39 + return null;
  40 + }else {
  41 + List<T> list = new ArrayList<>();
  42 + if(!string.startsWith("[")){
  43 + string = "[" + string +"]";
  44 + }
  45 + JsonArray array = new JsonParser().parse(string).getAsJsonArray();
  46 + for(final JsonElement elem : array){
  47 + if(elem != null){
  48 + String mo = elem.toString().replace("\"{","{").replace("}\"","}").replace("\\", "");
  49 + list.add(gson.fromJson(mo, clz));
  50 + }
  51 + }
  52 + return list;
  53 + }
  54 + }
  55 +}
trash-common/src/main/java/com/trash/common/utils/util/Md5Util.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +
  3 +import java.security.MessageDigest;
  4 +
  5 +public class Md5Util {
  6 + public static final String strToMD5(String s) {
  7 + char[] hexDigits = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e',
  8 + 'f' };
  9 + try {
  10 + byte[] btInput = s.getBytes("UTF-8");
  11 + MessageDigest mdInst = MessageDigest.getInstance("MD5");
  12 + mdInst.update(btInput);
  13 + byte[] md = mdInst.digest();
  14 + int j = md.length;
  15 + char[] str = new char[j * 2];
  16 + int k = 0;
  17 +
  18 + for (int i = 0; i < j; ++i) {
  19 + byte byte0 = md[i];
  20 + str[k++] = hexDigits[byte0 >>> 4 & 15];
  21 + str[k++] = hexDigits[byte0 & 15];
  22 + }
  23 +
  24 + return new String(str);
  25 + } catch (Exception var10) {
  26 + var10.printStackTrace();
  27 + return null;
  28 + }
  29 + }
  30 +}
trash-common/src/main/java/com/trash/common/utils/util/PostSms.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +import com.trash.common.utils.vo.ReqImsApi;
  3 +import com.trash.common.utils.vo.balance.JsonQueryBalance;
  4 +import com.trash.common.utils.vo.mo.JsonMo;
  5 +import com.trash.common.utils.vo.mt.JsonSmsSend;
  6 +import com.trash.common.utils.vo.mt.Mobile;
  7 +import com.trash.common.utils.vo.mt.SendSms;
  8 +import com.trash.common.utils.vo.rpt.JsonRpt;
  9 +
  10 +import java.util.ArrayList;
  11 +import java.util.List;
  12 +
  13 +
  14 +public class PostSms {
  15 + //查询发送
  16 + public static int queryBalanceNum(){
  17 + String userName = SmsConf.smsUserName;
  18 + String password = SmsConf.smsPasswd;
  19 + String signTime = SmsConf.getSysTime();
  20 + int balanceNum=0;
  21 + try{
  22 + String signStr = Md5Util.strToMD5(userName+ Md5Util.strToMD5(password)+signTime);
  23 + ReqImsApi reqImsApi = new ReqImsApi();
  24 + reqImsApi.setUserName(userName);
  25 + reqImsApi.setSignStr(signStr);
  26 + reqImsApi.setSignTime(signTime);
  27 + String reqJsonStr = JsonUtil.toJson(reqImsApi);
  28 + String resultJsonStr=SmsHttp.postJson(SmsConf.queyrbalanceUrl, reqJsonStr);
  29 + if(JsonUtil.isJsonStr(resultJsonStr)){
  30 + JsonQueryBalance jonQueryBalance= JsonUtil.returnObj(resultJsonStr, JsonQueryBalance.class);
  31 + if(jonQueryBalance!=null){
  32 + balanceNum=jonQueryBalance.getBalance();
  33 + }
  34 + }
  35 + }catch(Exception e){e.printStackTrace();}
  36 + return balanceNum;
  37 + }
  38 +
  39 +//提交短信
  40 +public static JsonSmsSend sendSms(List<Mobile> mobileList, String smsStr){
  41 + String userName = SmsConf.smsUserName;
  42 + String password = SmsConf.smsPasswd;
  43 + String signTime = SmsConf.getSysTime();
  44 + JsonSmsSend jsonSmsSend=new JsonSmsSend();
  45 + try{
  46 + String signStr = Md5Util.strToMD5(userName+ Md5Util.strToMD5(password)+signTime);
  47 + if(smsStr!=null && !smsStr.isEmpty()){
  48 + if(mobileList!=null && !mobileList.isEmpty()){
  49 + if(PostSms.queryBalanceNum()>=mobileList.size()){
  50 + SendSms sendSms = new SendSms();
  51 + sendSms.setUserName(userName);
  52 + sendSms.setSignStr(signStr);
  53 + sendSms.setSignTime(signTime);
  54 + sendSms.setSignStr(signStr);
  55 + sendSms.setSmsStr(Base64Util.encodeData(smsStr));
  56 + sendSms.setMobileList(mobileList);
  57 + String reqJsonStr = JsonUtil.toJson(sendSms);
  58 + String resultJsonStr=SmsHttp.postJson(SmsConf.smsSendUrl, reqJsonStr);
  59 + if(JsonUtil.isJsonStr(resultJsonStr)){
  60 + jsonSmsSend= JsonUtil.returnObj(resultJsonStr, JsonSmsSend.class);
  61 + }else{
  62 + jsonSmsSend.setState(-1);
  63 + jsonSmsSend.setMessage(resultJsonStr);
  64 + }
  65 + }else{
  66 + jsonSmsSend.setState(-1);
  67 + jsonSmsSend.setMessage("账户余额不够");
  68 + }
  69 + }else{
  70 + jsonSmsSend.setState(-1);
  71 + jsonSmsSend.setMessage("发送号码不能空");
  72 + }
  73 + }else{
  74 + jsonSmsSend.setState(-1);
  75 + jsonSmsSend.setMessage("发送内容不能空");
  76 + }
  77 + }catch(Exception e){
  78 + jsonSmsSend.setState(-1);
  79 + jsonSmsSend.setMessage(e.toString());
  80 + e.printStackTrace();}
  81 + return jsonSmsSend;
  82 +}
  83 +
  84 +//接收短信状态回执
  85 +public static JsonRpt getSmsRpt(){
  86 + String userName = SmsConf.smsUserName;
  87 + String password = SmsConf.smsPasswd;
  88 + String signTime = SmsConf.getSysTime();
  89 + JsonRpt jsonRpt=new JsonRpt();
  90 + try{
  91 + String signStr = Md5Util.strToMD5(userName+ Md5Util.strToMD5(password)+signTime);
  92 + ReqImsApi reqImsApi = new ReqImsApi();
  93 + reqImsApi.setUserName(userName);
  94 + reqImsApi.setSignStr(signStr);
  95 + reqImsApi.setSignTime(signTime);
  96 + String reqJsonStr = JsonUtil.toJson(reqImsApi);
  97 + String resultJsonStr=SmsHttp.postJson(SmsConf.smsRptUrl, reqJsonStr);
  98 + if(JsonUtil.isJsonStr(resultJsonStr)){
  99 + jsonRpt= JsonUtil.returnObj(resultJsonStr, JsonRpt.class);
  100 + }else{
  101 + jsonRpt.setState(-1);
  102 + jsonRpt.setMessage(resultJsonStr);
  103 + }
  104 + }catch(Exception e){
  105 + jsonRpt.setMessage(e.toString());
  106 + e.printStackTrace();
  107 + }
  108 + return jsonRpt;
  109 +}
  110 +
  111 +//接收短信上行
  112 +public static JsonMo getSmsMo(){
  113 + String userName = SmsConf.smsUserName;
  114 + String password = SmsConf.smsPasswd;
  115 + String signTime = SmsConf.getSysTime();
  116 + String balanceUrl=SmsConf.smsMoUrl;
  117 + JsonMo jsonMo=new JsonMo();
  118 + try{
  119 + String signStr = Md5Util.strToMD5(userName+ Md5Util.strToMD5(password)+signTime);
  120 + ReqImsApi reqImsApi = new ReqImsApi();
  121 + reqImsApi.setUserName(userName);
  122 + reqImsApi.setSignStr(signStr);
  123 + reqImsApi.setSignTime(signTime);
  124 + String reqJsonStr = JsonUtil.toJson(reqImsApi);
  125 + String resultJsonStr=SmsHttp.postJson(balanceUrl, reqJsonStr);
  126 + if(JsonUtil.isJsonStr(resultJsonStr)){
  127 + jsonMo= JsonUtil.returnObj(resultJsonStr, JsonMo.class);
  128 + }else{
  129 + jsonMo.setState(-1);
  130 + jsonMo.setMessage(resultJsonStr);
  131 + }
  132 + }catch(Exception e){
  133 + jsonMo.setMessage(e.toString());
  134 + e.printStackTrace();}
  135 +
  136 + return jsonMo;
  137 +}
  138 +
  139 + public static void main(String arg[]) throws Exception {
  140 + //测试取余额
  141 + //L.p(""+PostSms.queryBalanceNum());
  142 + //测试发送
  143 +
  144 + List<Mobile> mobileList = new ArrayList<Mobile>();
  145 + Mobile mobile = new Mobile();
  146 + mobile.setMobile("13974908181");
  147 + mobileList.add(mobile);
  148 + String smsStr="验证码1234";
  149 + JsonSmsSend jsonSmsSend=sendSms(mobileList,smsStr);
  150 +// if(jsonSmsSend!=null){
  151 +// L.p(jsonSmsSend.getSmsId());
  152 +// }
  153 +//测试取回执
  154 +
  155 +// JsonRpt jsonRpt=getSmsRpt();
  156 +// L.p(""+jsonRpt.getMessage());
  157 +// List<SmsRpt> rptList=jsonRpt.getObject();
  158 +// if(rptList!=null && !rptList.isEmpty()){
  159 +// L.p(rptList.size()+"");
  160 +// }else{
  161 +// L.p("123");
  162 +// }
  163 +
  164 +//测试取上行
  165 +
  166 +// JsonMo jsonMo=getSmsMo();
  167 +// List<SmsMo> moList=jsonMo.getObject();
  168 +// System.out.println(""+jsonMo.getMessage());
  169 +// if(moList!=null && !moList.isEmpty()){
  170 +// System.out.println(""+moList.size());
  171 +// }else{
  172 +// System.out.println("123");
  173 +// }
  174 +
  175 +
  176 +
  177 +}
  178 +
  179 +
  180 +}
trash-common/src/main/java/com/trash/common/utils/util/SmsConf.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +
  3 +import java.util.Calendar;
  4 +
  5 +public class SmsConf {
  6 + //基础地址 请参文档填写
  7 + public static String smsSendUrl = "http://172.31.253.178:5050/ims/sms/sendSms";//发送地址
  8 + public static String queyrbalanceUrl = "http://172.31.253.178:5050/ims/sms/queryBalance";//查询发送能力地址
  9 + public static String smsMoUrl = "http://172.31.253.178:9090/ims/sms/queryMo";//取上行地址
  10 + public static String smsRptUrl = "http://172.31.253.178:9090/ims/sms/queryRpt";//取回执地址
  11 + public static String smsUserName="账户名";//账户名
  12 + public static String smsPasswd="账号密码";//账号密码
  13 +
  14 +
  15 +
  16 + public static String getSysTime() {
  17 + Calendar now = Calendar.getInstance();
  18 + String year = Integer.toString(now.get(Calendar.YEAR));
  19 + String mon = Integer.toString(now.get(Calendar.MONTH) + 1);
  20 + String day = Integer.toString(now.get(Calendar.DATE));
  21 + String hour = Integer.toString(now.get(Calendar.HOUR_OF_DAY));
  22 + String min = Integer.toString(now.get(Calendar.MINUTE));
  23 + String sec = Integer.toString(now.get(Calendar.SECOND));
  24 +
  25 + mon = (mon.length() == 1) ? "0" + mon : mon;
  26 + day = (day.length() == 1) ? "0" + day : day;
  27 + hour = (hour.length() == 1) ? "0" + hour : hour;
  28 + min = (min.length() == 1) ? "0" + min : min;
  29 + sec = (sec.length() == 1) ? "0" + sec : sec;
  30 + return (year + mon + day + hour + min + sec);
  31 + }
  32 +}
trash-common/src/main/java/com/trash/common/utils/util/SmsHttp.java 0 → 100644
  1 +package com.trash.common.utils.util;
  2 +
  3 +import java.io.BufferedReader;
  4 +import java.io.InputStreamReader;
  5 +import java.io.PrintWriter;
  6 +import java.net.HttpURLConnection;
  7 +import java.net.URL;
  8 +
  9 +
  10 +public class SmsHttp {
  11 +//发送生信
  12 + public static String postJson(String submitUrl, String json) {
  13 + URL url = null;
  14 + String postResponseStr=null;
  15 + HttpURLConnection httpURLConnection =null;
  16 + BufferedReader getResponseBytes =null;
  17 + PrintWriter printWriter =null;
  18 + StringBuilder sb =null;
  19 + try {
  20 + url = new URL(submitUrl);
  21 + httpURLConnection=(HttpURLConnection) url.openConnection();
  22 + httpURLConnection.setRequestMethod("POST");// 提交模式
  23 + httpURLConnection.setConnectTimeout(10000);//连接超时 单位毫秒
  24 + httpURLConnection.setReadTimeout(60000);//读取超时 单位毫秒
  25 + // 发送POST请求必须设置如下两行
  26 + httpURLConnection.setDoOutput(true);
  27 + httpURLConnection.setDoInput(true);
  28 + //httpURLConnection.setRequestProperty("Accept", "application/json");
  29 +
  30 +
  31 + httpURLConnection.setRequestProperty("Content-Type", "text/plain");
  32 + httpURLConnection.setRequestProperty("connection", "Keep-Alive");
  33 + httpURLConnection.setRequestProperty("Charsert", "UTF-8");
  34 + //httpURLConnection.setRequestProperty("Content-type", "application/json; charset=utf-8");
  35 + // 获取URLConnection对象对应的输出流
  36 + printWriter = new PrintWriter(httpURLConnection.getOutputStream());
  37 + printWriter.write(json);
  38 + printWriter.flush();
  39 + //printWriter.close();
  40 + int httpRspCode = httpURLConnection.getResponseCode();
  41 + if (httpRspCode == HttpURLConnection.HTTP_OK) {
  42 + sb = new StringBuilder();
  43 + // 开始获取数据
  44 + getResponseBytes = new BufferedReader(
  45 + new InputStreamReader(httpURLConnection.getInputStream(), "utf-8"));
  46 + String line = null;
  47 + while ((line = getResponseBytes.readLine()) != null) {
  48 + sb.append(line);
  49 + }
  50 + getResponseBytes.close();
  51 + postResponseStr=sb.toString();
  52 + }else{
  53 + postResponseStr="ERR:"+httpRspCode;
  54 + }
  55 + } catch (Exception e) {
  56 + postResponseStr="ERR:"+e.getMessage();
  57 + e.printStackTrace();
  58 + }finally {
  59 + if (httpURLConnection != null) {
  60 + try {
  61 + httpURLConnection.disconnect();
  62 + } catch (Exception eee) {
  63 + }
  64 + }
  65 + if (getResponseBytes != null) {
  66 + try {
  67 + getResponseBytes.close();
  68 + } catch (Exception ee) {
  69 + }
  70 + }
  71 + if (printWriter != null) {
  72 + try {
  73 + printWriter.close();
  74 + } catch (Exception eeee) {
  75 + }
  76 + }
  77 + if (sb != null) {
  78 + try {
  79 + sb=null;
  80 + } catch (Exception eeeee) {
  81 + }
  82 + }
  83 + }
  84 + System.out.print("sms sends post-->["+postResponseStr+"] json:"+json);
  85 + return postResponseStr;
  86 +}
  87 +
  88 +}
trash-common/src/main/java/com/trash/common/utils/vo/ReqImsApi.java 0 → 100644
  1 +package com.trash.common.utils.vo;
  2 +
  3 +public class ReqImsApi {
  4 +
  5 + private String userName;//用户名
  6 + private String signStr;//签名字符
  7 + private String signTime;//提交时间
  8 + public String getUserName() {
  9 + return userName;
  10 + }
  11 +
  12 + public void setUserName(String userName) {
  13 + this.userName = userName;
  14 + }
  15 +
  16 + public String getSignStr() {
  17 + return signStr;
  18 + }
  19 +
  20 + public void setSignStr(String signStr) {
  21 + this.signStr = signStr;
  22 + }
  23 +
  24 + public String getSignTime() {
  25 + return signTime;
  26 + }
  27 +
  28 + public void setSignTime(String signTime) {
  29 + this.signTime = signTime;
  30 + }
  31 +
  32 +}
trash-common/src/main/java/com/trash/common/utils/vo/balance/JsonQueryBalance.java 0 → 100644
  1 +package com.trash.common.utils.vo.balance;
  2 +
  3 +public class JsonQueryBalance{
  4 +
  5 + public int getState() {
  6 + return state;
  7 + }
  8 + public void setState(int state) {
  9 + this.state = state;
  10 + }
  11 + public String getMessage() {
  12 + return message;
  13 + }
  14 + public void setMessage(String message) {
  15 + this.message = message;
  16 + }
  17 + public int getBalance() {
  18 + return balance;
  19 + }
  20 + public void setBalance(int balance) {
  21 + this.balance = balance;
  22 + }
  23 + private int state=-999;//0 正常 -1通用异常 -999程序EXCEPTION -998非JSON字符
  24 + private String message="服务器忙,响应超时 ";
  25 + private int balance;
  26 +}
trash-common/src/main/java/com/trash/common/utils/vo/mo/JsonMo.java 0 → 100644
  1 +package com.trash.common.utils.vo.mo;
  2 +
  3 +import java.util.List;
  4 +
  5 +public class JsonMo {
  6 +
  7 + private int state=-1;
  8 + private String message="系统超时";
  9 + private List<SmsMo> object;
  10 + public int getState() {
  11 + return state;
  12 + }
  13 + public void setState(int state) {
  14 + this.state = state;
  15 + }
  16 + public String getMessage() {
  17 + return message;
  18 + }
  19 + public void setMessage(String message) {
  20 + this.message = message;
  21 + }
  22 + public List<SmsMo> getObject() {
  23 + return object;
  24 + }
  25 + public void setObject(List<SmsMo> object) {
  26 + this.object = object;
  27 + }
  28 +}
trash-common/src/main/java/com/trash/common/utils/vo/mo/ReqMo.java 0 → 100644
  1 +package com.trash.common.utils.vo.mo;
  2 +
  3 +public class ReqMo {
  4 + private String userName;
  5 + private String signStr;
  6 + private String signTime;
  7 +public String getUserName() {
  8 + return userName;
  9 +}
  10 +public void setUserName(String userName) {
  11 + this.userName = userName;
  12 +}
  13 +public String getSignStr() {
  14 + return signStr;
  15 +}
  16 +public void setSignStr(String signStr) {
  17 + this.signStr = signStr;
  18 +}
  19 +public String getSignTime() {
  20 + return signTime;
  21 +}
  22 +public void setSignTime(String signTime) {
  23 + this.signTime = signTime;
  24 +}
  25 +}
trash-common/src/main/java/com/trash/common/utils/vo/mo/SmsMo.java 0 → 100644
  1 +package com.trash.common.utils.vo.mo;
  2 +
  3 +public class SmsMo {
  4 +
  5 + private String moId;//上行ID
  6 + private String mobileNo;//上行电话号码
  7 + private String spCode;//子码
  8 + private String moStr;//上行内容
  9 + private String moTime;//上行时
  10 + public String getMoId() {
  11 + return moId;
  12 + }
  13 +
  14 + public void setMoId(String moId) {
  15 + this.moId = moId;
  16 + }
  17 +
  18 + public String getMobileNo() {
  19 + return mobileNo;
  20 + }
  21 +
  22 + public void setMobileNo(String mobileNo) {
  23 + this.mobileNo = mobileNo;
  24 + }
  25 +
  26 + public String getSpCode() {
  27 + return spCode;
  28 + }
  29 +
  30 + public void setSpCode(String spCode) {
  31 + this.spCode = spCode;
  32 + }
  33 +
  34 + public String getMoStr() {
  35 + return moStr;
  36 + }
  37 +
  38 + public void setMoStr(String moStr) {
  39 + this.moStr = moStr;
  40 + }
  41 +
  42 + public String getMoTime() {
  43 + return moTime;
  44 + }
  45 +
  46 + public void setMoTime(String moTime) {
  47 + this.moTime = moTime;
  48 + }
  49 +
  50 +}
trash-common/src/main/java/com/trash/common/utils/vo/mt/JsonSmsSend.java 0 → 100644
  1 +package com.trash.common.utils.vo.mt;
  2 +
  3 +public class JsonSmsSend {
  4 +
  5 +private int state=-1;
  6 +private String message="系统超时";
  7 +private String smsId;
  8 +public int getState() {
  9 + return state;
  10 +}
  11 +public void setState(int state) {
  12 + this.state = state;
  13 +}
  14 +public String getMessage() {
  15 + return message;
  16 +}
  17 +public void setMessage(String message) {
  18 + this.message = message;
  19 +}
  20 +public String getSmsId() {
  21 + return smsId;
  22 +}
  23 +public void setSmsId(String smsId) {
  24 + this.smsId = smsId;
  25 +}
  26 +}
trash-common/src/main/java/com/trash/common/utils/vo/mt/Mobile.java 0 → 100644
  1 +package com.trash.common.utils.vo.mt;
  2 +
  3 +public class Mobile {
  4 +
  5 +private String mobile;//接收单个手机号码
  6 +
  7 +public String getMobile() {
  8 + return mobile;
  9 +}
  10 +
  11 +public void setMobile(String mobile) {
  12 + this.mobile = mobile;
  13 +}
  14 +
  15 +}
trash-common/src/main/java/com/trash/common/utils/vo/mt/SendSms.java 0 → 100644
  1 +package com.trash.common.utils.vo.mt;
  2 +
  3 +import java.util.List;
  4 +
  5 +public class SendSms {
  6 +
  7 + private String userName;//用户名
  8 + private String signStr;//签名字符
  9 + private String signTime;//提交时间
  10 + private String smsStr;//短信内容转BASE64
  11 + private List<Mobile> mobileList;//发送号码列表 最多2000个
  12 +
  13 + public String getUserName() {
  14 + return userName;
  15 + }
  16 +
  17 + public void setUserName(String userName) {
  18 + this.userName = userName;
  19 + }
  20 +
  21 + public String getSignStr() {
  22 + return signStr;
  23 + }
  24 +
  25 + public void setSignStr(String signStr) {
  26 + this.signStr = signStr;
  27 + }
  28 +
  29 + public String getSignTime() {
  30 + return signTime;
  31 + }
  32 +
  33 + public void setSignTime(String signTime) {
  34 + this.signTime = signTime;
  35 + }
  36 +
  37 + public String getSmsStr() {
  38 + return smsStr;
  39 + }
  40 +
  41 + public void setSmsStr(String smsStr) {
  42 + this.smsStr = smsStr;
  43 + }
  44 +
  45 + public List<Mobile> getMobileList() {
  46 + return mobileList;
  47 + }
  48 +
  49 + public void setMobileList(List<Mobile> mobileList) {
  50 + this.mobileList = mobileList;
  51 + }
  52 +
  53 +}
trash-common/src/main/java/com/trash/common/utils/vo/rpt/JsonRpt.java 0 → 100644
  1 +package com.trash.common.utils.vo.rpt;
  2 +
  3 +import java.util.List;
  4 +
  5 +public class JsonRpt {
  6 +
  7 +private int state=-1;
  8 +private String message="系统超时";
  9 +private List<SmsRpt> object;
  10 +public int getState() {
  11 + return state;
  12 +}
  13 +public void setState(int state) {
  14 + this.state = state;
  15 +}
  16 +public String getMessage() {
  17 + return message;
  18 +}
  19 +public void setMessage(String message) {
  20 + this.message = message;
  21 +}
  22 +public List<SmsRpt> getObject() {
  23 + return object;
  24 +}
  25 +public void setObject(List<SmsRpt> object) {
  26 + this.object = object;
  27 +}
  28 +}
trash-common/src/main/java/com/trash/common/utils/vo/rpt/ReqRpt.java 0 → 100644
  1 +package com.trash.common.utils.vo.rpt;
  2 +
  3 +public class ReqRpt {
  4 + private String userName;
  5 + private String signStr;
  6 + private String signTime;
  7 +public String getUserName() {
  8 + return userName;
  9 +}
  10 +public void setUserName(String userName) {
  11 + this.userName = userName;
  12 +}
  13 +public String getSignStr() {
  14 + return signStr;
  15 +}
  16 +public void setSignStr(String signStr) {
  17 + this.signStr = signStr;
  18 +}
  19 +public String getSignTime() {
  20 + return signTime;
  21 +}
  22 +public void setSignTime(String signTime) {
  23 + this.signTime = signTime;
  24 +}
  25 +}
trash-common/src/main/java/com/trash/common/utils/vo/rpt/SmsRpt.java 0 → 100644
  1 +package com.trash.common.utils.vo.rpt;
  2 +
  3 +public class SmsRpt {
  4 +
  5 + private String smsId;//任务ID
  6 + private String mobileNo;//号码
  7 + private int rptState;//发送状态
  8 + private String rptNote;//回执备注
  9 + private String rptTime;//回执时间
  10 + public String getSmsId() {
  11 + return smsId;
  12 + }
  13 +
  14 + public void setSmsId(String smsId) {
  15 + this.smsId = smsId;
  16 + }
  17 +
  18 + public String getMobileNo() {
  19 + return mobileNo;
  20 + }
  21 +
  22 + public void setMobileNo(String mobileNo) {
  23 + this.mobileNo = mobileNo;
  24 + }
  25 +
  26 + public int getRptState() {
  27 + return rptState;
  28 + }
  29 +
  30 + public void setRptState(int rptState) {
  31 + this.rptState = rptState;
  32 + }
  33 +
  34 + public String getRptNote() {
  35 + return rptNote;
  36 + }
  37 +
  38 + public void setRptNote(String rptNote) {
  39 + this.rptNote = rptNote;
  40 + }
  41 +
  42 + public String getRptTime() {
  43 + return rptTime;
  44 + }
  45 +
  46 + public void setRptTime(String rptTime) {
  47 + this.rptTime = rptTime;
  48 + }
  49 +
  50 +}
trash-garbage/src/main/java/com/trash/garbage/config/WxConfig.java
@@ -4,13 +4,15 @@ import lombok.Data; @@ -4,13 +4,15 @@ import lombok.Data;
4 import org.springframework.beans.factory.InitializingBean; 4 import org.springframework.beans.factory.InitializingBean;
5 import org.springframework.boot.context.properties.ConfigurationProperties; 5 import org.springframework.boot.context.properties.ConfigurationProperties;
6 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Configuration;
  7 +import org.springframework.core.annotation.Order;
7 import org.springframework.stereotype.Component; 8 import org.springframework.stereotype.Component;
8 9
9 /** 10 /**
10 * @author 20412 11 * @author 20412
11 */ 12 */
12 @Component 13 @Component
13 -@ConfigurationProperties(prefix = "wx") 14 +@ConfigurationProperties(prefix = "wx", ignoreInvalidFields = true)
  15 +@Order(0)
14 public class WxConfig { 16 public class WxConfig {
15 private String appId; 17 private String appId;
16 private String secret; 18 private String secret;
trash-garbage/src/main/java/com/trash/garbage/pojo/domain/GarOrder.java
@@ -86,6 +86,11 @@ public class GarOrder implements Serializable { @@ -86,6 +86,11 @@ public class GarOrder implements Serializable {
86 */ 86 */
87 private Integer garOrderHandlerStatus; 87 private Integer garOrderHandlerStatus;
88 88
  89 + /**
  90 + * 实际派发车辆
  91 + */
  92 + private Integer garRealCarCount;
  93 +
89 /** 94 /**
90 * 约定时间 95 * 约定时间
91 */ 96 */
@@ -420,4 +425,46 @@ public class GarOrder implements Serializable { @@ -420,4 +425,46 @@ public class GarOrder implements Serializable {
420 public void setGarCoordinate(String garCoordinate) { 425 public void setGarCoordinate(String garCoordinate) {
421 this.garCoordinate = garCoordinate; 426 this.garCoordinate = garCoordinate;
422 } 427 }
  428 +
  429 + public Integer getGarRealCarCount() {
  430 + return garRealCarCount;
  431 + }
  432 +
  433 + public void setGarRealCarCount(Integer garRealCarCount) {
  434 + this.garRealCarCount = garRealCarCount;
  435 + }
  436 +
  437 + @Override
  438 + public String toString() {
  439 + return "GarOrder{" +
  440 + "garOrderId='" + garOrderId + '\'' +
  441 + ", count=" + count +
  442 + ", garOrderUserId='" + garOrderUserId + '\'' +
  443 + ", garOrderHandlerId='" + garOrderHandlerId + '\'' +
  444 + ", garOrderAddress='" + garOrderAddress + '\'' +
  445 + ", garOrderAddressDetails='" + garOrderAddressDetails + '\'' +
  446 + ", garOrderContactName='" + garOrderContactName + '\'' +
  447 + ", garOrderTrashType='" + garOrderTrashType + '\'' +
  448 + ", garOrderContactTel='" + garOrderContactTel + '\'' +
  449 + ", garOrderCompanyId='" + garOrderCompanyId + '\'' +
  450 + ", garOrderCompanyName='" + garOrderCompanyName + '\'' +
  451 + ", garOrderCompanyTel='" + garOrderCompanyTel + '\'' +
  452 + ", garOrderHandlerStatus=" + garOrderHandlerStatus +
  453 + ", realCarCount=" + garRealCarCount +
  454 + ", garOrderAgreementTime='" + garOrderAgreementTime + '\'' +
  455 + ", garCreateTime=" + garCreateTime +
  456 + ", garUpdateTime=" + garUpdateTime +
  457 + ", garCreateBy='" + garCreateBy + '\'' +
  458 + ", garUpdateBy='" + garUpdateBy + '\'' +
  459 + ", garRemark='" + garRemark + '\'' +
  460 + ", garCancelFlag=" + garCancelFlag +
  461 + ", garOrderMatchFlag=" + garOrderMatchFlag +
  462 + ", garLongitude=" + garLongitude +
  463 + ", garLatitude=" + garLatitude +
  464 + ", garCoordinate='" + garCoordinate + '\'' +
  465 + ", garEvaluateFlag=" + garEvaluateFlag +
  466 + ", garHandlerEvaluateFlag=" + garHandlerEvaluateFlag +
  467 + ", garReason='" + garReason + '\'' +
  468 + '}';
  469 + }
423 } 470 }
424 \ No newline at end of file 471 \ No newline at end of file
trash-garbage/src/main/java/com/trash/garbage/service/impl/GarOrderServiceImpl.java
@@ -376,6 +376,34 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt; @@ -376,6 +376,34 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
376 return "已评价"; 376 return "已评价";
377 } 377 }
378 378
  379 + public static void main(String[] args) {
  380 + System.out.println(convert("PAYPALISHIRING", 3));
  381 + }
  382 + public static String convert(String s, int numRows) {
  383 + if (numRows == 1) {
  384 + return s;
  385 + }
  386 + List<StringBuilder> list = new ArrayList<>(numRows);
  387 + for (int i = 0; i < numRows; i++) {
  388 + list.add(new StringBuilder());
  389 + }
  390 + int space = 1;
  391 + int x = -1;
  392 + // 0 1 2 - 2 1 0 - 0 1 2 || 0 1 2 3 2 1 0 1 2 3 || 0 1 2 3 4 5 6 7 8 9
  393 + for (int i = 0; i < s.length(); i++) {
  394 + space = space + x;
  395 + list.get(space).append(s.charAt(i));
  396 + if (i % (numRows - 1) == 0) {
  397 + x = -x;
  398 + }
  399 + }
  400 + StringBuilder sb = new StringBuilder();
  401 + for (int i = 0; i < numRows; i++) {
  402 + sb.append(list.get(i));
  403 + }
  404 + return sb.toString();
  405 + }
  406 +
379 @Override 407 @Override
380 public List<GarOrder> queryOrderListByGarOrder(GarOrder garOrder) { 408 public List<GarOrder> queryOrderListByGarOrder(GarOrder garOrder) {
381 LambdaQueryWrapper<GarOrder> qw = createQueryWrapper(garOrder); 409 LambdaQueryWrapper<GarOrder> qw = createQueryWrapper(garOrder);
@@ -478,6 +506,8 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt; @@ -478,6 +506,8 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
478 public void dispatchOrder(DispatchDto dto) { 506 public void dispatchOrder(DispatchDto dto) {
479 GarOrder order = getById(dto.getGarOrderId()); 507 GarOrder order = getById(dto.getGarOrderId());
480 List<GarOrderMatchHandler> handlerList = new ArrayList<>(dto.getDispatchList().size()); 508 List<GarOrderMatchHandler> handlerList = new ArrayList<>(dto.getDispatchList().size());
  509 + int realCarCount = 0;
  510 + // 每次下发统计选中驾驶员更新实际派车数量
481 // 已分配 继续下发 511 // 已分配 继续下发
482 if (order.getGarOrderMatchFlag().equals(GlobalStatus.GarOrderStatus.MATCH_YES.getValue())) { 512 if (order.getGarOrderMatchFlag().equals(GlobalStatus.GarOrderStatus.MATCH_YES.getValue())) {
483 LambdaQueryWrapper<GarOrderMatchHandler> qw = new LambdaQueryWrapper<>(); 513 LambdaQueryWrapper<GarOrderMatchHandler> qw = new LambdaQueryWrapper<>();
@@ -490,14 +520,17 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt; @@ -490,14 +520,17 @@ public class GarOrderServiceImpl extends ServiceImpl&lt;GarOrderMapper, GarOrder&gt;
490 GarOrderMatchHandler handler = getGarOrderMatchHandler(order, dispatchDetail); 520 GarOrderMatchHandler handler = getGarOrderMatchHandler(order, dispatchDetail);
491 handlerList.add(handler); 521 handlerList.add(handler);
492 } 522 }
  523 + realCarCount = handlerMap.size() + handlerList.size();
493 } else { 524 } else {
494 for (DispatchDto.DispatchDetail detail : dto.getDispatchList()) { 525 for (DispatchDto.DispatchDetail detail : dto.getDispatchList()) {
495 GarOrderMatchHandler handler = getGarOrderMatchHandler(order, detail); 526 GarOrderMatchHandler handler = getGarOrderMatchHandler(order, detail);
496 handlerList.add(handler); 527 handlerList.add(handler);
497 } 528 }
  529 + realCarCount = handlerList.size();
498 } 530 }
499 handlerService.saveBatch(handlerList); 531 handlerService.saveBatch(handlerList);
500 order.setGarOrderMatchFlag(GlobalStatus.GarOrderStatus.MATCH_YES.getValue()); 532 order.setGarOrderMatchFlag(GlobalStatus.GarOrderStatus.MATCH_YES.getValue());
  533 + order.setGarRealCarCount(realCarCount);
501 updateById(order); 534 updateById(order);
502 } 535 }
503 536
trash-garbage/src/main/resources/mapper/GarOrderMapper.xml
@@ -31,6 +31,7 @@ @@ -31,6 +31,7 @@
31 <result property="garLatitude" column="gar_latitude" jdbcType="DOUBLE"/> 31 <result property="garLatitude" column="gar_latitude" jdbcType="DOUBLE"/>
32 <result property="garLongitude" column="gar_longitude" jdbcType="DOUBLE"/> 32 <result property="garLongitude" column="gar_longitude" jdbcType="DOUBLE"/>
33 <result property="garCoordinate" column="gar_coordinate" jdbcType="DOUBLE"/> 33 <result property="garCoordinate" column="gar_coordinate" jdbcType="DOUBLE"/>
  34 + <result property="garRealCarCount" column="gar_real_car_count" jdbcType="INTEGER"/>
34 </resultMap> 35 </resultMap>
35 36
36 <sql id="Base_Column_List"> 37 <sql id="Base_Column_List">
@@ -41,7 +42,7 @@ @@ -41,7 +42,7 @@
41 gar_order_company_name,gar_order_company_tel,gar_order_handler_status, 42 gar_order_company_name,gar_order_company_tel,gar_order_handler_status,
42 gar_order_agreement_time,gar_create_time,gar_update_time, 43 gar_order_agreement_time,gar_create_time,gar_update_time,
43 gar_create_by,gar_update_by,gar_remark,gar_reason,gar_cancel_flag, 44 gar_create_by,gar_update_by,gar_remark,gar_reason,gar_cancel_flag,
44 - gar_evaluate_flag,gar_handler_evaluate_flag,gar_order_match_flag,gar_coordinate,gar_longitude,gar_latitude 45 + gar_evaluate_flag,gar_handler_evaluate_flag,gar_order_match_flag,gar_coordinate,gar_longitude,gar_latitude,gar_real_car_count
45 </sql> 46 </sql>
46 <select id="queryCleanNumberByEnterpriseIds" resultType="com.trash.garbage.pojo.domain.GarOrder"> 47 <select id="queryCleanNumberByEnterpriseIds" resultType="com.trash.garbage.pojo.domain.GarOrder">
47 select gar_order_company_id, count(gar_order_company_id) as count 48 select gar_order_company_id, count(gar_order_company_id) as count
@@ -60,7 +61,7 @@ @@ -60,7 +61,7 @@
60 `order`.gar_order_trash_type,`order`.gar_order_contact_tel,`order`.gar_order_company_id,`order`.gar_latitude, 61 `order`.gar_order_trash_type,`order`.gar_order_contact_tel,`order`.gar_order_company_id,`order`.gar_latitude,
61 `order`.gar_order_company_name,`order`.gar_order_company_tel,`order`.gar_order_match_flag, 62 `order`.gar_order_company_name,`order`.gar_order_company_tel,`order`.gar_order_match_flag,
62 `order`.gar_order_agreement_time,`order`.gar_remark,`order`.gar_handler_evaluate_flag,`order`.gar_order_handler_status gar_order_status, 63 `order`.gar_order_agreement_time,`order`.gar_remark,`order`.gar_handler_evaluate_flag,`order`.gar_order_handler_status gar_order_status,
63 - `handler`.gar_order_status gar_order_handler_status,`handler`.gar_cancel_flag,`handler`.gar_reason 64 + `handler`.gar_order_status gar_order_handler_status,`handler`.gar_cancel_flag,`handler`.gar_reason,`order`.gar_real_car_count
64 FROM gar_order `order` 65 FROM gar_order `order`
65 INNER JOIN gar_order_match_handler `handler` ON `order`.gar_order_id = `handler`.gar_order_id 66 INNER JOIN gar_order_match_handler `handler` ON `order`.gar_order_id = `handler`.gar_order_id
66 <where> 67 <where>
@@ -78,7 +79,7 @@ @@ -78,7 +79,7 @@
78 `order`.gar_order_id ,`order`.gar_order_user_id,`order`.gar_order_handler_id,`order`.gar_latitude, 79 `order`.gar_order_id ,`order`.gar_order_user_id,`order`.gar_order_handler_id,`order`.gar_latitude,
79 `order`.gar_order_address,`order`.gar_order_address_details,`order`.gar_order_contact_name,`order`.gar_longitude, 80 `order`.gar_order_address,`order`.gar_order_address_details,`order`.gar_order_contact_name,`order`.gar_longitude,
80 `order`.gar_order_trash_type,`order`.gar_order_contact_tel,`order`.gar_order_company_id,`order`.gar_coordinate, 81 `order`.gar_order_trash_type,`order`.gar_order_contact_tel,`order`.gar_order_company_id,`order`.gar_coordinate,
81 - `order`.gar_order_company_name,`order`.gar_order_company_tel,`order`.gar_order_match_flag, 82 + `order`.gar_order_company_name,`order`.gar_order_company_tel,`order`.gar_order_match_flag,`order`.gar_real_car_count,
82 `order`.gar_order_agreement_time,`order`.gar_remark,`order`.gar_handler_evaluate_flag,`order`.gar_order_handler_status gar_order_status, 83 `order`.gar_order_agreement_time,`order`.gar_remark,`order`.gar_handler_evaluate_flag,`order`.gar_order_handler_status gar_order_status,
83 `handler`.gar_order_status gar_order_handler_status,`handler`.gar_cancel_flag,`handler`.gar_reason,`handler`.gar_handler_car_code 84 `handler`.gar_order_status gar_order_handler_status,`handler`.gar_cancel_flag,`handler`.gar_reason,`handler`.gar_handler_car_code
84 FROM gar_order `order` 85 FROM gar_order `order`