From b1fe10d98a6ec52971a84355ab4fd2f7edbeeb19 Mon Sep 17 00:00:00 2001 From: "lisai17@sina.com" Date: Mon, 9 Nov 2020 10:42:37 +0800 Subject: [PATCH] . --- .../ssjygl/jobs/CleanOSSBakFileJob.java | 13 +- .../cowr/service/ssjygl/jobs/StatSmsJob.java | 27 +++- .../com/cowr/service/ssjygl/main/Config.java | 2 - .../service/ssjygl/sms/log/SmsService.java | 145 ++++++++++++++++-- .../SmsNoticeContactService.java | 4 + .../src/main/resources/job.properties | 2 +- 6 files changed, 168 insertions(+), 25 deletions(-) diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CleanOSSBakFileJob.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CleanOSSBakFileJob.java index 6eed422..67198f1 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CleanOSSBakFileJob.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/CleanOSSBakFileJob.java @@ -3,6 +3,7 @@ package com.cowr.service.ssjygl.jobs; import com.aliyun.oss.model.OSSObjectSummary; import com.aliyun.oss.model.ObjectListing; import com.cowr.common.oss.OSSKit; +import com.cowr.service.ssjygl.main.Config; import com.jfinal.kit.Prop; import com.jfinal.kit.PropKit; import com.jfinal.log.Log; @@ -17,6 +18,8 @@ public class CleanOSSBakFileJob implements Job { public void execute() { try { + // 黄州和浠水的本地备份库 + // 保留近两天的 String[] prefixkeys = new String[]{"ssjy/xsx/dbbak/ssjy_xsx_", "ssjy/dbbak/ssjy"}; List delkeys = new ArrayList<>(); long st = System.currentTimeMillis(); @@ -49,7 +52,15 @@ public class CleanOSSBakFileJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) { - execute(); + try { + if (Config.isDev()) { + return; + } + + execute(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } public static void main(String[] args) { diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/StatSmsJob.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/StatSmsJob.java index c3a26ac..852d3f6 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/StatSmsJob.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/jobs/StatSmsJob.java @@ -2,6 +2,7 @@ package com.cowr.service.ssjygl.jobs; import com.alibaba.fastjson.JSONObject; import com.cowr.common.utils.DateTimeUtil; +import com.cowr.service.ssjygl.main.Config; import com.cowr.service.ssjygl.main.SvrCacheData; import com.cowr.service.ssjygl.sms.log.SmsService; import com.jfinal.kit.StrKit; @@ -98,13 +99,16 @@ public class StatSmsJob implements Job { } if (smsmap.isEmpty()) { - log.debug("%s 可以发送的短信内容", predaytm); + log.debug("%s 没有可以发送的短信内容", predaytm); return; } SmsService.me.sendCustomerDayStat(smsmap); } + /** + * + */ public void stat() { Date now = new Date(); Calendar c = Calendar.getInstance(); @@ -121,11 +125,11 @@ public class StatSmsJob implements Job { " from order_temp t\n" + " where t.state = 5\n" + " and t.customer_id is not null\n" + -// " and t.create_time like ?\n" + + " and t.create_time like ?\n" + " group by t.supermarket_id\n" + " ) a on a.supermarket_id = t.id\n" + " order by t.id"; - List list = Db.find(sql);//, predaytm + "%"); + List list = Db.find(sql, predaytm + "%"); if (list.isEmpty()) { log.debug("%s 没有销售数据", predaytm); @@ -156,23 +160,38 @@ public class StatSmsJob implements Job { ); } + if (truck_num <= 0) { + log.debug("%s 无销售数据", sendtmtext); + return; + } + String supermarket_detail = StrKit.join(supdetail, ","); sendobj.put("time", sendtmtext); + sendobj.put("supermarket_count", list.size()); sendobj.put("weight", String.format("%.2f", weight)); sendobj.put("total_price", String.format("%.2f", total_price)); sendobj.put("truck_num", truck_num); sendobj.put("supermarket_detail", supermarket_detail.substring(0, supermarket_detail.length() - 1)); - System.out.println(sendobj); + SmsService.me.sendDayStat(sendobj); } @Override public void execute(JobExecutionContext jobExecutionContext) { + if (Config.isDev()) { + return; + } + try { statCustomer(); } catch (Exception e) { log.error(e.getMessage(), e); } + try { + stat(); + } catch (Exception e) { + log.error(e.getMessage(), e); + } } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java index e5de800..7713b30 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/main/Config.java @@ -294,8 +294,6 @@ public class Config extends JFinalConfig { } catch (Exception e) { log.error(e.getMessage(), e); } - - new StatSmsJob().stat(); } catch (Exception e) { log.error(e.getMessage(), e); } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/log/SmsService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/log/SmsService.java index e698a96..a11f601 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/log/SmsService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/log/SmsService.java @@ -10,8 +10,11 @@ import com.cowr.service.ssjygl.main.SvrCacheData; import com.cowr.sms.AliyunSmsService; import com.jfinal.kit.StrKit; import com.jfinal.log.Log; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.IAtom; import java.math.BigDecimal; +import java.sql.SQLException; import java.util.*; public class SmsService { @@ -78,8 +81,9 @@ public class SmsService { } } - private boolean sendBySysusers(List users, String temp_code, JSONObject obj, String content, String relate_table, String relate_id){ + private boolean sendBySysusers(List users, String temp_code, JSONObject obj, String content, String relate_table, String relate_id) { Date now = new Date(); + List logs = new ArrayList<>(); for (Sysuser sysuser : users) { try { @@ -123,13 +127,26 @@ public class SmsService { smslog.setRelateTable(relate_table); smslog.setRelateId(relate_id); - smslog.save(); + logs.add(smslog); } catch (Exception e) { log.error(e.getMessage(), e); } } - return true; + try { + return Db.tx(new IAtom() { + @Override + public boolean run() { + int[] ret = Db.batchSave(logs, logs.size()); + + return ret.length == logs.size(); + } + }); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + return false; } /** @@ -227,7 +244,7 @@ public class SmsService { return false; } - Date now = new Date(); + Date now = new Date(); String date = DateTimeUtil.sdfymd.get().format(now); JSONObject obj = new JSONObject(); @@ -273,7 +290,7 @@ public class SmsService { return false; } - Date now = new Date(); + Date now = new Date(); String date = DateTimeUtil.sdfymd.get().format(now); JSONObject obj = new JSONObject(); @@ -295,20 +312,21 @@ public class SmsService { /** * 客户每日汇总 * ${time}共计运输黄砂${weight}吨、运输车次${truck_num}辆次,合计${total_price}元。其中${supermarket_detail}元。。 + * * @return */ - public boolean sendCustomerDayStat(Map smsmap){ - if(smsmap.isEmpty()){ + public boolean sendCustomerDayStat(Map smsmap) { + if (smsmap.isEmpty()) { log.debug("发送对象没有内容"); return false; } List ids = new ArrayList<>(); - for(Integer k : smsmap.keySet()){ + for (Integer k : smsmap.keySet()) { ids.add("?"); } - if(ids.isEmpty()){ + if (ids.isEmpty()) { log.debug("没有有效的id"); return false; } @@ -322,27 +340,29 @@ public class SmsService { return false; } - Date now = new Date(); + Date now = new Date(); + List logs = new ArrayList<>(); for (Sysuser sysuser : users) { try { Integer customer_id = sysuser.getEntityId(); - if(!smsmap.containsKey(customer_id)){ + if (!smsmap.containsKey(customer_id)) { log.debug("没有找到 %s 关联的发送内容", customer_id); continue; } String phone = sysuser.getPhone(); - if (Config.isDev()) { + // 客户的这个,先全部往 13627293906 这里发,看看运行情况 +// if (Config.isDev()) { phone = "13627293906"; - } +// } log.debug("给 %s 发送短信", phone); - JSONObject obj = smsmap.get(customer_id); - String content = null; + JSONObject obj = smsmap.get(customer_id); + String content = null; try { content = this.aliyunsms.generator(Const.SMS_TEMP_MAP.get(Const.TEMP_CODE_CUSTOMER_DAY_STAT), obj); } catch (Exception e) { @@ -382,12 +402,103 @@ public class SmsService { smslog.setRelateTable(Customer.tablename); smslog.setRelateId(customer_id.toString()); - smslog.save(); + logs.add(smslog); } catch (Exception e) { log.error(e.getMessage(), e); } } - return true; + try { + return Db.tx(new IAtom() { + @Override + public boolean run() { + int[] ret = Db.batchSave(logs, logs.size()); + + return ret.length == logs.size(); + } + }); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + return false; + } + + public boolean sendDayStat(JSONObject obj) { + try { + Date now = new Date(); + + List list = SmsNoticeContact.dao.find("select * from sms_notice_contact t where json_contains(t.type, \"1\")"); + + if (list.isEmpty()) { + log.debug("没有找到短信通知联系人"); + return false; + } + + List logs = new ArrayList<>(); + + for (SmsNoticeContact contact : list) { + String content = null; + try { + content = this.aliyunsms.generator(Const.SMS_TEMP_MAP.get(Const.TEMP_CODE_DAY_STAT), obj); + } catch (Exception e) { + log.error(e.getMessage(), e); + return false; + } + + String phone = contact.getPhone(); + + if (Config.isDev()) { + phone = "13627293906"; + } + + String response = this.aliyunsms.send(phone, Const.TEMP_CODE_DAY_STAT, obj); + log.debug(response); + + JSONObject ret = JSONObject.parseObject(response); + + SmsLog smslog = new SmsLog(); + smslog.setId(StrKit.getRandomUUID()); + smslog.setPhone(phone); + smslog.setName(contact.getName()); + smslog.setContent(obj.toJSONString()); + smslog.setCreateTime(now); + smslog.setSendcontent(content); + + if (ret.containsKey("BizId")) { + smslog.setBizid(ret.getString("BizId")); + } + + if (ret.containsKey("Code")) { + smslog.setCode(ret.getString("Code")); + } + + if (ret.containsKey("RequestId")) { + smslog.setRequestid(ret.getString("RequestId")); + } + + if (ret.containsKey("RequestId")) { + smslog.setRequestid(ret.getString("RequestId")); + } + + smslog.setRelateTable("stat"); + smslog.setRelateId(null); + + logs.add(smslog); + } + + return Db.tx(new IAtom() { + @Override + public boolean run() throws SQLException { + int[] ret = Db.batchSave(logs, logs.size()); + + return ret.length == logs.size(); + } + }); + } catch (Exception e) { + log.error(e.getMessage(), e); + } + + return false; } } diff --git a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/noticecontact/SmsNoticeContactService.java b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/noticecontact/SmsNoticeContactService.java index f65e1d1..91e2945 100644 --- a/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/noticecontact/SmsNoticeContactService.java +++ b/ssjygl-xsx-service/src/main/java/com/cowr/service/ssjygl/sms/noticecontact/SmsNoticeContactService.java @@ -38,6 +38,8 @@ public class SmsNoticeContactService extends BaseService { } } + model.setType(JSONArray.toJSONString(list)); // 将 ["1"] 转为 [1] + Result ret = super.save(model, sysuser); if(ret.getCode() == Result.SUCCESS){ @@ -70,6 +72,8 @@ public class SmsNoticeContactService extends BaseService { } } + model.setType(JSONArray.toJSONString(list)); // 将 ["1"] 转为 [1] + Result ret = super.update(model, sysuser); if(ret.getCode() == Result.SUCCESS){ diff --git a/ssjygl-xsx-service/src/main/resources/job.properties b/ssjygl-xsx-service/src/main/resources/job.properties index 69b5ac3..f849e89 100644 --- a/ssjygl-xsx-service/src/main/resources/job.properties +++ b/ssjygl-xsx-service/src/main/resources/job.properties @@ -14,7 +14,7 @@ cleanossbakfile.job=com.cowr.service.ssjygl.jobs.CleanOSSBakFileJob cleanossbakfile.cron= 1 0 1 * * ? cleanossbakfile.enable=true -# 每天 8 点统计发送前一天各客户销售情况 +# 每天 8 点统计发送前一天各销售情况,包含了客户信息汇总(发给客户)和总的汇总(发给公司) statsms.job=com.cowr.service.ssjygl.jobs.StatSmsJob statsms.cron= 0 0 8 * * ? statsms.enable=false \ No newline at end of file