| @@ -131,7 +131,7 @@ public class WxFlowAbleController extends BaseController { | |||||
| @PostMapping(value = "reject") | @PostMapping(value = "reject") | ||||
| @SystemControllerLog(description = "工作流-驳回") | @SystemControllerLog(description = "工作流-驳回") | ||||
| public ResultData reject(@RequestBody Map<String, Object> params) { | public ResultData reject(@RequestBody Map<String, Object> 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()); | |||||
| } | } | ||||
| @@ -5,8 +5,8 @@ import com.iformall.domain.po.*; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.mq.MqBaseProducer; | import com.iformall.mq.MqBaseProducer; | ||||
| import com.iformall.service.WxBillAllService; | |||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -43,6 +43,8 @@ public class BillNotificationSchedule { | |||||
| @Autowired | @Autowired | ||||
| private MqBaseProducer mqBaseProducer; | private MqBaseProducer mqBaseProducer; | ||||
| @Autowired | |||||
| WxBillAllService wxBillAllService; | |||||
| /** | /** | ||||
| * 每天9点执行 | * 每天9点执行 | ||||
| @@ -51,6 +53,7 @@ public class BillNotificationSchedule { | |||||
| public void sendMsgFromBill() { | public void sendMsgFromBill() { | ||||
| logger.info("账单通知任务启动"); | logger.info("账单通知任务启动"); | ||||
| sendWaitPayBill(); | sendWaitPayBill(); | ||||
| wxBillAllService.sendWaitPayBillEmail(); | |||||
| sendOweBill(); | sendOweBill(); | ||||
| logger.info("账单通知任务结束"); | logger.info("账单通知任务结束"); | ||||
| } | } | ||||
| @@ -91,8 +94,6 @@ public class BillNotificationSchedule { | |||||
| BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | BigDecimal price = needPay.divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | ||||
| String phone = bill.get("linkPhone").toString(); | String phone = bill.get("linkPhone").toString(); | ||||
| String appname = bill.get("appname").toString(); | String appname = bill.get("appname").toString(); | ||||
| String email = bill.get("email").toString(); | |||||
| String billType = bill.get("billType").toString(); | |||||
| logger.info("待缴账单检验短信配置信息"); | logger.info("待缴账单检验短信配置信息"); | ||||
| // WxMsgConfig wxMsgConfig = checkMsgConfig(tenantId); | // WxMsgConfig wxMsgConfig = checkMsgConfig(tenantId); | ||||
| @@ -124,25 +125,10 @@ public class BillNotificationSchedule { | |||||
| map.put("date",receiveDate); | map.put("date",receiveDate); | ||||
| wxMsgRecord.setDynamicContentMap(map); | wxMsgRecord.setDynamicContentMap(map); | ||||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | ||||
| //发邮件 | |||||
| if(StringUtils.isNotBlank(email)) { | |||||
| String billListStr = "<div style=\"margin: 0 5%;width:90%;box-sizing: content-box; border: 1px solid #DEDEDE;background: #FFFFFF;\"><div style=\"overflow: hidden;height: auto;width: 100%;\">"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">"+billType+"</div>"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">"+price+"</div>"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">"+receiveDate+"</div>"; | |||||
| billListStr += "</div></div>"; | |||||
| 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()); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| @@ -38,7 +38,7 @@ public class WxTopic implements Serializable { | |||||
| @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endTime") | @io.swagger.annotations.ApiModelProperty(value="结束时间",name="endTime") | ||||
| private Date endTime; | private Date endTime; | ||||
| /*状态1投放2作废**/ | /*状态1投放2作废**/ | ||||
| @io.swagger.annotations.ApiModelProperty(value="状态",name="status") | |||||
| @io.swagger.annotations.ApiModelProperty(value="状态1生效2失效3作废",name="status") | |||||
| private Integer status; | private Integer status; | ||||
| @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") | @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createtime") | ||||
| private Date createtime; | private Date createtime; | ||||
| @@ -6,7 +6,7 @@ package com.iformall.enums; | |||||
| */ | */ | ||||
| public enum EnumMailMsgModel { | public enum EnumMailMsgModel { | ||||
| MAIL_PASS_NODIFY(345, "审批通过通知"), | MAIL_PASS_NODIFY(345, "审批通过通知"), | ||||
| MAIL_BILL_WAIT_PAY(345, "代缴账单通知"), | |||||
| MAIL_BILL_WAIT_PAY(346, "代缴账单通知"), | |||||
| MAIL_APPLY_NODIFY(347, "审批通知"), | MAIL_APPLY_NODIFY(347, "审批通知"), | ||||
| MAIL_BILL_OWE(348, "欠缴账单通知"), | MAIL_BILL_OWE(348, "欠缴账单通知"), | ||||
| MAIL_ASSIGNEE_NODIFY(349, "代办通知"), | MAIL_ASSIGNEE_NODIFY(349, "代办通知"), | ||||
| @@ -23,4 +23,9 @@ public interface WxBillAllMapper { | |||||
| List<Map<String, Object>> getOweBill(); | List<Map<String, Object>> getOweBill(); | ||||
| /** | |||||
| * +group by账单类型 | |||||
| * @return | |||||
| */ | |||||
| List<Map<String, Object>> getWaitPayBillForEmail(); | |||||
| } | } | ||||
| @@ -26,4 +26,6 @@ public interface WxBillAllService { | |||||
| Object getBillInfo(WxBillAll wxBillAll); | Object getBillInfo(WxBillAll wxBillAll); | ||||
| Long hasOweBill(Long contractId,Integer type); | Long hasOweBill(Long contractId,Integer type); | ||||
| void sendWaitPayBillEmail(); | |||||
| } | } | ||||
| @@ -58,7 +58,7 @@ public interface WxFlowService { | |||||
| * @param params | * @param params | ||||
| * @return | * @return | ||||
| */ | */ | ||||
| ResultData reject(@RequestBody Map<String, Object> params,Long userId,String userName,String tenantId); | |||||
| ResultData reject(@RequestBody Map<String, Object> params,Long userId,String userName,String userPhone,String tenantId); | |||||
| /** | /** | ||||
| * 撤回 | * 撤回 | ||||
| @@ -9,10 +9,14 @@ import com.iformall.domain.vo.WxBillAll; | |||||
| import com.iformall.enums.*; | import com.iformall.enums.*; | ||||
| import com.iformall.exception.MallinkException; | import com.iformall.exception.MallinkException; | ||||
| import com.iformall.mapper.*; | import com.iformall.mapper.*; | ||||
| import com.iformall.mq.MqBaseProducer; | |||||
| import com.iformall.service.*; | import com.iformall.service.*; | ||||
| import com.iformall.utils.Constant; | import com.iformall.utils.Constant; | ||||
| import com.iformall.utils.DateUtils; | 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.io.FileUtils; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import org.apache.poi.ss.usermodel.Cell; | import org.apache.poi.ss.usermodel.Cell; | ||||
| import org.apache.poi.ss.usermodel.Row; | import org.apache.poi.ss.usermodel.Row; | ||||
| import org.apache.poi.xssf.usermodel.XSSFSheet; | 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.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.beans.factory.annotation.Value; | |||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.*; | import java.io.*; | ||||
| import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
| import java.math.RoundingMode; | |||||
| import java.util.*; | import java.util.*; | ||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||
| @@ -81,6 +87,9 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| @Autowired | @Autowired | ||||
| WxBillOtherDepositMapper wxBillOtherDepositMapper; | WxBillOtherDepositMapper wxBillOtherDepositMapper; | ||||
| @Autowired | |||||
| MqBaseProducer mqBaseProducer; | |||||
| @Override | @Override | ||||
| public Map<String, Object> listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { | public Map<String, Object> listAsPage(WxBillAll record, Integer pageIndex, Integer pageSize) { | ||||
| //更新各账单状态 | //更新各账单状态 | ||||
| @@ -531,4 +540,70 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||||
| } | } | ||||
| return 0l; | return 0l; | ||||
| } | } | ||||
| public Map<Long, List<Map<String, Object>>> toMap(List<Map<String, Object>> mapList){ | |||||
| Map<Long, List<Map<String, Object>>> result = new HashMap<>(); | |||||
| for (Map<String, Object> bill:mapList) { | |||||
| Long merchantId = (Long)bill.get("merchantId"); | |||||
| List<Map<String, Object>> currList = result.get(merchantId); | |||||
| if(currList == null) currList = new ArrayList<>(); | |||||
| currList.add(bill); | |||||
| result.put(merchantId,currList); | |||||
| } | |||||
| return result; | |||||
| } | |||||
| @Override | |||||
| public void sendWaitPayBillEmail() { | |||||
| List<Map<String, Object>> waitBillListForEmail = wxBillAllMapper.getWaitPayBillForEmail(); | |||||
| if(CollectionUtils.isNotEmpty(waitBillListForEmail)) { | |||||
| Map<Long, List<Map<String, Object>>> merchantMap = toMap(waitBillListForEmail); | |||||
| for (Long merchantId : merchantMap.keySet()) { | |||||
| List<Map<String, Object>> 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<String, Object> 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 += "<div style=\"margin: 0 5%;width:90%;box-sizing: content-box; border: 1px solid #DEDEDE;background: #FFFFFF;\"><div style=\"overflow: hidden;height: auto;width: 100%;\">"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">" + billType + "</div>"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">" + price + "</div>"; | |||||
| billListStr += "<div style=\"width: 33.3%;float: left;height: 60px;line-height: 60px;text-align: center;font-family:MicrosoftYaHei;color:rgba(85,85,85,1);\">" + receiveDate + "</div>"; | |||||
| billListStr += "</div></div>"; | |||||
| } | |||||
| //发邮件 | |||||
| Map<String, String> 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()); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -33,6 +33,7 @@ import org.springframework.transaction.annotation.Transactional; | |||||
| import javax.servlet.http.HttpServletResponse; | import javax.servlet.http.HttpServletResponse; | ||||
| import java.io.InputStream; | import java.io.InputStream; | ||||
| import java.io.OutputStream; | import java.io.OutputStream; | ||||
| import java.text.SimpleDateFormat; | |||||
| import java.util.*; | import java.util.*; | ||||
| /** | /** | ||||
| @@ -238,21 +239,60 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| // 给审批人发送代办通知短信 | // 给审批人发送代办通知短信 | ||||
| List<MallUserInfo> mallUserInfoList = getUserByProcessInstanceId(processInstance.getId()); | List<MallUserInfo> mallUserInfoList = getUserByProcessInstanceId(processInstance.getId()); | ||||
| for (MallUserInfo mallUserInfo:mallUserInfoList) { | for (MallUserInfo mallUserInfo:mallUserInfoList) { | ||||
| Map<String,String> 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(); | return new ResultData(); | ||||
| } | } | ||||
| public void sendAssigneeMsgAndEmail(String tenantId,String phone,String email,String userName,Long businessId){ | |||||
| Map<String,String> 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<WxFlowRecord> flowRecordList = (List<WxFlowRecord>) 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 += "<div style=\"overflow: hidden;\"><div style=\"overflow: hidden;\"><div style=\"float: left; width: 40px;height: 30px;\"><img src=\"https://s3.cn-northwest-1.amazonaws.com.cn/iformall-net/cimg/emailhong.png\" style=\"display: block; width: 20px;height: 20px;margin-top: 10px;\"/></div>"; | |||||
| taskListHtml += "<div style=\"float: left; width: auto;margin-right:10px;height: 30px;line-height: 18px;font-size:18px;font-family:MicrosoftYaHei;font-weight:400;color:rgba(200,89,98,1);margin-top: 11px;\">待审批</div><div style=\"float: left; width: auto;margin-right:10px;height: 30px;margin-top:15px;line-height: 14px;font-size:14px;font-family:MicrosoftYaHei;font-weight:400;color:rgba(200,89,98,1);\">" + record.getUserName() + "</div>"; | |||||
| taskListHtml += "</div><div style=\"width: 80%; overflow: hidden;font-size:14px;font-family:MicrosoftYaHei;font-weight:400;padding-left: 30px;margin-left: 10px;padding-bottom: 20px; line-height: 24px; border-left: 2px dashed #DEDEDE; color:rgba(153,153,153,1);\">" + record.getRemark() + "</div></div>"; | |||||
| } else { | |||||
| taskListHtml += "<div style=\"overflow: hidden;\"><div style=\"overflow: hidden;\"><div style=\"float: left; width: 40px;height: 30px;\"><img src=\"https://s3.cn-northwest-1.amazonaws.com.cn/iformall-net/cimg/emailhui.png\" style=\"display: block; width: 20px;height: 20px;margin-top: 10px;\"/></div>"; | |||||
| taskListHtml += "<div style=\"float: left; width: auto;margin-right:10px;height: 30px;line-height: 18px;font-size:18px;font-family:MicrosoftYaHei;font-weight:400;color:rgba(153,153,153,1);margin-top: 11px;\">审批通过</div><div style=\"float: left; width: auto;margin-right:10px;height: 30px;margin-top:15px;line-height: 14px;font-size:14px;font-family:MicrosoftYaHei;font-weight:400;color:rgba(153,153,153,1);\">" + record.getUserName() + "</div>"; | |||||
| taskListHtml += "</div><div style=\"width: 80%; overflow: hidden;font-size:14px;font-family:MicrosoftYaHei;font-weight:400;padding-left: 30px;margin-left: 10px;padding-bottom: 20px; line-height: 24px; color:rgba(153,153,153,1);\">" + record.getRemark() + "</div></div>"; | |||||
| } | |||||
| } | |||||
| 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<Map<String,Object>> variables){ | public String variablesToJson(List<Map<String,Object>> variables){ | ||||
| HashMap<String,Object> map = new HashMap<>(); | HashMap<String,Object> map = new HashMap<>(); | ||||
| for (Map<String,Object> mapInfo:variables) { | for (Map<String,Object> mapInfo:variables) { | ||||
| @@ -458,12 +498,13 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| */ | */ | ||||
| public boolean isEndAndSendMsg(Map<String,Object> mapInfo,String taskKey,String processInstanceId,String tenantId,String userName){ | public boolean isEndAndSendMsg(Map<String,Object> mapInfo,String taskKey,String processInstanceId,String tenantId,String userName){ | ||||
| // 发送短信 | // 发送短信 | ||||
| Map<String,String> msgReplaceMap = new HashedMap(); | |||||
| Map<String,String> msgReplaceMap; | |||||
| WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); | WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); | ||||
| wxMsgValidationcode.setTenantId(tenantId); | wxMsgValidationcode.setTenantId(tenantId); | ||||
| Map<String,Object> userMap = (Map<String,Object>)mapInfo.get("starter"); | Map<String,Object> userMap = (Map<String,Object>)mapInfo.get("starter"); | ||||
| List<Map<String,String>> taskAssigneeList = (List)mapInfo.get("taskAssignee"); | List<Map<String,String>> taskAssigneeList = (List)mapInfo.get("taskAssignee"); | ||||
| Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); | Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); | ||||
| String email = (String)userMap.get("email"); | |||||
| // 判断下个节点是否有设置审批人,没有,直接通过,有,发短信通知 | // 判断下个节点是否有设置审批人,没有,直接通过,有,发短信通知 | ||||
| if(!isEnded(processInstanceId)){ | if(!isEnded(processInstanceId)){ | ||||
| @@ -472,16 +513,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| String assignee = ""; | String assignee = ""; | ||||
| List<MallUserInfo> mallUserInfoList = getUserByProcessInstanceId(processInstanceId); | List<MallUserInfo> mallUserInfoList = getUserByProcessInstanceId(processInstanceId); | ||||
| for (MallUserInfo mallUserInfo:mallUserInfoList) { | 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.setTenantId(tenantId); | ||||
| wxMsgRecord.setDynamicContentMap(msgReplaceMap); | wxMsgRecord.setDynamicContentMap(msgReplaceMap); | ||||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | 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; | return false; | ||||
| }else{ | }else{ | ||||
| //继续递归判断 | //继续递归判断 | ||||
| @@ -520,7 +568,6 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | ||||
| //发邮件 | //发邮件 | ||||
| String email = (String)userMap.get("email"); | |||||
| if(StringUtils.isNotBlank(email)) { | if(StringUtils.isNotBlank(email)) { | ||||
| MailMsg mailMsg = new MailMsg(); | MailMsg mailMsg = new MailMsg(); | ||||
| mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); | mailMsg.setMsgType(EnumMsgRecordType.EMAIL.getCode()); | ||||
| @@ -561,7 +608,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| @Override | @Override | ||||
| @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class}) | @Transactional(propagation = Propagation.REQUIRED,rollbackFor = {Exception.class}) | ||||
| public ResultData reject(Map<String, Object> params,Long userId,String userName,String tenantId) { | |||||
| public ResultData reject(Map<String, Object> params,Long userId,String userName,String userPhone,String tenantId) { | |||||
| String processInstanceId = (String)params.get("processInstanceId"); | String processInstanceId = (String)params.get("processInstanceId"); | ||||
| String remark = (String)params.get("remark"); | String remark = (String)params.get("remark"); | ||||
| @@ -570,6 +617,7 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); | Long businessId = Long.parseLong(mapInfo.get("businessId").toString()); | ||||
| Integer flowType = (Integer)mapInfo.get("flowType"); | Integer flowType = (Integer)mapInfo.get("flowType"); | ||||
| Map<String,Object> userMap = (Map<String,Object>)mapInfo.get("starter"); | Map<String,Object> userMap = (Map<String,Object>)mapInfo.get("starter"); | ||||
| String email = (String) userMap.get("email"); | |||||
| String taskName; | String taskName; | ||||
| String taskKey; | String taskKey; | ||||
| @@ -601,13 +649,12 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| //修改记录表当前状态 | //修改记录表当前状态 | ||||
| wxFlowRecordMapper.updateCurrStatus(new WxFlowRecord(processInstanceId,EnumRentContractAppStatus.REJECT.getCode())); | wxFlowRecordMapper.updateCurrStatus(new WxFlowRecord(processInstanceId,EnumRentContractAppStatus.REJECT.getCode())); | ||||
| // 给发起人发送驳回消息 | |||||
| //给发起人发送驳回消息 | |||||
| Map<String,String> msgReplaceMap = new HashedMap(); | Map<String,String> msgReplaceMap = new HashedMap(); | ||||
| WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); | WxMsgValidationcode wxMsgValidationcode = new WxMsgValidationcode(); | ||||
| wxMsgValidationcode.setTenantId(tenantId); | wxMsgValidationcode.setTenantId(tenantId); | ||||
| msgReplaceMap.put("contract",businessId+""); | msgReplaceMap.put("contract",businessId+""); | ||||
| msgReplaceMap.put("page",Constant.adminPage); | msgReplaceMap.put("page",Constant.adminPage); | ||||
| WxMsgRecord wxMsgRecord = new WxMsgRecord(); | WxMsgRecord wxMsgRecord = new WxMsgRecord(); | ||||
| wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | wxMsgRecord.setMsgType(EnumMsgRecordType.SMS.getCode()); | ||||
| wxMsgRecord.setModelType(EnumMsgModel.FLOW_REJECT_NODIFY.getCode()); | wxMsgRecord.setModelType(EnumMsgModel.FLOW_REJECT_NODIFY.getCode()); | ||||
| @@ -615,6 +662,26 @@ public class WxFlowServiceImpl implements WxFlowService { | |||||
| wxMsgRecord.setTenantId(tenantId); | wxMsgRecord.setTenantId(tenantId); | ||||
| wxMsgRecord.setDynamicContentMap(msgReplaceMap); | wxMsgRecord.setDynamicContentMap(msgReplaceMap); | ||||
| mqBaseProducer.sendMessage(wxMsgRecord, EnumMsgMqTopic.DEFAULT.getCode(),EnumMsgMqTag.DEFAULT.getCode(),EnumMsgMqKey.DEFAULT.getCode()); | 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(); | return new ResultData(); | ||||
| } | } | ||||
| @@ -1,7 +1,7 @@ | |||||
| <?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||
| <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||
| <mapper namespace="com.iformall.mapper.WxBillAllMapper"> | <mapper namespace="com.iformall.mapper.WxBillAllMapper"> | ||||
| <select id="list" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | <select id="list" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | ||||
| select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay, | select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay, | ||||
| bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status, | bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status, | ||||
| @@ -53,14 +53,14 @@ | |||||
| <if test=" null != billTypeValue ">and bill.bill_type_value = #{billTypeValue}</if> | <if test=" null != billTypeValue ">and bill.bill_type_value = #{billTypeValue}</if> | ||||
| <if test=" null != status ">and bill.`status` = #{status}</if> | <if test=" null != status ">and bill.`status` = #{status}</if> | ||||
| <if test=" null != rentShopType ">and bill.rent_shop_type = #{rentShopType}</if> | <if test=" null != rentShopType ">and bill.rent_shop_type = #{rentShopType}</if> | ||||
| order by bill.id desc,bill.merchant_id,bill.status,bill.receive_date desc | order by bill.id desc,bill.merchant_id,bill.status,bill.receive_date desc | ||||
| </select> | </select> | ||||
| <select id="queryOweInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | <select id="queryOweInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | ||||
| select count(bill.id) owncount,IFNULL(sum(bill.owe),0) owe from ( | select count(bill.id) owncount,IFNULL(sum(bill.owe),0) owe from ( | ||||
| select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' | select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' | ||||
| @@ -103,9 +103,9 @@ | |||||
| and bill.rent_shop_type = #{rentShopType} | and bill.rent_shop_type = #{rentShopType} | ||||
| </if> | </if> | ||||
| </select> | </select> | ||||
| <select id="queryPaidInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | <select id="queryPaidInfo" parameterType="com.iformall.domain.vo.WxBillAll" resultType="hashmap"> | ||||
| select count(bill.id) paycount,IFNULL(sum(bill.pay),0) pay from ( | select count(bill.id) paycount,IFNULL(sum(bill.pay),0) pay from ( | ||||
| select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' | select id,merchant_id,shop_id,tenant_id,1 bill_type_value,'租金' | ||||
| bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,rent_shop_type from wx_bill_rent where is_preview = 0 | bill_type,need_pay,receive_pay,pay,owe,receive_date,pay_date,expired_day,status,rent_shop_type from wx_bill_rent where is_preview = 0 | ||||
| @@ -147,8 +147,8 @@ | |||||
| and bill.rent_shop_type = #{rentShopType} | and bill.rent_shop_type = #{rentShopType} | ||||
| </if> | </if> | ||||
| </select> | </select> | ||||
| <select id="listData" resultType="hashmap" parameterType="com.iformall.domain.vo.WxBillAll"> | <select id="listData" resultType="hashmap" parameterType="com.iformall.domain.vo.WxBillAll"> | ||||
| select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay, | select bill.id,bill.merchant_id merchantId,bill.shop_id shopId,bill.bill_type_value billTypeValue,bill.bill_type billType,bill.need_pay needPay, | ||||
| bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status, | bill.receive_pay receivePay,bill.pay,bill.owe,bill.receive_date receiveDate,bill.pay_date payDate,bill.expired_day expiredDay,bill.status, | ||||
| @@ -209,12 +209,12 @@ | |||||
| #{status} | #{status} | ||||
| </foreach> | </foreach> | ||||
| </if> | </if> | ||||
| <if test=" null != typeList "> | <if test=" null != typeList "> | ||||
| and bill.`bill_type_value` in | and bill.`bill_type_value` in | ||||
| <foreach collection="typeList" index="index" item="type" open="(" separator="," close=")"> | <foreach collection="typeList" index="index" item="type" open="(" separator="," close=")"> | ||||
| #{type} | #{type} | ||||
| </foreach> | |||||
| </foreach> | |||||
| </if> | </if> | ||||
| <if test="null!=starttime and null!=endtime"> | <if test="null!=starttime and null!=endtime"> | ||||
| and DATE_FORMAT(bill.receive_date,'%Y-%m') between #{starttime} and #{endtime} | and DATE_FORMAT(bill.receive_date,'%Y-%m') between #{starttime} and #{endtime} | ||||
| @@ -230,52 +230,98 @@ | |||||
| </if> | </if> | ||||
| order by bill.merchant_id,bill.status,bill.receive_date desc | order by bill.merchant_id,bill.status,bill.receive_date desc | ||||
| </select> | </select> | ||||
| <select id="getWaitPayBill" resultType="hashmap"> | <select id="getWaitPayBill" resultType="hashmap"> | ||||
| select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate, | select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate, | ||||
| bill.need_pay needPay,m.link_phone linkPhone,app.appname,m.email,bill.bill_type billType from ( | |||||
| select bill.bill_type,bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from ( | |||||
| select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=1 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=2 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other_deposit | |||||
| bill.need_pay needPay,m.link_phone linkPhone,app.appname from ( | |||||
| select bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from ( | |||||
| select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=1 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=2 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other_deposit | |||||
| ) bill | |||||
| where DATEDIFF(bill.receive_date,now())=3 and bill.status not in(3,5,6) | |||||
| group by bill.tenant_id,bill.merchant_id,bill.receive_date) bill | |||||
| left join wx_merchant m on bill.merchant_id=m.id | |||||
| left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id | |||||
| where m.status=1 | |||||
| </select> | |||||
| <select id="getWaitPayBillForEmail" resultType="hashmap"> | |||||
| select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.receive_date receiveDate, | |||||
| bill.need_pay needPay,m.link_phone linkPhone,app.appname,m.email,bill.bill_type billType,ws.manager,ws.manager_phone managerPhone from ( | |||||
| select bill.bill_type,bill.tenant_id,bill.merchant_id,bill.receive_date,ifnull(sum(need_pay),0) need_pay from ( | |||||
| select id,merchant_id,shop_id,tenant_id,'租金' name,1 bill_type_value,'租金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'租赁押金' name,2 bill_type_value,'租赁押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_rent_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业费' name,3 bill_type_value,'物业费' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property where is_preview = 0 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'物业押金' name,4 bill_type_value,'物业押金' | |||||
| bill_type,need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' | |||||
| endtime,rent_shop_type from wx_bill_property_deposit | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'水费' name,5 bill_type_value,'水费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=1 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,'电费' name,6 bill_type_value,'电费' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_daily where type=2 | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,7 bill_type_value,'其他' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other | |||||
| union | |||||
| select id,merchant_id,shop_id,tenant_id,name,8 bill_type_value,'其他押金' bill_type,0 as | |||||
| need_pay,receive_pay,pay,owe,DATE_FORMAT(receive_date,'%Y-%m-%d') receive_date,pay_date,expired_day,status,'' starttime,'' endtime,rent_shop_type | |||||
| from wx_bill_other_deposit | |||||
| ) bill | |||||
| group by bill.tenant_id,bill.merchant_id,bill.receive_date,bill.bill_type | |||||
| ) bill | ) bill | ||||
| where DATEDIFF(bill.receive_date,now())=3 and bill.status not in(3,5,6) | |||||
| group by bill.tenant_id,bill.merchant_id,bill.receive_date) bill | |||||
| left join wx_merchant m on bill.merchant_id=m.id | left join wx_merchant m on bill.merchant_id=m.id | ||||
| left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id | left join (select tenant_id,`name` appname from wx_appinfo app where type=1) app on bill.tenant_id=app.tenant_id | ||||
| left join wx_merchant_shop wms on wms.merchant_id = m.id | |||||
| left join wx_shop ws on wms.shop_id = ws.id | |||||
| where m.status=1 | where m.status=1 | ||||
| </select> | </select> | ||||
| <select id="getOweBill" resultType="hashmap"> | <select id="getOweBill" resultType="hashmap"> | ||||
| select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.owe,m.link_phone linkPhone,app.appname from ( | select bill.tenant_id tenantId,bill.merchant_id merchantId,bill.owe,m.link_phone linkPhone,app.appname from ( | ||||
| select bill.tenant_id,bill.merchant_id,sum(owe) owe from ( | select bill.tenant_id,bill.merchant_id,sum(owe) owe from ( | ||||
| @@ -16,7 +16,12 @@ | |||||
| <result column="updatetime" property="updatetime" /> | <result column="updatetime" property="updatetime" /> | ||||
| </resultMap> | </resultMap> | ||||
| <sql id="allColumns"> | |||||
| `id`,`tenant_id`,`name`,`title`,content,cover,advert,begin_time,end_time,createtime,updatetime, | |||||
| if(now() > end_time,2,status) as status | |||||
| </sql> | |||||
| <sql id="dynamicWhereConditions"> | <sql id="dynamicWhereConditions"> | ||||
| where 1 = 1 | where 1 = 1 | ||||
| <if test=" null != id "> | <if test=" null != id "> | ||||
| @@ -43,7 +48,7 @@ | |||||
| </sql> | </sql> | ||||
| <select id="findList" parameterType="com.iformall.domain.po.WxTopic" resultMap="BaseResultMap"> | <select id="findList" parameterType="com.iformall.domain.po.WxTopic" resultMap="BaseResultMap"> | ||||
| select * from wx_topic | |||||
| select <include refid="allColumns" /> from wx_topic | |||||
| <include refid="dynamicWhereConditions" /> | <include refid="dynamicWhereConditions" /> | ||||
| </select> | </select> | ||||