lisai17@sina.com 2020-11-06 10:14:11 +08:00
parent 3347b7ed65
commit 6c861813e5
9 changed files with 238 additions and 187 deletions

View File

@ -19,11 +19,19 @@ public class Const {
public static final double DEFAULT_LGTD = 115.265535; // 默认经度 浠水县
public static final double DEFAULT_LTTD = 30.451867; // 默认维度 浠水县
public static final String TEMP_CODE_DAY_STAT = "SMS_205430436"; // 日销售汇总
public static final String TEMP_CODE_CUSTOMER_DAY_STAT = "SMS_205430478"; // 日销售汇总
public static final String TEMP_CODE_PEIE = "SMS_203673037"; // 配额分配通知
public static final String TEMP_CODE_DEPOSIT_SUCCESS = "SMS_205430440"; // 客户预存成功通知
public static final String TEMP_CODE_DEPOSIT_FAIL = "SMS_205440366"; // 客户预存失败通知
public static Map<String, String> SMS_TEMP_MAP;
static {
SMS_TEMP_MAP = new HashMap<>();
SMS_TEMP_MAP.put("SMS_203673037", "已经在${supermarket_name}分配了${weight}吨配额,请在${date}安排车辆前去运输。");
SMS_TEMP_MAP.put(TEMP_CODE_DAY_STAT, "${time}共计运输黄砂${weight}吨、运输车次${truck_num}辆次,合计${total_price}元。其中${market_detail}。");
SMS_TEMP_MAP.put(TEMP_CODE_CUSTOMER_DAY_STAT, "${time}销售汇总:${supermarket_count}个砂站共销售${weight}吨黄砂,总价${total_price}。各砂站详情如下:${market_detail}。");
SMS_TEMP_MAP.put(TEMP_CODE_PEIE, "已经在${supermarket_name}分配了${weight}吨配额,请在${date}安排车辆前去运输。");
SMS_TEMP_MAP.put(TEMP_CODE_DEPOSIT_SUCCESS, "${time}${customer_name}在浠水县长投环保有限公司的预存${amount}元,合计余额${surplus}元。");
SMS_TEMP_MAP.put(TEMP_CODE_DEPOSIT_FAIL, "${time}${customer_name}在浠水县长投环保有限公司预存的${amount}元审核未通过,若有疑问请及时联系浠水县长投环保结算中心。");
}
}

View File

