Browse Source

10/13

master
wangpengfei 2 years ago
parent
commit
7ed8617acd
  1. 4
      yxt_supervise/supervise-crm/supervise-crm-biz/src/main/java/com/yxt/supervise/crm/biz/userproject/UserProjectRest.java
  2. 5
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/csmcashreport/CsmCashReportRest.java
  3. 9
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDaily.java
  4. 2
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyMapper.java
  5. 7
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyMapper.xml
  6. 1
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyQuery.java
  7. 10
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyRest.java
  8. 65
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyService.java
  9. 551
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/wechat/WechatRest.java
  10. 612
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/wechat/WechatService.java
  11. 6
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/ds/crm/CrmMapper.java
  12. 4
      yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/ds/crm/ProjectInfo.java
  13. 2
      yxt_supervise/supervise-system/supervise-system-api/src/main/java/com/yxt/supervise/system/sysorganization/SysOrganizationVo.java
  14. 1
      yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysorganization/SysOrganizationService.java

4
yxt_supervise/supervise-crm/supervise-crm-biz/src/main/java/com/yxt/supervise/crm/biz/userproject/UserProjectRest.java

@ -65,7 +65,7 @@ public class UserProjectRest {
} }
@ApiOperation("根据项目sid查询不同类人") @ApiOperation("根据项目sid查询不同类人")
@GetMapping("/getUserProjectBySid/{projectSid}") @GetMapping("/getUserProjectBySid/{projectSid}")
public ResultBean getWarehouse(@PathVariable String projectSid){ public ResultBean getWarehouse(@PathVariable("projectSid") String projectSid){
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
return UserProjectService.getUserProjectBySid(projectSid); return UserProjectService.getUserProjectBySid(projectSid);
} }
@ -76,7 +76,7 @@ public class UserProjectRest {
* @return * @return
*/ */
@GetMapping ("/getUserByType/{userType}") @GetMapping ("/getUserByType/{userType}")
public ResultBean getUserByType (@PathVariable String userType){ public ResultBean getUserByType (@PathVariable("userType") String userType){
return ProjectInformationService.getUserByType(userType); return ProjectInformationService.getUserByType(userType);
} }
@ApiOperation("删除") @ApiOperation("删除")

5
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/csmcashreport/CsmCashReportRest.java

@ -16,6 +16,7 @@ import com.yxt.supervise.report.api.reportsalesdaystore.ReportSalesDayStoreDto;
import com.yxt.supervise.report.biz.csmcashreportcashedtoday.CsmCashReportCashedTodayService; import com.yxt.supervise.report.biz.csmcashreportcashedtoday.CsmCashReportCashedTodayService;
import com.yxt.supervise.report.biz.csmcashreportsalesyesterday.CsmCashReportSalesYesterdayService; import com.yxt.supervise.report.biz.csmcashreportsalesyesterday.CsmCashReportSalesYesterdayService;
import com.yxt.supervise.report.biz.wechat.WechatRest; import com.yxt.supervise.report.biz.wechat.WechatRest;
import com.yxt.supervise.report.biz.wechat.WechatService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.junit.Test; import org.junit.Test;
@ -48,7 +49,7 @@ public class CsmCashReportRest {
// @Autowired // @Autowired
// CsmCashLogService csmCashLogService; // CsmCashLogService csmCashLogService;
@Autowired @Autowired
WechatRest wechatRest; WechatService wechatService;
private static final String TEMPLATE_FILE_NAME="C:\\Users\\www19\\Desktop\\每日回款审核报告模版.docx"; private static final String TEMPLATE_FILE_NAME="C:\\Users\\www19\\Desktop\\每日回款审核报告模版.docx";
@Value("${image.upload.path:static/upload/}") @Value("${image.upload.path:static/upload/}")
@ -105,7 +106,7 @@ public class CsmCashReportRest {
//推送微信消息 //推送微信消息
// ThreadUtil.execute(() -> { // ThreadUtil.execute(() -> {
// try { // try {
// wechatRest.collectionSendMessage(dataDate); // wechatService.collectionSendMessage(dataDate);
// } catch (Exception e) { // } catch (Exception e) {
// throw new RuntimeException(e); // throw new RuntimeException(e);
// } // }

9
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDaily.java

@ -2,6 +2,7 @@ package com.yxt.supervise.report.biz.projectdaily;
import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxt.common.core.domain.EntityWithId; import com.yxt.common.core.domain.EntityWithId;
@ -43,6 +44,14 @@ public class ProjectDaily extends EntityWithId {
private String userName; // 用户(报告人)姓名', private String userName; // 用户(报告人)姓名',
private int userType = 1; // 用户(报告人)类型:1监管、2客户、3银行', private int userType = 1; // 用户(报告人)类型:1监管、2客户、3银行',
private String userStaffSid; // 关联人员的Sid', private String userStaffSid; // 关联人员的Sid',
@TableField(exist = false)
private double bankPledgeRate;//银行规定质押率
@TableField(exist = false)
private String state="2";//质押状态
@TableField(exist = false)
private double creditLimit;//授信额度
@TableField(exist = false)
private double useLimit;//用信额度
/** /**
* 计算出的质押率 * 计算出的质押率

2
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyMapper.java

@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper @Mapper
public interface ProjectDailyMapper extends BaseMapper<ProjectDaily> { public interface ProjectDailyMapper extends BaseMapper<ProjectDaily> {

7
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyMapper.xml

@ -8,4 +8,11 @@
</where> </where>
order by orderDate desc order by orderDate desc
</select> </select>
<select id="selectList" resultType="com.yxt.supervise.report.biz.projectdaily.ProjectDaily">
select * from project_daily
<where>
${ew.sqlSegment}
</where>
order by orderDate desc
</select>
</mapper> </mapper>

1
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyQuery.java

@ -27,4 +27,5 @@ public class ProjectDailyQuery implements Query {
private String dataDateStart; // 数据日期 private String dataDateStart; // 数据日期
private String dataDateEnd; // 数据日期 private String dataDateEnd; // 数据日期
private String userSid;
} }

10
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyRest.java

@ -27,6 +27,7 @@ import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.util.List; import java.util.List;
import java.util.Map;
@RestController("com.yxt.supervise.report.biz.projectdaily.ProjectDailyRest") @RestController("com.yxt.supervise.report.biz.projectdaily.ProjectDailyRest")
@RequestMapping("/projectdaily") @RequestMapping("/projectdaily")
@ -55,7 +56,14 @@ public class ProjectDailyRest {
IPage<ProjectDaily> iPage = projectDailyService.listPage(pq); IPage<ProjectDaily> iPage = projectDailyService.listPage(pq);
return rb.success().setData(iPage); return rb.success().setData(iPage);
} }
@ApiOperation("查询条件项目监管报表信息")
@PostMapping("/selectList")
public ResultBean<Map<String,Object>> selectList(@RequestBody ProjectDailyQuery params) {
ResultBean rb = ResultBean.fireFail();
// PagerVo<ProjectDailyVo> projectDailyVoPagerVo = projectDailyService.selectListPage(pq);
Map<String,Object> list = projectDailyService.selectList(params);
return rb.success().setData(list);
}
@ApiOperation("添加项目监管报表信息") @ApiOperation("添加项目监管报表信息")
@PostMapping("/saveDaily") @PostMapping("/saveDaily")
public ResultBean saveDaily(@RequestBody ProjectDailyDto dto) { public ResultBean saveDaily(@RequestBody ProjectDailyDto dto) {

65
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/projectdaily/ProjectDailyService.java

@ -13,14 +13,18 @@ import com.yxt.common.core.query.PagerQuery;
import com.yxt.common.core.result.ResultBean; import com.yxt.common.core.result.ResultBean;
import com.yxt.common.core.vo.PagerVo; import com.yxt.common.core.vo.PagerVo;
import com.yxt.supervise.report.biz.wechat.WechatRest; import com.yxt.supervise.report.biz.wechat.WechatRest;
import com.yxt.supervise.report.biz.wechat.WechatService;
import com.yxt.supervise.report.ds.crm.CrmMapper;
import com.yxt.supervise.report.ds.crm.ProjectInfo;
import com.yxt.supervise.report.ds.crm.UserProject;
import com.yxt.supervise.system.sysuser.ProjectInformationVo;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.util.Date; import java.util.*;
import java.util.List;
@Service @Service
public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, ProjectDaily> { public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, ProjectDaily> {
@ -36,7 +40,9 @@ public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, Project
@Autowired @Autowired
private ProjectDailyFilesService projectDailyFilesService; private ProjectDailyFilesService projectDailyFilesService;
@Autowired @Autowired
private WechatRest wechatRest; private WechatService wechatService;
@Autowired
private CrmMapper crmMapper;
public PagerVo<ProjectDaily> selectListPage(PagerQuery<ProjectDailyQuery> pq) { public PagerVo<ProjectDaily> selectListPage(PagerQuery<ProjectDailyQuery> pq) {
ProjectDailyQuery params = pq.getParams(); ProjectDailyQuery params = pq.getParams();
@ -77,7 +83,40 @@ public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, Project
IPage<ProjectDaily> page = baseMapper.selectPage(iPage, qw); IPage<ProjectDaily> page = baseMapper.selectPage(iPage, qw);
return page; return page;
} }
public Map<String,Object> selectList(ProjectDailyQuery params) {
List<UserProject> userProjects=crmMapper.getProjectByUserSid(params.getUserSid());
List<ProjectDaily> list=new ArrayList<>();
Map<String,Object> map=new HashMap<>();
double creditLimitTotal=0;
double useLimitTotal=0;
for(UserProject userProject:userProjects){
if(StrUtil.isBlank(params.getOrderDate())){
params.setOrderDate(DateUtil.format(DateUtil.yesterday(),"yyyy-MM-dd"));;
}
ProjectInfo projectInfo= crmMapper.getProjectBySid(userProject.getProjectSid());
ProjectDaily projectDaily=baseMapper.selectOne(new QueryWrapper<ProjectDaily>()
.eq("projectSid",userProject.getProjectSid())
.eq("orderDate",params.getOrderDate()));
if(null!=projectInfo){
creditLimitTotal=creditLimitTotal+projectInfo.getCreditLimit();
useLimitTotal=useLimitTotal+projectInfo.getUseLimit();
}
if(null!=projectDaily){
if(null!=projectInfo) {
// System.out.println(projectDaily.getBankPledgeRate()/100);
projectDaily.setBankPledgeRate(projectInfo.getBankPledgeRate());
if (projectInfo.getBankPledgeRate() / 100 > projectDaily.getPledgeRate()) {
projectDaily.setState("1");
}
list.add(projectDaily);
}
}
}
map.put("creditLimitTotal",creditLimitTotal);
map.put("useLimitTotal",useLimitTotal);
map.put("list",list);
return map;
}
public ResultBean save(ProjectDailyDto dto) { public ResultBean save(ProjectDailyDto dto) {
ResultBean rb = ResultBean.fireFail(); ResultBean rb = ResultBean.fireFail();
ProjectDaily projectDaily = new ProjectDaily(); ProjectDaily projectDaily = new ProjectDaily();
@ -111,7 +150,21 @@ public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, Project
QueryWrapper<ProjectDaily> wq = new QueryWrapper<>(); QueryWrapper<ProjectDaily> wq = new QueryWrapper<>();
wq.eq("projectSid",projectSid) wq.eq("projectSid",projectSid)
.eq("orderDate",orderDate); .eq("orderDate",orderDate);
return baseMapper.selectOne(wq); ProjectDaily projectDaily=baseMapper.selectOne(wq);
ProjectInfo projectInfo= crmMapper.getProjectBySid(projectSid);
if(null!=projectDaily){
if(null!=projectInfo) {
projectDaily.setCreditLimit(projectInfo.getCreditLimit());
projectDaily.setUseLimit(projectInfo.getUseLimit());
projectDaily.setBankPledgeRate(projectInfo.getBankPledgeRate());
if (projectInfo.getBankPledgeRate() / 100 > projectDaily.getPledgeRate()) {
projectDaily.setState("1");
}
}
}else {
return new ProjectDaily();
}
return projectDaily;
} }
public void sendMess(String projectSid, String orderDate) { public void sendMess(String projectSid, String orderDate) {
@ -122,7 +175,7 @@ public class ProjectDailyService extends ServiceImpl<ProjectDailyMapper, Project
ThreadUtil.execute(() -> { ThreadUtil.execute(() -> {
try { try {
wechatRest.sendMessage(projectSid,orderDate); wechatService.sendMessage(projectSid,orderDate);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(e); throw new RuntimeException(e);
} }

551
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/wechat/WechatRest.java

@ -68,64 +68,21 @@ import static javax.xml.bind.JAXBIntrospector.getValue;
@RestController @RestController
@RequestMapping("v1/wechat") @RequestMapping("v1/wechat")
public class WechatRest { public class WechatRest {
static final long APP_LOGIN_CODE_TIME_LIMIT = 300L;
private static final String WX_URL_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
private static final String WX_URL_MESSAGE_SEND = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
private static final String WX_URL_MESSAGE_BIZ_SEND ="https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token=ACCESS_TOKEN";
private static final String APP_ID="wx1d44e0fcd110351a";
private static final String APP_ID_BIZ="wxc64c6cf0a06880e5";
private static final String APPSECRET="4764e32722a7d98656dea6afd9405701";
private static final String APPSECRETBIZ="eb3a0794da05f12a94c92134030246f1";
@Autowired @Autowired
WechatService wechatService; WechatService wechatService;
@Autowired
private CsmCashReportMapper csmCashReportMapper;
@Autowired
private ReportInventoryDayGatherMapper reportInventoryDayGatherMapper;
@Autowired
MessagePushLogService messagePushLogService;
@Autowired
StockDayRest stockDayRest;
@Autowired
com.yxt.supervise.report.ds.system.systemMapper systemMapper;
@Autowired
CrmMapper crmMapper;
@Autowired
ProjectDailyService projectDailyService;
@Autowired
RedisUtil redisUtil;
@Autowired
WarehouseMapper warehouseMapper;
@Autowired
RmsMapper rmsMapper;
@Autowired
ImgMessagesLogMapper imgMessagesLogMapper;
@Autowired
RiskMessagesLogMapper riskMessagesLogMapper;
@ApiOperation("token") @ApiOperation("token")
@GetMapping(value = "token") @GetMapping(value = "token")
public String wechate(String signature,String timestamp,String nonce,String echostr){ public String wechate(String signature,String timestamp,String nonce,String echostr){
String token=""; return wechatService.wechate(signature,timestamp,nonce,echostr);
if (signature != null && WeixinCheckoutUtil.checkSignature(signature, timestamp, nonce)) {
token=wechatService.push();
}
return token;
} }
@GetMapping(value = "authGet",produces = "text/plain;charset=utf-8") @GetMapping(value = "authGet",produces = "text/plain;charset=utf-8")
public String authGet(@RequestParam(name = "signature", required = false) String signature, public String authGet(@RequestParam(name = "signature", required = false) String signature,
@RequestParam(name = "timestamp", required = false) String timestamp, @RequestParam(name = "timestamp", required = false) String timestamp,
@RequestParam(name = "nonce", required = false) String nonce, @RequestParam(name = "nonce", required = false) String nonce,
@RequestParam(name = "echostr", required = false) String echostr) { @RequestParam(name = "echostr", required = false) String echostr) {
return wechatService.authGet(signature,timestamp,nonce,echostr);
if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
throw new IllegalArgumentException("请求参数非法,请核实!");
}
if (WeixinCheckoutUtil.checkSignature( signature, timestamp, nonce)) {
return echostr;
}
return "非法请求";
} }
/** /**
* 回款审核 * 回款审核
@ -134,76 +91,7 @@ public class WechatRest {
*/ */
@PostMapping("/collectionSendMessage/{projectSid}/{orderDate}") @PostMapping("/collectionSendMessage/{projectSid}/{orderDate}")
public void collectionSendMessage(@PathVariable String projectSid,@PathVariable("orderDate") String orderDate) throws Exception { public void collectionSendMessage(@PathVariable String projectSid,@PathVariable("orderDate") String orderDate) throws Exception {
CsmCashReportVo csmCashReportVo=csmCashReportMapper.getCsmCashReport(orderDate); wechatService.collectionSendMessage(projectSid,orderDate);
List<String> user= crmMapper.suerList(projectSid);
List<String> openIds=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser){
if(com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getAppletOpenid())){
openIds.add(sysUser.getAppletOpenid());
}
}
}
ProjectDaily projectDaily=projectDailyService.fetchByProjectAndDay(projectSid,orderDate);
// 模板参数
Map<String, String> sendMag = new HashMap<String, String>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "BT6BHEojCmgWNTcpz1raHNIpJEEISP1E134btP51p_8";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
String pa="";
JSONObject jsonObject=new JSONObject();
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
// sendMag.put("time1", new Template(csmCashReportVo.getReportDate()));
// sendMag.put("thing2", new Template("36524每日回款审核报告"));
// sendMag.put("thing3", new Template("赵丽晓"));
sendMag.put("time1", csmCashReportVo.getReportDate());
sendMag.put("thing2", "36524每日回款审核报告");
sendMag.put("thing3", "赵丽晓");
Map<String, String> miniprogram = new HashMap<>();
//云眼
// miniprogram.put("appid","wx11565021714ba796");
//云仓
miniprogram.put("appid","wx05604ce2a8bede05");//wx65c2b78fd1452eeb
miniprogram.put("pagepath","pages/index/auditReport?dataDate="+csmCashReportVo.getDataDate()+"&"+"companyName="+csmCashReportVo.getCompanyName());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("url", ""); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = JSONObject.parseObject(forEntity.getBody());
}
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//推送消息之后保存消息日志
MessagePushLogDto logDto=new MessagePushLogDto();
logDto.setContent(sendMag);
logDto.setMessageTime(csmCashReportVo.getDataDate());
logDto.setPagepath(pa);
// logDto.setMessageOpenids(list);
ThreadUtil.execute(() -> {
try {
messagePushLogService.save(logDto);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
//return forEntity.getBody();
} }
/** /**
@ -213,77 +101,7 @@ public class WechatRest {
*/ */
@PostMapping("/inventorySendMessage/{orderDate}") @PostMapping("/inventorySendMessage/{orderDate}")
public void inventorySendMessage(@PathVariable("orderDate") String orderDate) throws Exception { public void inventorySendMessage(@PathVariable("orderDate") String orderDate) throws Exception {
List<String>user= crmMapper.suerList("983eefd8-6109-4e8e-bc1b-71e16e644170"); wechatService.inventorySendMessage(orderDate);
List<String> openIds=new ArrayList<>();
for(String u:user){
openIds.add(systemMapper.getOpenId(u));
}
ReportInventoryDayGatherVo csmCashReportVo=reportInventoryDayGatherMapper.getReportInventoryDayGather(orderDate);
// 模板参数
Map<String, Template> sendMag = new HashMap<String, Template>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "BT6BHEojCmgWNTcpz1raHNIpJEEISP1E134btP51p_8";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
System.out.println("accessToken"+accessToken);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
// List<String> openIds=new ArrayList<>();
// openIds.add("oGdho60xVtWEXUks7nYEAn0tGlDE");
// openIds.add("oGdho66394A-4-NyumcJ1MEaT8Lo");
// openIds.add("oGdho68CArVhC_-7ELkG-jX21ruk");
// openIds.add("oGdho6yYB47f52HVk2NqirrFbRRk");
// openIds.add("oGdho6-12-ioAKeLhVUDYPucbDb4");
// openIds.add("oGdho668Hew45t0xfBJC84TNGVzI");
// openIds.add("oGdho624Cr3j_iZBj-0_HayKLNc4");
// openIds.add("oGdho6-LvwNY6KylgMlEG0C_JMmQ");
String pa="";
JSONObject jsonObject=new JSONObject();
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
sendMag.put("time1", new Template(csmCashReportVo.getOrderDate()));
sendMag.put("thing2", new Template("36524质物库存汇总"));
sendMag.put("thing3", new Template("赵丽晓"));
Map<String, String> miniprogram = new HashMap<>();
//云眼
// miniprogram.put("appid","wx11565021714ba796");
//云仓
miniprogram.put("appid","wx05604ce2a8bede05");//wx65c2b78fd1452eeb
miniprogram.put("pagepath","pages/index/demoReportKc?orderDate="+csmCashReportVo.getOrderDate());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("url", ""); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = JSONObject.parseObject(forEntity.getBody());
}
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//推送消息之后保存消息日志
// MessagePushLogDto logDto=new MessagePushLogDto();
// logDto.setContent(sendMag);
// logDto.setMessageTime(csmCashReportVo.getReportTime());
// logDto.setPagepath(pa);
// logDto.setMessageOpenidDtos(list);
// ThreadUtil.execute(() -> {
// try {
// messagePushLogService.save(logDto);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// });
//return forEntity.getBody();
} }
/** /**
@ -293,24 +111,7 @@ public class WechatRest {
*/ */
@PostMapping("/SendMessage/{projectSid}/{orderDate}") @PostMapping("/SendMessage/{projectSid}/{orderDate}")
public void sendMessage(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate){ public void sendMessage(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate){
RespMessReturn r=new RespMessReturn(); wechatService.sendMessage(projectSid,orderDate);
// List<String> user= crmMapper.suerList(projectSid);
List<String> user= getUser(projectSid,"1");
List<String> openIds=new ArrayList<>();
for(String u:user){
String sysUser=systemMapper.getOpenId(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser)) {
openIds.add(sysUser);
}
}
}
ProjectDaily projectDaily=projectDailyService.fetchByProjectAndDay(projectSid,orderDate);
// ProjectInfo projectInfo =crmMapper.getProjectNameBySid(projectSid);
ProjectInfo projectInfo=crmMapper.selectOne(new QueryWrapper<ProjectInfo>().eq("sid",projectSid));
// 公众号的模板id(也有相应的接口可以查询到)
r= SuperviseWxMessSender.jgsjzlSend(projectInfo.getRegulatoryLeader(),openIds,projectSid,projectDaily.getProjectName(),projectDaily.getReportTime());
System.out.println(r);
} }
/** /**
@ -320,30 +121,7 @@ public class WechatRest {
*/ */
@GetMapping("/shMessage") @GetMapping("/shMessage")
public void shMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){ public void shMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=riskMessagesLogMapper.getRiskByCode(); wechatService.shMessage(shSid,riskSid);
RespMessReturn r=new RespMessReturn();
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"2");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String shName=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
RiskAlarm riskAlarm=rmsMapper.getRiskByMessSid(riskSid);
String name =cl(riskAlarm.getContent());
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030404");
System.out.println("推送中");
r= SuperviseWxMessSender.jkSend(openIds,projectSid,riskSid,name,shName,riskSid,ft.format(new Date()));
System.out.println(r);
} }
/** /**
@ -353,213 +131,27 @@ public class WechatRest {
*/ */
@GetMapping("/secureMessage") @GetMapping("/secureMessage")
public void secureMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){ public void secureMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=riskMessagesLogMapper.getRiskByCode(); wechatService.secureMessage(shSid,riskSid);
RespMessReturn r=new RespMessReturn();
// List<UserProject> user= crmMapper.users(shSid);
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"3");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String shName=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
RiskAlarm riskAlarm=rmsMapper.getRiskByMessSid(riskSid);
String name =cl(riskAlarm.getContent());
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030404");
System.out.println("推送中");
r= SuperviseWxMessSender.secureSend(openIds,projectSid,riskSid,name,shName,riskSid,ft.format(new Date()));
System.out.println(r);
} }
@Test
public String cl (String w){
String a="";
//String w="[Device(name=东北角的摄像头, serialNumber=L28475439, status=断网), Device(name=111, serialNumber=L28475439, status=断网), Device(name=22, serialNumber=L28475439, status=断网), Device(name=33, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网)]";
String st=w.substring(1, (w.length() - 1));
String [] str2 = st.split("Device");
// List<Device> list=new ArrayList<>();
for (int i = 0; i < str2.length; i++) {
String item = str2[i];
if(com.yxt.common.base.utils.StringUtils.isNotEmpty(item)){
// Device device=new Device();
String [] str3 = item.split(", ");
// device.setName(str3[0].substring(6));
// device.setSerialNumber(str3[1].substring(13));
// device.setStatus(str3[2].substring(7,str3[2].length()-1));
String name=str3[0].substring(6);
if(StringUtils.isEmpty(a)){
a=a+name;
}else {
a=a+","+name;
}
// list.add(device);
}
}
if(a.length()>=20){
a=a.substring(0,19)+"…";
}
System.out.println(a.length());
System.out.println(a);
return a; /**
} * 图片对比消息推送
* @param shSid
* @param riskSid
*/
@GetMapping("/shImgMessage") @GetMapping("/shImgMessage")
public void shImgMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){ public void shImgMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=imgMessagesLogMapper.getImgRiskByCode(); wechatService.shImgMessage(shSid,riskSid);
RespMessReturn r=new RespMessReturn();
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"4");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String name=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030405");
r= SuperviseWxMessSender.jkImgSend("赵丽晓",openIds,projectSid,riskSid,name,riskSid,ft.format(new Date()));
System.out.println(r);
} }
/**
* 系统异常消息
* @param shSid
* @param riskSid
*/
@GetMapping("/sysErrMessage") @GetMapping("/sysErrMessage")
public void sysErrMessage(@RequestParam("shSid")String shSid,@RequestParam("riskSid") String riskSid){ public void sysErrMessage(@RequestParam("shSid")String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=imgMessagesLogMapper.getImgRiskByCode(); wechatService.sysErrMessage(shSid,riskSid);
RespMessReturn r=new RespMessReturn();
// List<UserProject> user= getUser(shSid);
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
openIds.add("oGdho60xVtWEXUks7nYEAn0tGlDE");
mobiles.add("15932270269");
openIds.add("oGdho66394A-4-NyumcJ1MEaT8Lo");
mobiles.add("18603312020");
openIds.add("oGdho615_xBMYYwftEjjBlC6p2uE");
mobiles.add("13513219196");
openIds.add("oGdho6yYB47f52HVk2NqirrFbRRk");
mobiles.add("13513211777");
openIds.add("oGdho668Hew45t0xfBJC84TNGVzI");
mobiles.add("13623307393");
openIds.add("oGdho68CArVhC_-7ELkG-jX21ruk");
mobiles.add("13131170271");
openIds.add("oGdho69VxJil_NRxv9StYVpQg58U");
mobiles.add("13333113292");
openIds.add("oGdho66Wy-Or1UeqoNHU1YL5yAEM");
mobiles.add("19933133338");
// for(UserProject u:user){
// SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u.getUserSid());
// if(null!=sysUser) {
// if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getAppletOpenid())) {
// openIds.add(sysUser.getAppletOpenid());
// mobiles.add(sysUser.getMobile());
// }
// }
// }
String projectSid=crmMapper.ProjectSidByshSid(shSid);
String name=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030405");
r= SuperviseWxMessSender.sysErrSend(openIds,riskSid,name,shSid,riskSid,ft.format(new Date()));
System.out.println(r);
}
public List<String> getUser(String projectSid,String templateSid){
List<UserProject>list=crmMapper.getAllByProjectSid(projectSid);
List<String> users=new ArrayList<>();
for (UserProject userProject:list){
int count=crmMapper.countByUserProjectSid(userProject.getSid(),templateSid);
if(count>0){
users.add(userProject.getUserSid());
}
}
return users;
}
public ResultBean sendVerificationCode(String shName, List<String> users,String type) {
ResultBean rb = new ResultBean().fireFail();
Date date = new Date();
for (String mobile : users) {
String codeRedis = redisUtil.get(""+mobile);
if (com.yxt.common.base.utils.StringUtils.isNotEmpty(codeRedis)) {
//查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信
String sendTime = codeRedis.substring(4);
long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000;
if (diffSecond < 60) {
return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!");
}
}
String content="";
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(type.equals("030404")){
content= "仓库异常提醒:" + shName + "仓库监控设备于" + ft.format(new Date()) + "发生异常,请及时处理。";
}else if(type.equals("030405")){
content = "仓库异常提醒:" + shName + "仓库货物于" + ft.format(new Date()) + "发生图片比对异常,请及时处理。";
}
// String res = "1";
String res = com.yxt.supervise.report.biz.util.MsgWs.SendWaitWorkMsg(mobile, content);
if (res.equals("1")) {
System.out.println("发送消息");
redisUtil.set(""+mobile,""+date.getTime(), APP_LOGIN_CODE_TIME_LIMIT);
}
}
// String res = "1";
return ResultBean.fireSuccess().setMsg("发送短信验证码成功");
}
public ResultBean wwww(String shName, List<String> users,String type) {
String e="http://IP+Port/utf8/SingleCallByTts.aspx?CorpID=*&Pwd=*&Mobile=*&Content=*&TtsCode=*& ShowNumber=";
ResultBean rb = new ResultBean().fireFail();
Date date = new Date();
for (String mobile : users) {
String codeRedis = redisUtil.get(""+mobile);
if (com.yxt.common.base.utils.StringUtils.isNotEmpty(codeRedis)) {
//查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信
String sendTime = codeRedis.substring(4);
long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000;
if (diffSecond < 60) {
return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!");
}
}
String content="";
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
if(type.equals("030404")){
content= "仓库异常提醒:" + shName + "仓库监控设备于" + ft.format(new Date()) + "发生异常,请及时处理。";
}else if(type.equals("030405")){
content = "仓库异常提醒:" + shName + "仓库货物于" + ft.format(new Date()) + "发生图片比对异常,请及时处理。";
}
// String res = "1";
String res = com.yxt.supervise.report.biz.util.MsgWs.SendWaitWorkMsg(mobile, content);
if (res.equals("1")) {
System.out.println("发送消息");
redisUtil.set(""+mobile,""+date.getTime(), APP_LOGIN_CODE_TIME_LIMIT);
}
}
// String res = "1";
return ResultBean.fireSuccess().setMsg("发送短信验证码成功");
}
public String getAccessToken(String appId,String appsecret) throws Exception {
String url = WX_URL_ACCESS_TOKEN.replace("APPID", appId).replace("APPSECRET", appsecret);
RestTemplate restTemplate=new RestTemplate();
String re= restTemplate.getForObject(url,String.class);
JSONObject jsonObject= JSONObject.parseObject(re);
System.out.println(jsonObject);
String at=jsonObject.getString("access_token");
return at;
} }
/** /**
@ -569,108 +161,11 @@ public class WechatRest {
*/ */
@PostMapping("/sendMessages") @PostMapping("/sendMessages")
public void sendMessages(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate) throws Exception { public void sendMessages(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate) throws Exception {
ReportStockDay reportStockDay=stockDayRest.getDayGather(projectSid,orderDate).getData(); wechatService.sendMessages(projectSid,orderDate);
List <String> user= crmMapper.suerList(projectSid);
List<String> openIds=new ArrayList<>();
for(String u:user){
String id=systemMapper.getOpenIdByStatus(u);
openIds.add(id);
}
CsmCashReportVo csmCashReportVo=csmCashReportMapper.getCsmCashReport(orderDate);
// 模板参数
Map<String, Template> sendMag = new HashMap<String, Template>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "jvfjnNpuT_4rfhiV1aWW31qK31-CnICoIAp5Bgco8hw";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
JSONObject jsonObject=new JSONObject();
String pa="";
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
sendMag.put("time1", new Template(reportStockDay.getReportTime()));
sendMag.put("thing2", new Template("质物库存汇总("+reportStockDay.getProjectName()+")"));
sendMag.put("thing3", new Template("赵丽晓"));
Map<String, String> miniprogram = new HashMap<>();
miniprogram.put("appid","wx05604ce2a8bede05");
miniprogram.put("pagepath","pages/index/InventorySummary?orderDate="+reportStockDay.getOrderDate()+"&"+"projectSid="+reportStockDay.getProjectSid());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("page", ""); // 点击模板信息跳转地址
//sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = JSONObject.parseObject(forEntity.getBody());
System.out.println(sendBody);
}
System.out.println(sendMag);
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//return forEntity.getBody();
}
public String getAccessTokenBiz(String appId,String appsecret) throws Exception {
String url = WX_URL_ACCESS_TOKEN.replace("APPID", appId).replace("APPSECRET", appsecret);
RestTemplate restTemplate=new RestTemplate();
String re= restTemplate.getForObject(url,String.class);
JSONObject jsonObject= JSONObject.parseObject(re);
String at=jsonObject.getString("access_token");
return at;
} }
@PostMapping("/subscribe") @PostMapping("/subscribe")
public ResultBean subscribe() throws AesException, IOException, SAXException, ParserConfigurationException { public ResultBean subscribe() throws AesException, IOException, SAXException, ParserConfigurationException {
ResultBean rb =new ResultBean(); return wechatService.subscribe();
//
// 第三方回复公众平台
//
// 需要加密的明文
String encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
String token = "pamtest";
String timestamp = "1409304348";
String nonce = "xxxxxx";
String appId = "wxb11529c136998cb6";
String replyMsg = " 中文<xml><ToUserName><![CDATA[oia2TjjewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName><CreateTime>1407743423</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[eYJ1MbwPRJtOvIEabaxHs7TX2D-HV71s79GUxqdUkjm6Gs2Ed1KF3ulAOA9H1xG0]]></MediaId><Title><![CDATA[testCallBackReplyVideo]]></Title><Description><![CDATA[testCallBackReplyVideo]]></Description></Video></xml>";
WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
String mingwen = pc.encryptMsg(replyMsg, timestamp, nonce);
System.out.println("加密后: " + mingwen);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader(mingwen);
InputSource is = new InputSource(sr);
Document document = db.parse(is);
Element root = document.getDocumentElement();
NodeList nodelist1 = root.getElementsByTagName("Encrypt");
NodeList nodelist2 = root.getElementsByTagName("MsgSignature");
String encrypt = nodelist1.item(0).getTextContent();
String msgSignature = nodelist2.item(0).getTextContent();
String format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%1$s]]></Encrypt></xml>";
String fromXML = String.format(format, encrypt);
//
// 公众平台发送消息给第三方,第三方处理
//
// 第三方收到公众号平台发送的消息
String result2 = pc.decryptMsg(msgSignature, timestamp, nonce, fromXML);
System.out.println("解密后明文: " + result2);
//pc.verifyUrl(null, null, null, null);
return rb.success().setData("成功");
} }
} }

