package com.hssx.cloudmodel.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hssx.cloudmodel.constant.Constant; import com.hssx.cloudmodel.entity.*; import com.hssx.cloudmodel.entity.vo.MouldEquipmentVO; import com.hssx.cloudmodel.entity.vo.MouldVO; import com.hssx.cloudmodel.entity.vo.ProjectVO; import com.hssx.cloudmodel.mapper.*; import com.hssx.cloudmodel.service.MouldService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hssx.cloudmodel.util.HttpKit; import com.hssx.cloudmodel.util.HttpRespMsg; import com.hssx.cloudmodel.util.WechatTemplateMessage; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringEscapeUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.io.IOException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.NoSuchProviderException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; /** *

* 服务实现类 *

* * @author 吴涛涛 * @since 2019-07-30 */ @Service @Slf4j public class MouldServiceImpl extends ServiceImpl implements MouldService { @Resource MouldMapper mouldMapper; @Resource UserMapper userMapper; @Resource PowerMapper powerMapper; @Resource ProjectMapper projectMapper; @Resource ProjectApproveMapper projectApproveMapper; @Resource CustomCompanyMapper customCompanyMapper; @Resource CompanyMapper companyMapper; @Override public HttpRespMsg addAndUpdateMould(Mould mould, User user) { HttpRespMsg msg = new HttpRespMsg(); if (mould.getId() != null) { //修改 Mould m = mouldMapper.selectOne(new QueryWrapper().eq("model_no", mould.getModelNo())); if ((m != null && m.getId() == mould.getId()) || m == null) { Company company = companyMapper.selectById(mould.getProduceCompanyId()); mould.setArea(company.getCompanyAddress()); mouldMapper.updateById(mould); } else { msg.setError("当前模具编号已存在,请重新输入其他模具编号"); } } else { //查询当前模具编号的模具是否存在 Integer count = mouldMapper.selectCount(new QueryWrapper().eq("model_no", mould.getModelNo())); if (count > 0) { msg.setError("当前模具编号已存在,请重新输入其他模具编号"); } else { mould.setCreatorId(user.getId()); mould.setCompanyId(user.getCompanyId()); mouldMapper.insert(mould); } } return msg; } @Override public HttpRespMsg getMoildDetail(MouldVO mouldVO) { HttpRespMsg msg = new HttpRespMsg(); Map map = new HashMap<>(); MouldVO mould = mouldMapper.getDetailById(mouldVO); map.put("vo",mould); ProjectVO vo = projectMapper.getProjectById(mould.getProjectId()); User currentUser = userMapper.selectOne(new QueryWrapper().eq("head_imgurl", mouldVO.getToken())); if (null == mould.getProjectId()) { map.put("update", 0); map.put("download", 0); map.put("view", 0); map.put("approve", 0); } else { List list = customCompanyMapper.selectList(new QueryWrapper().eq("project_id",mould.getProjectId())); map.put("customCompany",list); if (Constant.SYS_PARENT_ID == currentUser.getParentId()) { //当前人超级管理员 ,对项目只可以浏览 map.put("update", 0); map.put("download", 0); map.put("view", 1); map.put("approve", 0); } else if (Constant.SYS_ID == currentUser.getParentId()) { //当前为系统管理员 map.put("update", 1); map.put("download", 1); map.put("view", 1); map.put("approve", 0); } else if (vo.getManagerId() == currentUser.getId()) { //当前人是该项目的项目经理 Integer approve = 0; if (projectApproveMapper.selectCount(new QueryWrapper().eq("approver_id", currentUser.getId())) > 0) { //查看当前项目经理是否为审批人 approve = 1; } map.put("update", 1); map.put("download", 1); map.put("view", 1); map.put("approve", approve); } else { //该项目的参与人 Integer update = 0; Integer download = 0; Integer view = 0; Integer approve = 0; List powers = powerMapper.selectList(new QueryWrapper().eq("project_id", mould.getProjectId()).eq("user_id", currentUser.getId())); if (powers.size() > 0) { for (Power power : powers) { if (power.getPowerType() == 0) { update = 1; } else if (power.getPowerType() == 1) { download = 1; } else if (power.getPowerType() == 2) { view = 1; } else { approve = 1; } } } map.put("update", update); map.put("download", download); map.put("view", view); map.put("approve", approve); } } msg.data = map; return msg; } @Override public HttpRespMsg maintenanceReminder() throws Exception { HttpRespMsg msg = new HttpRespMsg(); //查询所有被分配到项目的模具 List moulds = mouldMapper.selectList(new QueryWrapper().isNotNull("project_id")); for (Mould mould : moulds) { if(mould.getInitialModulus()().eq("parent_id", Constant.SYS_ID).eq("company_id", mould.getCompanyId())); MouldEquipmentVO mouldEquipmentVO = new MouldEquipmentVO(); mouldEquipmentVO.setPlanType(Constant.PLAN_TYPE); mouldEquipmentVO.setArea(mould.getArea()); mouldEquipmentVO.setName(mould.getModelName()); msg = sendMaintainTemplateMessage(Constant.MAINTAIN_NOTICE_TEMPLATE_ID,user.getOpenid(),Constant.WECHAT_APPID,Constant.WECHAT_SECRET,mouldEquipmentVO); //添加通知消息 Project project = projectMapper.selectById(mould.getProjectId()); //查询到参与该项目的人 } } return null; } //告警模板推送通用接口 /** * templateId 模板id,touserOpenId 被推送者的openId,appId微信公众号的appId * firstData 推送标题 */ public HttpRespMsg sendEmergencyTemplateMessage(String templateId, String touserOpenId, String appId, String secret, MouldEquipmentVO mouldEquipmentVO) throws Exception { HttpRespMsg msg = new HttpRespMsg(); String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret; String resp; String resp1; resp1 = HttpKit.get(url, true); resp1 = StringEscapeUtils.unescapeJava(resp1); JSONObject json = (JSONObject) JSON.parse(resp1); // 获取值赋值给全局变量 if (!json.containsKey("errcode")) { String newAccessToken = json.getString("access_token"); String url1 = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + newAccessToken; WechatTemplateMessage wechat = new WechatTemplateMessage(); wechat.setTemplate_id(templateId); wechat.setTouser(touserOpenId); wechat.setAppid(appId); Map> data = new HashMap<>(); Map first = new HashMap<>(); Map value1 = new HashMap<>(); Map value2 = new HashMap<>(); Map value3 = new HashMap<>(); Map value4 = new HashMap<>(); Map remark = new HashMap<>(); // 推送信息主体 first.put("value", "告警通知");//firstData推送标题 data.put("first", first); value1.put("value", mouldEquipmentVO.getEquipmentName()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); data.put("keyword1", value1); value2.put("value", mouldEquipmentVO.getEmergencyType()); data.put("keyword2", value2); value3.put("value", sdf.format(new Date())); data.put("keyword3", value3); value4.put("value", mouldEquipmentVO.getEmergencyContent()); data.put("keyword4", value4); remark.put("value", "请尽快检查该设备"); data.put("remark", remark); wechat.setData(data); String jsonString = JSONObject.toJSONString(wechat); // System.out.println("jsonString"+jsonString); resp = HttpKit.post(url1, jsonString); // System.out.println("resp0"+resp); resp = StringEscapeUtils.unescapeJava(resp); // System.out.println("resp"+resp); json = (JSONObject) JSON.parse(resp); } return msg; } //保养 /** * templateId 模板id,touserOpenId 被推送者的openId,appId微信公众号的appId * firstData 推送标题 */ public HttpRespMsg sendMaintainTemplateMessage(String templateId, String touserOpenId, String appId, String secret, MouldEquipmentVO mouldEquipmentVO) throws Exception { HttpRespMsg msg = new HttpRespMsg(); String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + secret; String resp; String resp1; resp1 = HttpKit.get(url, true); resp1 = StringEscapeUtils.unescapeJava(resp1); JSONObject json = (JSONObject) JSON.parse(resp1); // 获取值赋值给全局变量 if (!json.containsKey("errcode")) { String newAccessToken = json.getString("access_token"); String url1 = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=" + newAccessToken; WechatTemplateMessage wechat = new WechatTemplateMessage(); wechat.setTemplate_id(templateId); wechat.setTouser(touserOpenId); wechat.setAppid(appId); Map> data = new HashMap<>(); Map first = new HashMap<>(); Map value1 = new HashMap<>(); Map value2 = new HashMap<>(); Map value3 = new HashMap<>(); Map value4 = new HashMap<>(); Map remark = new HashMap<>(); // 推送信息主体 first.put("value", "你好,你有新的保养通知");//firstData推送标题 data.put("first", first); value1.put("value", mouldEquipmentVO.getEquipmentName()); SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd"); data.put("keyword1", value1); value2.put("value", mouldEquipmentVO.getArea()); data.put("keyword2", value2); value3.put("value", sdf.format(new Date())); data.put("keyword3", value3); value4.put("value", mouldEquipmentVO.getPlanType()); data.put("keyword4", value4); remark.put("value", "模具初始模次不满足运行了"); data.put("remark", remark); wechat.setData(data); String jsonString = JSONObject.toJSONString(wechat); // System.out.println("jsonString"+jsonString); resp = HttpKit.post(url1, jsonString); // System.out.println("resp0"+resp); resp = StringEscapeUtils.unescapeJava(resp); // System.out.println("resp"+resp); json = (JSONObject) JSON.parse(resp); } return msg; } }