@ -5,7 +5,7 @@ import com.jfinal.plugin.activerecord.IBean;
import com.alibaba.fastjson.annotation.JSONField;
/**
* Generated by COWR Sun Sep 13 00:58:42 CST 2020
* Generated by COWR Fri Nov 06 09:28:55 CST 2020
* TableName: sms_log
* Remarks: -
* PrimaryKey: id
@ -26,7 +26,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: NO
* isPrimaryKey: YES
* defaultValue:
*
* @param id uuid
*/
@JSONField(name="id")
@ -49,7 +48,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
*
* @param phone
*/
@JSONField(name="phone")
@ -66,13 +64,34 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
return getStr("phone");
}
/**
* name: name
* type: VARCHAR(255)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
* @param name
*/
@JSONField(name="name")
public void setName(String name) {
set("name", name);
}
/**
* @return name
*/
@JSONField(name="name")
public String getName() {
return getStr("name");
}
/**
* name: content
* type: JSON(1073741824)
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param content json
*/
@JSONField(name="content")
@ -95,7 +114,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: NO
* isPrimaryKey: NO
* defaultValue:
*
* @param createTime
*/
@JSONField(name="create_time")
@ -118,7 +136,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: NO
* isPrimaryKey: NO
* defaultValue: CURRENT_TIMESTAMP
*
* @param changeTime
*/
@JSONField(name="change_time")
@ -141,7 +158,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param bizid IDIDQuerySendDetails
*/
@JSONField(name="bizid")
@ -164,10 +180,9 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param code
* <p>
* OK
OK
*/
@JSONField(name="code")
public void setCode(String code) {
@ -177,8 +192,8 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
/**
* @return code
* <p>
* OK
OK
*/
@JSONField(name="code")
public String getCode() {
@ -191,7 +206,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param requestid ID ID
*/
@JSONField(name="requestid")
@ -214,12 +228,11 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue: 0
*
* @param sendstatus
* 0
* 1
* 2
* 3
0
1
2
3
*/
@JSONField(name="sendstatus")
public void setSendstatus(Integer sendstatus) {
@ -229,10 +242,10 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
/**
* @return sendstatus
* 0
* 1
* 2
* 3
0
1
2
3
*/
@JSONField(name="sendstatus")
public Integer getSendstatus() {
@ -245,7 +258,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param sendcontent
*/
@JSONField(name="sendcontent")
@ -268,14 +280,13 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param billNum
*
* +
* <p>
* <=7070
* <p>
* >7067
+
<=7070
>7067
*/
@JSONField(name="bill_num")
public void setBillNum(Integer billNum) {
@ -285,12 +296,12 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
/**
* @return bill_num
*
* +
* <p>
* <=7070
* <p>
* >7067
+
<=7070
>7067
*/
@JSONField(name="bill_num")
public Integer getBillNum() {
@ -303,7 +314,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param receivedate
*/
@JSONField(name="receivedate")
@ -326,7 +336,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param senddate
*/
@JSONField(name="senddate")
@ -349,7 +358,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param relateTable
*/
@JSONField(name="relate_table")
@ -372,7 +380,6 @@ public abstract class BaseSmsLog<M extends BaseSmsLog<M>> extends BaseModel<M> i
* isNullable: YES
* isPrimaryKey: NO
* defaultValue:
*
* @param relateId
*/
@JSONField(name="relate_id")

View File

@ -450,8 +450,24 @@ group by date
List<Record> outlist = new ArrayList<>();
Record c1 = new Record().set("id", 1).set("name", "固定客户").set("cnt", Db.queryInt("select count(*) cnt from customer"));
Record c2 = new Record().set("id", 2).set("name", "零散客户").set("cnt", Db.queryInt("select count(distinct customer_name) cnt from ordercluster where customer_id is null"));
Record c1 = new Record()
.set("id", 1)
.set("name", "固定客户")
.set("cnt", Db.queryInt("select count(*) cnt from customer"))
.set("day_quota_cnt", 0)
.set("day_quota_weight", 0)
.set("day_cnt", 0)
.set("day_weight", 0)
.set("day_total_price", 0);
Record c2 = new Record()
.set("id", 2)
.set("name", "零散客户")
.set("cnt", Db.queryInt("select count(distinct customer_name) cnt from ordercluster where customer_id is null"))
.set("day_quota_cnt", 0)
.set("day_quota_weight", 0)
.set("day_cnt", 0)
.set("day_weight", 0)
.set("day_total_price", 0);
outlist.add(c1);
outlist.add(c2);

View File

@ -21,7 +21,7 @@ import java.util.List;
public class SmsLogService extends BaseService {
public static final SmsLogService me = new SmsLogService();
public Page<Record> find(PageParam pp, String stm, String etm, String phone, Integer sendstatus, String sendcontent) {
public Page<Record> find(PageParam pp, String stm, String etm, String phone, String name, Integer sendstatus, String sendcontent) {
String selectsql = "select * ";
String fromsql = "from sms_log t where 1=1 \n";
List<Object> paraList = new ArrayList<>();
@ -41,6 +41,11 @@ public class SmsLogService extends BaseService {
paraList.add("%" + phone.trim() + "%");
}
if (StrKit.notBlank(name)) {
fromsql += " and t.name like ? \n";
paraList.add("%" + name.trim() + "%");
}
if (sendstatus != null) {
fromsql += " and t.sendstatus = ? \n";
paraList.add(sendstatus);

View File

@ -95,7 +95,7 @@ public class Config extends JFinalConfig {
public static DeviceThread deviceThread = new DeviceThread();
public static SocketIOService socketio = null;
private static boolean client_run = true;
public static final String CLINET_VERSION = "20201104";
public static final String CLINET_VERSION = "20201106";
public static String getRootPath() {
return PathKit.getWebRootPath()

View File

@ -26,9 +26,10 @@ public class SmsLogController extends Controller {
String stm = get("stm");
String etm = get("etm");
String phone = get("phone");
String name = get("name");
Integer sendstatus = getInt("sendstatus");
String sendcontent = get("sendcontent");
renderJson(Result.object(SmsLogService.me.find(pp, stm, etm, phone, sendstatus, sendcontent)));
renderJson(Result.object(SmsLogService.me.find(pp, stm, etm, phone, name, sendstatus, sendcontent)));
}
/**

View File

@ -1020,6 +1020,11 @@ public class OrderclusterSyncService extends BaseSyncService {
SyncTask synctask = new SyncTask();
Date now = new Date();
final Ordercluster[] forwardoldobj = {Ordercluster.dao.findFirst(
"select * from ordercluster t \n" +
" where t.customer_id = ? \n" +
" and t.cutoff_time = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerId(), cutoff_time)};
boolean ret = Db.tx(new IAtom() {
@Override
@ -1040,32 +1045,27 @@ public class OrderclusterSyncService extends BaseSyncService {
synctask.addUpdateData(oldobj);
}
Ordercluster forwardoldobj = Ordercluster.dao.findFirst(
"select * from ordercluster t \n" +
" where t.customer_id = ? \n" +
" and t.cutoff_time = ? \n" +
" and t.state < 5 limit 1", oldobj.getCustomerId(), cutoff_time);
if (forwardoldobj == null) {
if (forwardoldobj[0] == null) {
// 新建一个
forwardoldobj = oldobj.clone();
forwardoldobj.setId(null); // 等待数据库自增长
forwardoldobj.setUuid(StrKit.getRandomUUID());
forwardoldobj.setTotalWeight(total_weight);
forwardoldobj.setCutoffTime(cutoff_time);
forwardoldobj.setCreateTime(now); // 当前系统时间
forwardoldobj.setCreateUserId(sysuser.getId()); // 当前用户id
forwardoldobj.setCreateUserName(sysuser.getName());
forwardoldobj.setState(OrderStateEnum.INITIAL.getStateid()); // 新增固定为 1
forwardoldobj[0] = oldobj.clone();
forwardoldobj[0].setId(null); // 等待数据库自增长
forwardoldobj[0].setUuid(StrKit.getRandomUUID());
forwardoldobj[0].setTotalWeight(total_weight);
forwardoldobj[0].setCutoffTime(cutoff_time);
forwardoldobj[0].setCreateTime(now); // 当前系统时间
forwardoldobj[0].setCreateUserId(sysuser.getId()); // 当前用户id
forwardoldobj[0].setCreateUserName(sysuser.getName());
forwardoldobj[0].setState(OrderStateEnum.INITIAL.getStateid()); // 新增固定为 1
ret = forwardoldobj.save();
synctask.addSaveData(forwardoldobj);
ret = forwardoldobj[0].save();
synctask.addSaveData(forwardoldobj[0]);
} else {
// 已有的,直接更新重量
forwardoldobj.setTotalWeight(forwardoldobj.getTotalWeight().add(total_weight));
forwardoldobj[0].setTotalWeight(forwardoldobj[0].getTotalWeight().add(total_weight));
ret = forwardoldobj.update();
synctask.addUpdateData(forwardoldobj);
ret = forwardoldobj[0].update();
synctask.addUpdateData(forwardoldobj[0]);
}
if (!ret) {
@ -1080,7 +1080,7 @@ public class OrderclusterSyncService extends BaseSyncService {
OrderclusterTruck oct = new OrderclusterTruck();
oct.setId(StrKit.getRandomUUID());
oct.setOrderclusterId(forwardoldobj.getId());
oct.setOrderclusterId(forwardoldobj[0].getId());
oct.setTruckLicense(oldoct.getTruckLicense());
synctask.addSaveData(oct);
@ -1099,7 +1099,7 @@ public class OrderclusterSyncService extends BaseSyncService {
}
}
return SyncTaskService.me.save(synctask, forwardoldobj.getSupermarketId());
return SyncTaskService.me.save(synctask, forwardoldobj[0].getSupermarketId());
} catch (Exception e) {
log.error(e.getMessage(), e);
}
@ -1110,6 +1110,10 @@ public class OrderclusterSyncService extends BaseSyncService {
if (ret) {
SyncTaskService.me.send(synctask);
if (forwardoldobj[0] != null) {
SmsService.me.sendPeiE(forwardoldobj[0]);
}
}
return ret ? Result.success() : Result.failed("操作失败");

View File

@ -26,9 +26,10 @@ public class SmsLogController extends Controller {
String stm = get("stm");
String etm = get("etm");
String phone = get("phone");
String name = get("name");
Integer sendstatus = getInt("sendstatus");
String sendcontent = get("sendcontent");
renderJson(Result.object(SmsLogService.me.find(pp, stm, etm, phone, sendstatus, sendcontent)));
renderJson(Result.object(SmsLogService.me.find(pp, stm, etm, phone, name, sendstatus, sendcontent)));
}
/**

View File

@ -28,6 +28,60 @@ public class SmsService {
this.aliyunsms = new AliyunSmsService();
}
public void checkSendStatus() {
List<SmsLog> logs = SmsLog.dao.find("select * from sms_log t where t.code = 'OK' and t.sendstatus < 2 limit 500");
if (logs.isEmpty()) {
return;
}
log.debug("检查 %s 短信发送状态", logs.size());
long st = System.currentTimeMillis();
for (SmsLog smslog : logs) {
try {
if (st - smslog.getCreateTime().getTime() > 24 * 60 * 60 * 1000) {
smslog.setSendstatus(2);
smslog.update();
log.debug("发送给 %s 的短信超时", smslog.getPhone());
continue;
}
String response = this.aliyunsms.query(smslog.getPhone(), DateTimeUtil.yMd.get().format(smslog.getCreateTime()), smslog.getBizid());
log.debug(response);
JSONObject ret = JSONObject.parseObject(response);
if ("OK".equals(ret.getString("Code"))) {
if (ret.getInteger("TotalCount") == 0) {
log.debug("还未处理完成,没有查询到发送结果");
continue;
}
JSONObject detail = ret.getJSONObject("SmsSendDetailDTOs").getJSONArray("SmsSendDetailDTO").getJSONObject(0);
smslog.setReceivedate(detail.getDate("ReceiveDate"));
smslog.setSendcontent(detail.getString("Content"));
smslog.setSenddate(detail.getDate("SendDate"));
smslog.setSendstatus(detail.getIntValue("SendStatus"));
if (smslog.getSendcontent() != null) {
int len = smslog.getSendcontent().length();
if (len <= 70) {
smslog.setBillNum(1);
} else {
smslog.setBillNum((int) Math.ceil(len / 67.0));
}
}
smslog.update();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}
/**
*
* : ${supermarket_name}${weight}${date}
@ -113,6 +167,7 @@ public class SmsService {
SmsLog smslog = new SmsLog();
smslog.setId(StrKit.getRandomUUID());
smslog.setPhone(phone);
smslog.setName(sysuser.getName());
smslog.setContent(obj.toJSONString());
smslog.setCreateTime(now);
smslog.setSendcontent(content);
@ -145,57 +200,11 @@ public class SmsService {
return false;
}
public void checkSendStatus() {
List<SmsLog> logs = SmsLog.dao.find("select * from sms_log t where t.code = 'OK' and t.sendstatus < 2 limit 500");
if (logs.isEmpty()) {
return;
}
log.debug("检查 %s 短信发送状态", logs.size());
long st = System.currentTimeMillis();
for (SmsLog smslog : logs) {
try {
if (st - smslog.getCreateTime().getTime() > 24 * 60 * 60 * 1000) {
smslog.setSendstatus(2);
smslog.update();
log.debug("发送给 %s 的短信超时", smslog.getPhone());
continue;
}
String response = this.aliyunsms.query(smslog.getPhone(), DateTimeUtil.yMd.get().format(smslog.getCreateTime()), smslog.getBizid());
log.debug(response);
JSONObject ret = JSONObject.parseObject(response);
if ("OK".equals(ret.getString("Code"))) {
if (ret.getInteger("TotalCount") == 0) {
log.debug("还未处理完成,没有查询到发送结果");
continue;
}
JSONObject detail = ret.getJSONObject("SmsSendDetailDTOs").getJSONArray("SmsSendDetailDTO").getJSONObject(0);
smslog.setReceivedate(detail.getDate("ReceiveDate"));
smslog.setSendcontent(detail.getString("Content"));
smslog.setSenddate(detail.getDate("SendDate"));
smslog.setSendstatus(detail.getIntValue("SendStatus"));
if (smslog.getSendcontent() != null) {
int len = smslog.getSendcontent().length();
if (len <= 70) {
smslog.setBillNum(1);
} else {
smslog.setBillNum((int) Math.ceil(len / 67.0));
}
}
smslog.update();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
/**
*
* @return
*/
public boolean sendDepositSuccess(){
return false;
}
}