123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382 |
- 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.entity.vo.UserVO;
- 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.ListUtil;
- 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.time.LocalDateTime;
- import java.util.*;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author 吴涛涛
- * @since 2019-07-30
- */
- @Service
- @Slf4j
- public class MouldServiceImpl extends ServiceImpl<MouldMapper, Mould> implements MouldService {
- @Resource
- MouldMapper mouldMapper;
- @Resource
- UserMapper userMapper;
- @Resource
- PowerMapper powerMapper;
- @Resource
- ProjectMapper projectMapper;
- @Resource
- ProjectApproveMapper projectApproveMapper;
- @Resource
- CustomCompanyMapper customCompanyMapper;
- @Resource
- CompanyMapper companyMapper;
- @Resource
- ProjectUserMapper projectUserMapper;
- @Resource
- NewsNoticeMapper newsNoticeMapper;
- @Resource
- NewsNoticeUserMapper newsNoticeUserMapper;
- @Override
- public HttpRespMsg addAndUpdateMould(Mould mould, User user) {
- HttpRespMsg msg = new HttpRespMsg();
- if (mould.getId() != null) {
- //修改
- Mould m = mouldMapper.selectOne(new QueryWrapper<Mould>().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<Mould>().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<String, Object> map = new HashMap<>();
- MouldVO mould = mouldMapper.getDetailById(mouldVO);
- map.put("vo", mould);
- ProjectVO vo = projectMapper.getProjectById(mould.getProjectId());
- User currentUser = userMapper.selectOne(new QueryWrapper<User>().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<CustomCompany> list = customCompanyMapper.selectList(new QueryWrapper<CustomCompany>().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<ProjectApprove>().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<Power> powers = powerMapper.selectList(new QueryWrapper<Power>().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<Mould> moulds = mouldMapper.selectList(new QueryWrapper<Mould>().isNotNull("project_id"));
- for (Mould mould : moulds) {
- List<Integer> counts = ListUtil.convertIntegerIdsArrayToList(mould.getMaintainCount());
- Collections.sort(counts);
- Integer noticeCount = 0;
- if (counts.size() > 0) {
- for (Integer count : counts) {
- if (count <= mould.getRunTimes()) {
- noticeCount = count;
- }
- }
- }
- if (noticeCount != 0) {
- //需要保养
- Mould m = new Mould();
- m.setId(mould.getId());
- m.setIsMaintain(1);
- mouldMapper.updateById(m);
- // //提示保养,向模具资产方人员公众号推送消息
- // User user = userMapper.selectOne(new QueryWrapper<User>().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());
- //查询到参与该项目的人
- List<Integer> userIds = new ArrayList<>();
- userIds.add(project.getCreatorId());
- userIds.add(project.getManagerId());
- List<ProjectUser> projectUsers = projectUserMapper.selectList(new QueryWrapper<ProjectUser>().eq("project_id", project.getId()));
- for (ProjectUser projectUser : projectUsers) {
- userIds.add(projectUser.getUserId());
- }
- List<ProjectApprove> projectApproves = projectApproveMapper.selectList(new QueryWrapper<ProjectApprove>().eq("project_id", project.getId()));
- for (ProjectApprove projectApprove : projectApproves) {
- userIds.add(projectApprove.getApproverId());
- }
- List<User> users = userMapper.selectList(new QueryWrapper<User>().in("id", userIds));
- //查询到之前模具保养的消息
- NewsNotice oldNews = newsNoticeMapper.selectOne(new QueryWrapper<NewsNotice>().eq("ref_id", mould.getId()).eq("notice_type", 1));
- NewsNotice newsNotice = new NewsNotice();
- if(oldNews != null){
- NewsNotice newNews = new NewsNotice();
- newNews.setId(oldNews.getId());
- oldNews.setIndate(LocalDateTime.now());
- newsNoticeMapper.updateById(oldNews);
- newsNoticeUserMapper.updateNewsNoticeUserByNewsNoticeId(oldNews.getId());
- // for (User u : users) {
- // //添加通知的消息
- // NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
- // newsNoticeUser.setNewsId(oldNews.getId());
- // newsNoticeUser.setUserId(u.getId());
- // newsNoticeUser.setIsRead(0);
- // newsNoticeUserMapper.updateById(newsNoticeUser);
- // }
- }else{
- newsNotice.setNoticeType(Constant.MAINTAIN_TYPE);
- newsNotice.setProjectId(project.getId());
- newsNotice.setProjectName(project.getProjectName());
- newsNotice.setRefId(mould.getId());
- newsNotice.setContent(Constant.MAIN_TAIN_NOTICE);
- newsNoticeMapper.insert(newsNotice);
- for (User u : users) {
- //添加通知的消息
- NewsNoticeUser newsNoticeUser = new NewsNoticeUser();
- newsNoticeUser.setNewsId(newsNotice.getId());
- newsNoticeUser.setUserId(u.getId());
- newsNoticeUserMapper.insert(newsNoticeUser);
- }
- }
- }
- }
- return msg;
- }
- @Override
- public HttpRespMsg delMoule(Mould mould) {
- HttpRespMsg msg = new HttpRespMsg();
- Mould newMould = mouldMapper.selectById(mould.getId());
- if (null != mould.getProjectId()) {
- msg.setError("该模具已被应用到项目,不提供删除操作");
- } else {
- mouldMapper.deleteById(newMould.getId());
- }
- return msg;
- }
- @Override
- public HttpRespMsg isMaintain(Mould mould) {
- HttpRespMsg msg = new HttpRespMsg();
- if (mould.getId() != null) {
- mouldMapper.updateById(mould);
- } else {
- msg.setError("模具id不存在");
- }
- return msg;
- }
- @Override
- public HttpRespMsg maintainMouldList(UserVO userVO) {
- 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<String, Map<String, String>> data = new HashMap<>();
- Map<String, String> first = new HashMap<>();
- Map<String, String> value1 = new HashMap<>();
- Map<String, String> value2 = new HashMap<>();
- Map<String, String> value3 = new HashMap<>();
- Map<String, String> value4 = new HashMap<>();
- Map<String, String> 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<String, Map<String, String>> data = new HashMap<>();
- Map<String, String> first = new HashMap<>();
- Map<String, String> value1 = new HashMap<>();
- Map<String, String> value2 = new HashMap<>();
- Map<String, String> value3 = new HashMap<>();
- Map<String, String> value4 = new HashMap<>();
- Map<String, String> 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;
- }
- }
|