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;
}
}