diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/WxFlowAbleController.java b/mallinkAdmin/src/main/java/com/iformall/controller/WxFlowAbleController.java index 0fd1e4c8c..f48a5acd3 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/WxFlowAbleController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/WxFlowAbleController.java @@ -131,7 +131,7 @@ public class WxFlowAbleController extends BaseController { @PostMapping(value = "reject") @SystemControllerLog(description = "工作流-驳回") public ResultData reject(@RequestBody Map params) { - return wxFlowService.reject(params,super.getUser().getId(),super.getUser().getName(),super.getTenantId()); + return wxFlowService.reject(params,super.getUser().getId(),super.getUser().getName(),super.getUser().getPhone(),super.getTenantId()); } diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java index 6d9fd75fd..e937c99ec 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/BillNotificationSchedule.java @@ -5,8 +5,8 @@ import com.iformall.domain.po.*; import com.iformall.enums.*; import com.iformall.mapper.*; import com.iformall.mq.MqBaseProducer; +import com.iformall.service.WxBillAllService; import org.apache.commons.collections.map.HashedMap; -import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -43,6 +43,8 @@ public class BillNotificationSchedule { @Autowired private MqBaseProducer mqBaseProducer; + @Autowired + WxBillAllService wxBillAllService; /** * 每天9点执行 @@ -51,6 +53,7 @@ public class BillNotificationSchedule { public void sendMsgFromBill() { logger.info("账单通知任务启动"); sendWaitPayBill(); + wxBillAllService.sendWaitPayBillEmail(); sendOweBill(); logger.info("账单通知任务结束"); } @@ -91,8 +94,6 @@ public class BillNotificationSchedule { BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); String phone = bill.get("linkPhone").toString(); String appname = bill.get("appname").toString(); - String email = bill.get("email").toString(); - String billType = bill.get("billType").toString(); logger.info("待缴账单检验短信配置信息"); // WxMsgConfig wxMsgConfig = checkMsgConfig(tenantId); @@ -124,25 +125,10 @@ public class BillNotificationSchedule { map.put("date",receiveDate); wxMsgRecord.setDynamicContentMap(map); mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); - - //发邮件 - if(StringUtils.isNotBlank(email)) { - String billListStr = "
"; - billListStr += "
"+billType+"
"; - billListStr += "
"+price+"
"; - billListStr += "
"+receiveDate+"
"; - billListStr += "
"; - map.put("billList",billListStr); - MailMsg mailMsg = new MailMsg(); - mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); - mailMsg.setModelId(EnumMailMsgModel.MAIL_BILL_WAIT_PAY.getCode()); - mailMsg.setReceiver(email); - mailMsg.setTenantId(tenantId); - mailMsg.setDynamicContentMap(map); - mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); - } } - } + + + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java b/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java index 8bbe5ba78..522fa4717 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxTopic.java @@ -38,7 +38,7 @@ public class WxTopic implements Serializable { @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endTime") private Date endTime; /*状态1投放2作废**/ - @io.swagger.annotations.ApiModelProperty(value="状态",name="status") + @io.swagger.annotations.ApiModelProperty(value="状态1生效2失效3作废",name="status") private Integer status; @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") private Date createtime; diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumMailMsgModel.java b/mallinkService/src/main/java/com/iformall/enums/EnumMailMsgModel.java index c615ebf56..d72f7e0a6 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumMailMsgModel.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumMailMsgModel.java @@ -6,7 +6,7 @@ package com.iformall.enums; */ public enum EnumMailMsgModel { MAIL_PASS_NODIFY(345, "审批通过通知"), - MAIL_BILL_WAIT_PAY(345, "代缴账单通知"), + MAIL_BILL_WAIT_PAY(346, "代缴账单通知"), MAIL_APPLY_NODIFY(347, "审批通知"), MAIL_BILL_OWE(348, "欠缴账单通知"), MAIL_ASSIGNEE_NODIFY(349, "代办通知"), diff --git a/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java b/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java index a3c0f5384..34a640333 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/WxBillAllMapper.java @@ -23,4 +23,9 @@ public interface WxBillAllMapper { List> getOweBill(); + /** + * +group by账单类型 + * @return + */ + List> getWaitPayBillForEmail(); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java index 27652f0bd..8543b0ee3 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxBillAllService.java @@ -26,4 +26,6 @@ public interface WxBillAllService { Object getBillInfo(WxBillAll wxBillAll); Long hasOweBill(Long contractId,Integer type); + + void sendWaitPayBillEmail(); } diff --git a/mallinkService/src/main/java/com/iformall/service/WxFlowService.java b/mallinkService/src/main/java/com/iformall/service/WxFlowService.java index 21fb6c09c..e2f52727b 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxFlowService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxFlowService.java @@ -58,7 +58,7 @@ public interface WxFlowService { * @param params * @return */ - ResultData reject(@RequestBody Map params,Long userId,String userName,String tenantId); + ResultData reject(@RequestBody Map params,Long userId,String userName,String userPhone,String tenantId); /** * 撤回 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java index c591e60b7..9a288a7ef 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java @@ -9,10 +9,14 @@ import com.iformall.domain.vo.WxBillAll; import com.iformall.enums.*; import com.iformall.exception.MallinkException; import com.iformall.mapper.*; +import com.iformall.mq.MqBaseProducer; import com.iformall.service.*; import com.iformall.utils.Constant; import com.iformall.utils.DateUtils; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.map.HashedMap; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; @@ -20,12 +24,14 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.math.BigDecimal; +import java.math.RoundingMode; import java.util.*; import java.util.stream.Collectors; @@ -81,6 +87,9 @@ public class WxBillAllServiceImpl implements WxBillAllService { @Autowired WxBillOtherDepositMapper wxBillOtherDepositMapper; + @Autowired + MqBaseProducer mqBaseProducer; + @Override public Map listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { //更新各账单状态 @@ -531,4 +540,70 @@ public class WxBillAllServiceImpl implements WxBillAllService { } return 0l; } + + public Map>> toMap(List> mapList){ + Map>> result = new HashMap<>(); + for (Map bill:mapList) { + Long merchantId = (Long)bill.get("merchantId"); + List> currList = result.get(merchantId); + if(currList == null) currList = new ArrayList<>(); + currList.add(bill); + result.put(merchantId,currList); + } + return result; + } + + @Override + public void sendWaitPayBillEmail() { + List> waitBillListForEmail = wxBillAllMapper.getWaitPayBillForEmail(); + + if(CollectionUtils.isNotEmpty(waitBillListForEmail)) { + Map>> merchantMap = toMap(waitBillListForEmail); + for (Long merchantId : merchantMap.keySet()) { + List> mapList = merchantMap.get(merchantId); + if(CollectionUtils.isNotEmpty(mapList)){ + String email = (String)mapList.get(0).get("email"); + if(StringUtils.isBlank(email)){ + continue; + } + String tenantId = (String)mapList.get(0).get("tenantId"); + String receiveDate = (String)mapList.get(0).get("receiveDate"); + String manager = (String)mapList.get(0).get("manager"); + String managerPhone = (String)mapList.get(0).get("managerPhone"); + + String billListStr = ""; + BigDecimal sumNeedPay = new BigDecimal(0); + for (Map bill : mapList) { + String billType = bill.get("billType").toString(); + BigDecimal needPay = (BigDecimal) bill.get("needPay"); + BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); + + sumNeedPay = sumNeedPay.add(price); + billListStr += "
"; + billListStr += "
" + billType + "
"; + billListStr += "
" + price + "
"; + billListStr += "
" + receiveDate + "
"; + billListStr += "
"; + } + //发邮件 + Map map = new HashedMap(); + map.put("price", sumNeedPay.toString()); + map.put("date", receiveDate); + map.put("billList", billListStr); + map.put("linkName",manager==null?"":manager); + map.put("linkPhone",managerPhone==null?"":managerPhone); + MailMsg mailMsg = new MailMsg(); + mailMsg.setSubject("代缴账单通知"); + mailMsg.setHtml(true); + mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); + mailMsg.setModelId(EnumMailMsgModel.MAIL_BILL_WAIT_PAY.getCode()); + mailMsg.setTo(new String[]{email}); + mailMsg.setTenantId(tenantId); + mailMsg.setDynamicContentMap(map); + mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } + } + + } + } } diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java index 0709a0ae6..47911525e 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxFlowServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.io.OutputStream; +import java.text.SimpleDateFormat; import java.util.*; /** @@ -238,21 +239,60 @@ public class WxFlowServiceImpl implements WxFlowService { // 给审批人发送代办通知短信 List mallUserInfoList = getUserByProcessInstanceId(processInstance.getId()); for (MallUserInfo mallUserInfo:mallUserInfoList) { - Map content = new HashedMap(); - content.put("userName",starterInfo.getName()); - content.put("page", Constant.adminPage); - - WxMsgRecord wxMsgRecord = new WxMsgRecord(); - wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); - wxMsgRecord.setModelType(EnumMsgModel.FLOW_ASSIGNEE_NODIFY.getCode()); - wxMsgRecord.setReceiver(mallUserInfo.getPhone()); - wxMsgRecord.setTenantId(tenantId); - wxMsgRecord.setDynamicContentMap(content); - mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + sendAssigneeMsgAndEmail(tenantId,mallUserInfo.getPhone(),mallUserInfo.getEmail(),starterInfo.getName(),businessId); } return new ResultData(); } + public void sendAssigneeMsgAndEmail(String tenantId,String phone,String email,String userName,Long businessId){ + Map dynamicContentMap = new HashMap<>(); + dynamicContentMap.put("userName",userName); + dynamicContentMap.put("page", Constant.adminPage); + WxMsgRecord wxMsgRecord = new WxMsgRecord(); + wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); + wxMsgRecord.setModelType(EnumMsgModel.FLOW_ASSIGNEE_NODIFY.getCode()); + wxMsgRecord.setReceiver(phone); + wxMsgRecord.setTenantId(tenantId); + wxMsgRecord.setDynamicContentMap(dynamicContentMap); + mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + + //发邮件 + if(StringUtils.isNotBlank(email)){ + Map msgReplaceMap = new HashedMap(); + msgReplaceMap.put("page", Constant.adminPage); + msgReplaceMap.put("applyTime", new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date())); + ResultData resultData = getTaskStatusList(businessId, tenantId); + List flowRecordList = (List) resultData.data; + String taskListHtml = ""; + for (WxFlowRecord record : flowRecordList) { + if (record.getStatus().equals(EnumFlowRecordStatus.NEW.getCode())) { + msgReplaceMap.put("starter", record.getUserName()); + msgReplaceMap.put("starterRemark", record.getRemark() == null ? "" : record.getRemark()); + } else if (record.getStatus().equals(EnumFlowRecordStatus.ASSIGNEE.getCode())) { + taskListHtml += "
"; + taskListHtml += "
待审批
" + record.getUserName() + "
"; + taskListHtml += "
" + record.getRemark() + "
"; + } else { + taskListHtml += "
"; + taskListHtml += "
审批通过
" + record.getUserName() + "
"; + taskListHtml += "
" + record.getRemark() + "
"; + } + } + msgReplaceMap.put("taskList", taskListHtml); + MailMsg mailMsg = new MailMsg(); + mailMsg.setSubject("代办通知"); + mailMsg.setHtml(true); + mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); + mailMsg.setModelId(EnumMailMsgModel.MAIL_ASSIGNEE_NODIFY.getCode()); + mailMsg.setTo(new String[]{email}); + mailMsg.setTenantId(tenantId); + mailMsg.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + }else{ + logger.info("邮件地址为空,不发邮件,phone:{},userName:{}",phone,userName); + } + } + public String variablesToJson(List> variables){ HashMap map = new HashMap<>(); for (Map mapInfo:variables) { @@ -458,12 +498,13 @@ public class WxFlowServiceImpl implements WxFlowService { */ public boolean isEndAndSendMsg(Map mapInfo,String taskKey,String processInstanceId,String tenantId,String userName){ // 发送短信 - Map msgReplaceMap = new HashedMap(); + Map msgReplaceMap; WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); wxMsgValidationcode.setTenantId(tenantId); Map userMap = (Map)mapInfo.get("starter"); List> taskAssigneeList = (List)mapInfo.get("taskAssignee"); Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); + String email = (String)userMap.get("email"); // 判断下个节点是否有设置审批人,没有,直接通过,有,发短信通知 if(!isEnded(processInstanceId)){ @@ -472,16 +513,7 @@ public class WxFlowServiceImpl implements WxFlowService { String assignee = ""; List mallUserInfoList = getUserByProcessInstanceId(processInstanceId); for (MallUserInfo mallUserInfo:mallUserInfoList) { - msgReplaceMap.put("userName",userName); - msgReplaceMap.put("page",Constant.adminPage); - - WxMsgRecord wxMsgRecord = new WxMsgRecord(); - wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); - wxMsgRecord.setModelType(EnumMsgModel.FLOW_ASSIGNEE_NODIFY.getCode()); - wxMsgRecord.setReceiver(mallUserInfo.getPhone()); - wxMsgRecord.setTenantId(tenantId); - wxMsgRecord.setDynamicContentMap(msgReplaceMap); - mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + sendAssigneeMsgAndEmail(tenantId,mallUserInfo.getPhone(),mallUserInfo.getEmail(),userName,businessId); } // 给发起人发送短信 @@ -498,6 +530,22 @@ public class WxFlowServiceImpl implements WxFlowService { wxMsgRecord.setTenantId(tenantId); wxMsgRecord.setDynamicContentMap(msgReplaceMap); mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + + //发邮件 + if(StringUtils.isNotBlank(email)){ + msgReplaceMap = new HashedMap(); + msgReplaceMap.put("contract", businessId + ""); + msgReplaceMap.put("page", Constant.adminPage); + MailMsg mailMsg = new MailMsg(); + mailMsg.setSubject("审批通知"); + mailMsg.setHtml(true); + mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); + mailMsg.setModelId(EnumMailMsgModel.MAIL_APPLY_NODIFY.getCode()); + mailMsg.setTo(new String[]{email}); + mailMsg.setTenantId(tenantId); + mailMsg.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } return false; }else{ //继续递归判断 @@ -520,7 +568,6 @@ public class WxFlowServiceImpl implements WxFlowService { mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); //发邮件 - String email = (String)userMap.get("email"); if(StringUtils.isNotBlank(email)) { MailMsg mailMsg = new MailMsg(); mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); @@ -561,7 +608,7 @@ public class WxFlowServiceImpl implements WxFlowService { @Override @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class}) - public ResultData reject(Map params,Long userId,String userName,String tenantId) { + public ResultData reject(Map params,Long userId,String userName,String userPhone,String tenantId) { String processInstanceId = (String)params.get("processInstanceId"); String remark = (String)params.get("remark"); @@ -570,6 +617,7 @@ public class WxFlowServiceImpl implements WxFlowService { Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); Integer flowType = (Integer)mapInfo.get("flowType"); Map userMap = (Map)mapInfo.get("starter"); + String email = (String) userMap.get("email"); String taskName; String taskKey; @@ -601,13 +649,12 @@ public class WxFlowServiceImpl implements WxFlowService { //修改记录表当前状态 wxFlowRecordMapper.updateCurrStatus(new WxFlowRecord(processInstanceId,EnumRentContractAppStatus.REJECT.getCode())); - // 给发起人发送驳回消息 + //给发起人发送驳回消息 Map msgReplaceMap = new HashedMap(); WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); wxMsgValidationcode.setTenantId(tenantId); msgReplaceMap.put("contract",businessId+""); msgReplaceMap.put("page",Constant.adminPage); - WxMsgRecord wxMsgRecord = new WxMsgRecord(); wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); wxMsgRecord.setModelType(EnumMsgModel.FLOW_REJECT_NODIFY.getCode()); @@ -615,6 +662,26 @@ public class WxFlowServiceImpl implements WxFlowService { wxMsgRecord.setTenantId(tenantId); wxMsgRecord.setDynamicContentMap(msgReplaceMap); mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); + + //发送邮件 + if(StringUtils.isNotBlank(email)) { + msgReplaceMap = new HashedMap(); + msgReplaceMap.put("contract", businessId + ""); + msgReplaceMap.put("page", Constant.adminPage); + msgReplaceMap.put("name",userName); + msgReplaceMap.put("remark",remark); + msgReplaceMap.put("linkName",userName); + msgReplaceMap.put("linkPhone",userPhone); + MailMsg mailMsg = new MailMsg(); + mailMsg.setSubject("驳回通知"); + mailMsg.setHtml(true); + mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); + mailMsg.setModelId(EnumMailMsgModel.MAIL_REJECT_NODIFY.getCode()); + mailMsg.setTo(new String[]{email}); + mailMsg.setTenantId(tenantId); + mailMsg.setDynamicContentMap(msgReplaceMap); + mqBaseProducer.sendMessage(mailMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); + } return new ResultData(); } diff --git a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml index 1819fd6d8..f3069840a 100644 --- a/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillAllMapper.xml @@ -1,7 +1,7 @@ - + - - + + - + - - + + - - + + + + - - + - select * from wx_topic + select from wx_topic