612
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/biz/wechat/WechatService.java

@ -1,10 +1,58 @@
package com.yxt.supervise.report.biz.wechat; package com.yxt.supervise.report.biz.wechat;
import cn.hutool.core.thread.ThreadUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.yxt.common.base.config.RedisUtil;
import com.yxt.common.core.result.ResultBean;
import com.yxt.supervise.report.aes.AesException;
import com.yxt.supervise.report.aes.WXBizMsgCrypt;
import com.yxt.supervise.report.api.csmcashreport.CsmCashReportVo;
import com.yxt.supervise.report.api.messageopenid.MessageOpenidDto;
import com.yxt.supervise.report.api.messagepushlog.MessagePushLogDto;
import com.yxt.supervise.report.api.reportinventorydaygather.ReportInventoryDayGatherVo;
import com.yxt.supervise.report.api.wechat.Template;
import com.yxt.supervise.report.biz.csmcashreport.CsmCashReportMapper;
import com.yxt.supervise.report.biz.imgmessageslog.ImgMessagesLogMapper;
import com.yxt.supervise.report.biz.messagepushlog.MessagePushLogService;
import com.yxt.supervise.report.biz.projectdaily.ProjectDaily;
import com.yxt.supervise.report.biz.projectdaily.ProjectDailyService;
import com.yxt.supervise.report.biz.reportinventory.ReportInventoryDayGatherMapper;
import com.yxt.supervise.report.biz.riskmessageslog.RiskMessagesLogMapper;
import com.yxt.supervise.report.biz.stock.ReportStockDay;
import com.yxt.supervise.report.biz.stock.StockDayRest;
import com.yxt.supervise.report.biz.util.WeixinCheckoutUtil;
import com.yxt.supervise.report.ds.crm.CrmMapper;
import com.yxt.supervise.report.ds.crm.ProjectInfo;
import com.yxt.supervise.report.ds.crm.UserProject;
import com.yxt.supervise.report.ds.rms.RiskAlarm;
import com.yxt.supervise.report.ds.rms.RmsMapper;
import com.yxt.supervise.report.ds.system.SysUser;
import com.yxt.supervise.report.ds.warehouse.WarehouseMapper;
import com.yxt.supervise.report.wx.SuperviseWxMessSender;
import com.yxt.supervise.report.wx.obj.RespMessReturn;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.sf.json.JSONObject; import net.sf.json.JSONObject;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.client.RestTemplate;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.StringReader;
import java.text.SimpleDateFormat;
import java.util.*;
/** /**
* @author wangpengfei * @author wangpengfei
@ -13,8 +61,570 @@ import org.springframework.stereotype.Service;
@Service @Service
@Slf4j @Slf4j
public class WechatService { public class WechatService {
static final long APP_LOGIN_CODE_TIME_LIMIT = 300L;
private static final String WX_URL_ACCESS_TOKEN = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";
private static final String WX_URL_MESSAGE_SEND = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
private static final String WX_URL_MESSAGE_BIZ_SEND ="https://api.weixin.qq.com/cgi-bin/message/subscribe/bizsend?access_token=ACCESS_TOKEN";
private static final String APP_ID="wx1d44e0fcd110351a";
private static final String APP_ID_BIZ="wxc64c6cf0a06880e5";
private static final String APPSECRET="4764e32722a7d98656dea6afd9405701";
private static final String APPSECRETBIZ="eb3a0794da05f12a94c92134030246f1";
@Autowired
WechatService wechatService;
@Autowired
private CsmCashReportMapper csmCashReportMapper;
@Autowired
private ReportInventoryDayGatherMapper reportInventoryDayGatherMapper;
@Autowired
MessagePushLogService messagePushLogService;
@Autowired
StockDayRest stockDayRest;
@Autowired
com.yxt.supervise.report.ds.system.systemMapper systemMapper;
@Autowired
CrmMapper crmMapper;
@Autowired
ProjectDailyService projectDailyService;
@Autowired
RedisUtil redisUtil;
@Autowired
WarehouseMapper warehouseMapper;
@Autowired @Autowired
private WechatApiService wechatApiService; RmsMapper rmsMapper;
@Autowired
ImgMessagesLogMapper imgMessagesLogMapper;
@Autowired
RiskMessagesLogMapper riskMessagesLogMapper;
public String wechate(String signature,String timestamp,String nonce,String echostr){
String token="";
if (signature != null && WeixinCheckoutUtil.checkSignature(signature, timestamp, nonce)) {
token=wechatService.push();
}
return token;
}
public String authGet(@RequestParam(name = "signature", required = false) String signature,
@RequestParam(name = "timestamp", required = false) String timestamp,
@RequestParam(name = "nonce", required = false) String nonce,
@RequestParam(name = "echostr", required = false) String echostr){
if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
throw new IllegalArgumentException("请求参数非法,请核实!");
}
if (WeixinCheckoutUtil.checkSignature( signature, timestamp, nonce)) {
return echostr;
}
return "非法请求";
}
public void collectionSendMessage(@PathVariable String projectSid, @PathVariable("orderDate") String orderDate) throws Exception {
CsmCashReportVo csmCashReportVo=csmCashReportMapper.getCsmCashReport(orderDate);
List<String> user= crmMapper.suerList(projectSid);
List<String> openIds=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser){
if(com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getAppletOpenid())){
openIds.add(sysUser.getAppletOpenid());
}
}
}
ProjectDaily projectDaily=projectDailyService.fetchByProjectAndDay(projectSid,orderDate);
// 模板参数
Map<String, String> sendMag = new HashMap<String, String>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "BT6BHEojCmgWNTcpz1raHNIpJEEISP1E134btP51p_8";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
String pa="";
com.alibaba.fastjson.JSONObject jsonObject=new com.alibaba.fastjson.JSONObject();
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
// sendMag.put("time1", new Template(csmCashReportVo.getReportDate()));
// sendMag.put("thing2", new Template("36524每日回款审核报告"));
// sendMag.put("thing3", new Template("赵丽晓"));
sendMag.put("time1", csmCashReportVo.getReportDate());
sendMag.put("thing2", "36524每日回款审核报告");
sendMag.put("thing3", "赵丽晓");
Map<String, String> miniprogram = new HashMap<>();
//云眼
// miniprogram.put("appid","wx11565021714ba796");
//云仓
miniprogram.put("appid","wx05604ce2a8bede05");//wx65c2b78fd1452eeb
miniprogram.put("pagepath","pages/index/auditReport?dataDate="+csmCashReportVo.getDataDate()+"&"+"companyName="+csmCashReportVo.getCompanyName());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("url", ""); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = com.alibaba.fastjson.JSONObject.parseObject(forEntity.getBody());
}
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//推送消息之后保存消息日志
MessagePushLogDto logDto=new MessagePushLogDto();
logDto.setContent(sendMag);
logDto.setMessageTime(csmCashReportVo.getDataDate());
logDto.setPagepath(pa);
// logDto.setMessageOpenids(list);
ThreadUtil.execute(() -> {
try {
messagePushLogService.save(logDto);
} catch (Exception e) {
throw new RuntimeException(e);
}
});
//return forEntity.getBody();
}
public void inventorySendMessage(@PathVariable("orderDate") String orderDate) throws Exception {
List<String>user= crmMapper.suerList("983eefd8-6109-4e8e-bc1b-71e16e644170");
List<String> openIds=new ArrayList<>();
for(String u:user){
openIds.add(systemMapper.getOpenId(u));
}
ReportInventoryDayGatherVo csmCashReportVo=reportInventoryDayGatherMapper.getReportInventoryDayGather(orderDate);
// 模板参数
Map<String, Template> sendMag = new HashMap<String, Template>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "BT6BHEojCmgWNTcpz1raHNIpJEEISP1E134btP51p_8";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
System.out.println("accessToken"+accessToken);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
// List<String> openIds=new ArrayList<>();
// openIds.add("oGdho60xVtWEXUks7nYEAn0tGlDE");
// openIds.add("oGdho66394A-4-NyumcJ1MEaT8Lo");
// openIds.add("oGdho68CArVhC_-7ELkG-jX21ruk");
// openIds.add("oGdho6yYB47f52HVk2NqirrFbRRk");
// openIds.add("oGdho6-12-ioAKeLhVUDYPucbDb4");
// openIds.add("oGdho668Hew45t0xfBJC84TNGVzI");
// openIds.add("oGdho624Cr3j_iZBj-0_HayKLNc4");
// openIds.add("oGdho6-LvwNY6KylgMlEG0C_JMmQ");
String pa="";
com.alibaba.fastjson.JSONObject jsonObject=new com.alibaba.fastjson.JSONObject();
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
sendMag.put("time1", new Template(csmCashReportVo.getOrderDate()));
sendMag.put("thing2", new Template("36524质物库存汇总"));
sendMag.put("thing3", new Template("赵丽晓"));
Map<String, String> miniprogram = new HashMap<>();
//云眼
// miniprogram.put("appid","wx11565021714ba796");
//云仓
miniprogram.put("appid","wx05604ce2a8bede05");//wx65c2b78fd1452eeb
miniprogram.put("pagepath","pages/index/demoReportKc?orderDate="+csmCashReportVo.getOrderDate());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("url", ""); // 点击模板信息跳转地址
sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = com.alibaba.fastjson.JSONObject.parseObject(forEntity.getBody());
}
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//推送消息之后保存消息日志
// MessagePushLogDto logDto=new MessagePushLogDto();
// logDto.setContent(sendMag);
// logDto.setMessageTime(csmCashReportVo.getReportTime());
// logDto.setPagepath(pa);
// logDto.setMessageOpenidDtos(list);
// ThreadUtil.execute(() -> {
// try {
// messagePushLogService.save(logDto);
// } catch (Exception e) {
// throw new RuntimeException(e);
// }
// });
//return forEntity.getBody();
}
public void sendMessage(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate){
RespMessReturn r=new RespMessReturn();
// List<String> user= crmMapper.suerList(projectSid);
List<String> user= getUser(projectSid,"1");
List<String> openIds=new ArrayList<>();
for(String u:user){
String sysUser=systemMapper.getOpenId(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser)) {
openIds.add(sysUser);
}
}
}
ProjectDaily projectDaily=projectDailyService.fetchByProjectAndDay(projectSid,orderDate);
// ProjectInfo projectInfo =crmMapper.getProjectNameBySid(projectSid);
ProjectInfo projectInfo=crmMapper.selectOne(new QueryWrapper<ProjectInfo>().eq("sid",projectSid));
// 公众号的模板id(也有相应的接口可以查询到)
r= SuperviseWxMessSender.jgsjzlSend(projectInfo.getRegulatoryLeader(),openIds,projectSid,projectDaily.getProjectName(),projectDaily.getReportTime());
System.out.println(r);
}
public void shMessage(@RequestParam("shSid") String shSid, @RequestParam("riskSid") String riskSid){
//String messSid=riskMessagesLogMapper.getRiskByCode();
RespMessReturn r=new RespMessReturn();
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"2");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String shName=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
RiskAlarm riskAlarm=rmsMapper.getRiskByMessSid(riskSid);
String name =cl(riskAlarm.getContent());
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030404");
System.out.println("推送中");
r= SuperviseWxMessSender.jkSend(openIds,projectSid,riskSid,name,shName,riskSid,ft.format(new Date()));
System.out.println(r);
}
public void secureMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=riskMessagesLogMapper.getRiskByCode();
RespMessReturn r=new RespMessReturn();
// List<UserProject> user= crmMapper.users(shSid);
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"3");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String shName=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
RiskAlarm riskAlarm=rmsMapper.getRiskByMessSid(riskSid);
String name =cl(riskAlarm.getContent());
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030404");
System.out.println("推送中");
r= SuperviseWxMessSender.secureSend(openIds,projectSid,riskSid,name,shName,riskSid,ft.format(new Date()));
System.out.println(r);
}
public void shImgMessage(@RequestParam("shSid") String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=imgMessagesLogMapper.getImgRiskByCode();
RespMessReturn r=new RespMessReturn();
String projectSid=crmMapper.ProjectSidByshSid(shSid);
List<String> user= getUser(projectSid,"4");
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
for(String u:user){
SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u);
if(null!=sysUser) {
if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getOpenId())) {
openIds.add(sysUser.getOpenId());
mobiles.add(sysUser.getMobile());
}
}
}
String name=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030405");
r= SuperviseWxMessSender.jkImgSend("赵丽晓",openIds,projectSid,riskSid,name,riskSid,ft.format(new Date()));
System.out.println(r);
}
public void sysErrMessage(@RequestParam("shSid")String shSid,@RequestParam("riskSid") String riskSid){
//String messSid=imgMessagesLogMapper.getImgRiskByCode();
RespMessReturn r=new RespMessReturn();
// List<UserProject> user= getUser(shSid);
List<String> openIds=new ArrayList<>();
List<String> mobiles=new ArrayList<>();
openIds.add("oGdho60xVtWEXUks7nYEAn0tGlDE");
mobiles.add("15932270269");
openIds.add("oGdho66394A-4-NyumcJ1MEaT8Lo");
mobiles.add("18603312020");
openIds.add("oGdho615_xBMYYwftEjjBlC6p2uE");
mobiles.add("13513219196");
openIds.add("oGdho6yYB47f52HVk2NqirrFbRRk");
mobiles.add("13513211777");
openIds.add("oGdho668Hew45t0xfBJC84TNGVzI");
mobiles.add("13623307393");
openIds.add("oGdho68CArVhC_-7ELkG-jX21ruk");
mobiles.add("13131170271");
openIds.add("oGdho69VxJil_NRxv9StYVpQg58U");
mobiles.add("13333113292");
openIds.add("oGdho66Wy-Or1UeqoNHU1YL5yAEM");
mobiles.add("19933133338");
// for(UserProject u:user){
// SysUser sysUser=systemMapper.getAppletOpenidByUsersid(u.getUserSid());
// if(null!=sysUser) {
// if (com.yxt.common.base.utils.StringUtils.isNotNull(sysUser.getAppletOpenid())) {
// openIds.add(sysUser.getAppletOpenid());
// mobiles.add(sysUser.getMobile());
// }
// }
// }
String projectSid=crmMapper.ProjectSidByshSid(shSid);
String name=warehouseMapper.getNameBySid(shSid);
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 公众号的模板id(也有相应的接口可以查询到)
//sendVerificationCode(name,mobiles,"030405");
r= SuperviseWxMessSender.sysErrSend(openIds,riskSid,name,shSid,riskSid,ft.format(new Date()));
System.out.println(r);
}
public void sendMessages(@PathVariable("projectSid") String projectSid,@PathVariable("orderDate") String orderDate) throws Exception {
ReportStockDay reportStockDay=stockDayRest.getDayGather(projectSid,orderDate).getData();
List <String> user= crmMapper.suerList(projectSid);
List<String> openIds=new ArrayList<>();
for(String u:user){
String id=systemMapper.getOpenIdByStatus(u);
openIds.add(id);
}
CsmCashReportVo csmCashReportVo=csmCashReportMapper.getCsmCashReport(orderDate);
// 模板参数
Map<String, Template> sendMag = new HashMap<String, Template>();
// 公众号的模板id(也有相应的接口可以查询到)
String templateId = "jvfjnNpuT_4rfhiV1aWW31qK31-CnICoIAp5Bgco8hw";
//微信的基础accessToken
String accessToken=getAccessToken(APP_ID_BIZ,APPSECRETBIZ);
String wxUrl = WX_URL_MESSAGE_SEND.replace("ACCESS_TOKEN", accessToken);
com.alibaba.fastjson.JSONObject jsonObject=new com.alibaba.fastjson.JSONObject();
String pa="";
List<MessageOpenidDto> list=new ArrayList<>();
for(String openId:openIds){
MessageOpenidDto dto=new MessageOpenidDto();
dto.setOpenId(openId);
list.add(dto);
sendMag.put("time1", new Template(reportStockDay.getReportTime()));
sendMag.put("thing2", new Template("质物库存汇总("+reportStockDay.getProjectName()+")"));
sendMag.put("thing3", new Template("赵丽晓"));
Map<String, String> miniprogram = new HashMap<>();
miniprogram.put("appid","wx05604ce2a8bede05");
miniprogram.put("pagepath","pages/index/InventorySummary?orderDate="+reportStockDay.getOrderDate()+"&"+"projectSid="+reportStockDay.getProjectSid());
pa=miniprogram.get("pagepath");
RestTemplate restTemplate = new RestTemplate();
//拼接base参数
Map<String, Object> sendBody = new HashMap<>();
sendBody.put("miniprogram",miniprogram);
sendBody.put("touser", openId); // openId
sendBody.put("page", ""); // 点击模板信息跳转地址
//sendBody.put("topcolor", "#FF0000"); // 顶色
sendBody.put("data", sendMag); // 模板参数
sendBody.put("template_id", templateId);// 模板Id
ResponseEntity<String> forEntity = restTemplate.postForEntity(wxUrl, sendBody, String.class);
jsonObject = com.alibaba.fastjson.JSONObject.parseObject(forEntity.getBody());
System.out.println(sendBody);
}
System.out.println(sendMag);
// 0
String messageCode = jsonObject.getString("errcode");
// 2431260672639467520
String msgId = jsonObject.getString("msgid");
System.out.println("messageCode : " + messageCode + ", msgId: " +msgId);
//return forEntity.getBody();
}
public ResultBean sendVerificationCode(String shName, List<String> users, String type) {
ResultBean rb = new ResultBean().fireFail();
Date date = new Date();
for (String mobile : users) {
String codeRedis = redisUtil.get(""+mobile);
if (com.yxt.common.base.utils.StringUtils.isNotEmpty(codeRedis)) {
//查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信
String sendTime = codeRedis.substring(4);
long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000;
if (diffSecond < 60) {
return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!");
}
}
String content="";
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if(type.equals("030404")){
content= "仓库异常提醒:" + shName + "仓库监控设备于" + ft.format(new Date()) + "发生异常,请及时处理。";
}else if(type.equals("030405")){
content = "仓库异常提醒:" + shName + "仓库货物于" + ft.format(new Date()) + "发生图片比对异常,请及时处理。";
}
// String res = "1";
String res = com.yxt.supervise.report.biz.util.MsgWs.SendWaitWorkMsg(mobile, content);
if (res.equals("1")) {
System.out.println("发送消息");
redisUtil.set(""+mobile,""+date.getTime(), APP_LOGIN_CODE_TIME_LIMIT);
}
}
// String res = "1";
return ResultBean.fireSuccess().setMsg("发送短信验证码成功");
}
public ResultBean wwww(String shName, List<String> users,String type) {
String e="http://IP+Port/utf8/SingleCallByTts.aspx?CorpID=*&Pwd=*&Mobile=*&Content=*&TtsCode=*& ShowNumber=";
ResultBean rb = new ResultBean().fireFail();
Date date = new Date();
for (String mobile : users) {
String codeRedis = redisUtil.get(""+mobile);
if (com.yxt.common.base.utils.StringUtils.isNotEmpty(codeRedis)) {
//查看请求间隔,默认是一分钟,小于一分钟继续等待,超过一分钟发送短信
String sendTime = codeRedis.substring(4);
long diffSecond = (date.getTime() - Long.parseLong(sendTime)) / 1000;
if (diffSecond < 60) {
return ResultBean.fireFail().setMsg("请等待一分钟后再次重试!");
}
}
String content="";
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
if(type.equals("030404")){
content= "仓库异常提醒:" + shName + "仓库监控设备于" + ft.format(new Date()) + "发生异常,请及时处理。";
}else if(type.equals("030405")){
content = "仓库异常提醒:" + shName + "仓库货物于" + ft.format(new Date()) + "发生图片比对异常,请及时处理。";
}
// String res = "1";
String res = com.yxt.supervise.report.biz.util.MsgWs.SendWaitWorkMsg(mobile, content);
if (res.equals("1")) {
System.out.println("发送消息");
redisUtil.set(""+mobile,""+date.getTime(), APP_LOGIN_CODE_TIME_LIMIT);
}
}
// String res = "1";
return ResultBean.fireSuccess().setMsg("发送短信验证码成功");
}
public List<String> getUser(String projectSid,String templateSid){
List<UserProject>list=crmMapper.getAllByProjectSid(projectSid);
List<String> users=new ArrayList<>();
for (UserProject userProject:list){
int count=crmMapper.countByUserProjectSid(userProject.getSid(),templateSid);
if(count>0){
users.add(userProject.getUserSid());
}
}
return users;
}
public String cl (String w){
String a="";
//String w="[Device(name=东北角的摄像头, serialNumber=L28475439, status=断网), Device(name=111, serialNumber=L28475439, status=断网), Device(name=22, serialNumber=L28475439, status=断网), Device(name=33, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网),Device(name=东北角的摄像头, serialNumber=L28475439, status=断网)]";
String st=w.substring(1, (w.length() - 1));
String [] str2 = st.split("Device");
// List<Device> list=new ArrayList<>();
for (int i = 0; i < str2.length; i++) {
String item = str2[i];
if(com.yxt.common.base.utils.StringUtils.isNotEmpty(item)){
// Device device=new Device();
String [] str3 = item.split(", ");
// device.setName(str3[0].substring(6));
// device.setSerialNumber(str3[1].substring(13));
// device.setStatus(str3[2].substring(7,str3[2].length()-1));
String name=str3[0].substring(6);
if(StringUtils.isEmpty(a)){
a=a+name;
}else {
a=a+","+name;
}
// list.add(device);
}
}
if(a.length()>=20){
a=a.substring(0,19)+"…";
}
System.out.println(a.length());
System.out.println(a);
return a;
}
public String getAccessToken(String appId,String appsecret) throws Exception {
String url = WX_URL_ACCESS_TOKEN.replace("APPID", appId).replace("APPSECRET", appsecret);
RestTemplate restTemplate=new RestTemplate();
String re= restTemplate.getForObject(url,String.class);
com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re);
System.out.println(jsonObject);
String at=jsonObject.getString("access_token");
return at;
}
public String getAccessTokenBiz(String appId,String appsecret) throws Exception {
String url = WX_URL_ACCESS_TOKEN.replace("APPID", appId).replace("APPSECRET", appsecret);
RestTemplate restTemplate=new RestTemplate();
String re= restTemplate.getForObject(url,String.class);
com.alibaba.fastjson.JSONObject jsonObject= com.alibaba.fastjson.JSONObject.parseObject(re);
String at=jsonObject.getString("access_token");
return at;
}
public ResultBean subscribe() throws AesException, ParserConfigurationException, IOException, SAXException {
ResultBean rb=new ResultBean();
//
// 第三方回复公众平台
//
// 需要加密的明文
String encodingAesKey = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFG";
String token = "pamtest";
String timestamp = "1409304348";
String nonce = "xxxxxx";
String appId = "wxb11529c136998cb6";
String replyMsg = " 中文<xml><ToUserName><![CDATA[oia2TjjewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName><CreateTime>1407743423</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[eYJ1MbwPRJtOvIEabaxHs7TX2D-HV71s79GUxqdUkjm6Gs2Ed1KF3ulAOA9H1xG0]]></MediaId><Title><![CDATA[testCallBackReplyVideo]]></Title><Description><![CDATA[testCallBackReplyVideo]]></Description></Video></xml>";
WXBizMsgCrypt pc = new WXBizMsgCrypt(token, encodingAesKey, appId);
String mingwen = pc.encryptMsg(replyMsg, timestamp, nonce);
System.out.println("加密后: " + mingwen);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
StringReader sr = new StringReader(mingwen);
InputSource is = new InputSource(sr);
Document document = db.parse(is);
Element root = document.getDocumentElement();
NodeList nodelist1 = root.getElementsByTagName("Encrypt");
NodeList nodelist2 = root.getElementsByTagName("MsgSignature");
String encrypt = nodelist1.item(0).getTextContent();
String msgSignature = nodelist2.item(0).getTextContent();
String format = "<xml><ToUserName><![CDATA[toUser]]></ToUserName><Encrypt><![CDATA[%1$s]]></Encrypt></xml>";
String fromXML = String.format(format, encrypt);
//
// 公众平台发送消息给第三方,第三方处理
//
// 第三方收到公众号平台发送的消息
String result2 = pc.decryptMsg(msgSignature, timestamp, nonce, fromXML);
System.out.println("解密后明文: " + result2);
//pc.verifyUrl(null, null, null, null);
return rb.success().setData("成功");
}
public String push() { public String push() {
boolean flag = true; boolean flag = true;
// SysAppletSet appletSet = memberService.getSysAppletSet(0); // SysAppletSet appletSet = memberService.getSysAppletSet(0);

6
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/ds/crm/CrmMapper.java

@ -29,10 +29,14 @@ public interface CrmMapper extends BaseMapper<ProjectInfo> {
@Select("select * from storehouse_project where projectSid = #{projectSid} ") @Select("select * from storehouse_project where projectSid = #{projectSid} ")
List<StoreHouse> listStoreHouseByProjectSid(@Param("projectSid") String projectSid); List<StoreHouse> listStoreHouseByProjectSid(@Param("projectSid") String projectSid);
@Select("select * from project_information where sid = #{sid}") @Select("select * from project_information where sid = #{sid}")
ProjectInfo getProjectNameBySid(@Param("sid") String sid); ProjectInfo getProjectBySid(@Param("sid") String sid);
@Select("select * from user_project where projectSid = #{sid}") @Select("select * from user_project where projectSid = #{sid}")
List<UserProject> getAllByProjectSid(@Param("sid") String sid); List<UserProject> getAllByProjectSid(@Param("sid") String sid);
@Select("select count(*) from project_template where userProjectSid = #{userProjectSid} and templateSid=#{templateSid}") @Select("select count(*) from project_template where userProjectSid = #{userProjectSid} and templateSid=#{templateSid}")
int countByUserProjectSid(@Param("userProjectSid") String userProjectSid,@Param("templateSid") String templateSid); int countByUserProjectSid(@Param("userProjectSid") String userProjectSid,@Param("templateSid") String templateSid);
@Select("select * from user_project where userSid=#{userSid}")
List<UserProject> getProjectByUserSid(@Param("userSid") String userSid);
} }

4
yxt_supervise/supervise-report/supervise-report-biz/src/main/java/com/yxt/supervise/report/ds/crm/ProjectInfo.java

@ -9,4 +9,8 @@ public class ProjectInfo {
private String sid; private String sid;
private String entryName; private String entryName;
private String regulatoryLeader; private String regulatoryLeader;
private double creditLimit=0;
private double useLimit=0;
private double bankPledgeRate=0;
private double bankPledgeRateNew=0;
} }

2
yxt_supervise/supervise-system/supervise-system-api/src/main/java/com/yxt/supervise/system/sysorganization/SysOrganizationVo.java

@ -85,6 +85,8 @@ public class SysOrganizationVo implements Vo {
@ApiModelProperty("管理层级value") @ApiModelProperty("管理层级value")
private String orgLevelValue; private String orgLevelValue;
@ApiModelProperty("其他编码") @ApiModelProperty("其他编码")
//是否是部门级别 1是 2不是
private String isOrg="2";
private String otherCode; private String otherCode;
private String mobile; private String mobile;
private String isOpenId; private String isOpenId;

1
yxt_supervise/supervise-system/supervise-system-biz/src/main/java/com/yxt/supervise/system/sysorganization/SysOrganizationService.java

@ -284,6 +284,7 @@ public class SysOrganizationService extends MybatisBaseService<SysOrganizationMa
String sid = str.getSid(); String sid = str.getSid();
List<SysOrganizationVo> listChildren = baseMapper.selectChildernList(sid); List<SysOrganizationVo> listChildren = baseMapper.selectChildernList(sid);
str.setChildren(listChildren); str.setChildren(listChildren);
str.setIsOrg("1");
getChildList(listChildren); getChildList(listChildren);
}); });
} }

Loading…
Cancel
Save