123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- package com.szwl.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.szwl.feign.bean.SyncOldFeign;
- import com.szwl.model.bo.R;
- import com.szwl.model.entity.TAdmin;
- import com.szwl.model.entity.TEquipment;
- import com.szwl.mapper.TEquipmentMapper;
- import com.szwl.model.entity.TWechat;
- import com.szwl.model.query.StatisticsParam;
- import com.szwl.model.utils.PushUtils;
- import com.szwl.service.TAdminService;
- import com.szwl.service.TEquipmentService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.szwl.service.TWechatService;
- import com.szwl.util.WechatSendUtil;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.amqp.core.AmqpTemplate;
- import org.springframework.amqp.core.MessageProperties;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import javax.annotation.Resource;
- import java.util.Date;
- import java.util.List;
- import java.util.Optional;
- import java.util.stream.Collectors;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author wuhs
- * @since 2023-10-25
- */
- @Service
- public class TEquipmentServiceImpl extends ServiceImpl<TEquipmentMapper, TEquipment> implements TEquipmentService {
- @Autowired
- private AmqpTemplate amqpTemplate;
- @Resource
- TEquipmentMapper tEquipmentMapper;
- @Autowired
- TAdminService adminService;
- @Resource
- SyncOldFeign syncOldFeign;
- @Resource
- TEquipmentService equipmentService;
- @Resource
- TWechatService wechatService;
- @Override
- public String sentMessage(String clientId, String json) {
- LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
- query.eq(TEquipment::getClientId,clientId);
- List<TEquipment> equipmentList = tEquipmentMapper.selectList(query);
- if(equipmentList.size()==0){
- return "该设备不存在";
- }
- TEquipment equipment = equipmentList.get(0);
- if (equipment == null) {
- return "该设备不存在";
- }
- String channel = equipment.getChannel();
- String equimentType = equipment.getEquimentType();
- if(StringUtils.isEmpty(channel)||channel.equals("1")||StringUtils.isEmpty(equimentType)){
- //用个推
- PushUtils.push(equipment.getGtClientId(), "", "", json);
- }
- if(StringUtils.isNotEmpty(channel)&&channel.equals("2")&&StringUtils.isNotEmpty(equimentType)){
- //用Mq
- //1 创建消息
- MessageProperties messageProperties = new MessageProperties();
- messageProperties.setContentType("text/plain");
- org.springframework.amqp.core.Message message = new org.springframework.amqp.core.Message(json.getBytes(), messageProperties);
- amqpTemplate.send(equimentType, clientId, message);
- }
- return "success";
- }
- @Override
- public String findMachineTotalNum(StatisticsParam param) {
- return tEquipmentMapper.findMachineTotalNum(param);
- }
- @Override
- public String findMachineUseNum(StatisticsParam param) {
- return tEquipmentMapper.findMachineUseNum(param);
- }
- @Override
- public Optional<String> syncOneEquipmentByClientId(String clientId) {
- if (StringUtils.isNotEmpty(clientId)) {
- TEquipment oldEquipment = R.getDataIfSuccess(syncOldFeign.getEquipmentByClientId(clientId));
- Long id = oldEquipment.getId();
- Date createDate = oldEquipment.getCreateDate();
- Date modifyDate = oldEquipment.getModifyDate();
- Long adminId = oldEquipment.getAdminId();
- String adminLevel = oldEquipment.getAdminLevel();
- String adminPwd = oldEquipment.getAdminPwd();
- Long areaId = oldEquipment.getAreaId();
- String cabinetHd = oldEquipment.getCabinetHd();
- String cabinetTm = oldEquipment.getCabinetTm();
- // String clientId = oldEquipment.getClientId();
- String contactName = oldEquipment.getContactName();
- String contactPhone = oldEquipment.getContactPhone();
- String operationalPhone = oldEquipment.getOperationalPhone();
- String operationalName = oldEquipment.getOperationalName();
- String furnaceSp = oldEquipment.getFurnaceSp();
- String furnaceTm = oldEquipment.getFurnaceTm();
- String guestPwd = oldEquipment.getGuestPwd();
- Boolean isNetWork = oldEquipment.getIsNetWork();
- Boolean isUsing = oldEquipment.getIsUsing();
- Date lastUpdateTime = oldEquipment.getLastUpdateTime();
- Double latitude = oldEquipment.getLatitude();
- Double longitude = oldEquipment.getLongitude();
- String managerId = oldEquipment.getManagerId();
- String selfName = oldEquipment.getSelfName();
- String channel = oldEquipment.getChannel();
- String name = oldEquipment.getName();
- String netWorkingMode = oldEquipment.getNetWorkingMode();
- String operator = oldEquipment.getOperator();
- Integer payType = oldEquipment.getPayType();
- Integer productTotal = oldEquipment.getProductTotal();
- String simNo = oldEquipment.getSimNo();
- String sn = oldEquipment.getSn();
- String adminUserName = oldEquipment.getAdminUserName();
- Long agencyId = oldEquipment.getAgencyId();
- Long merchantId = oldEquipment.getMerchantId();
- String companyPhone = oldEquipment.getCompanyPhone();
- Long personageId = oldEquipment.getPersonageId();
- Integer type = oldEquipment.getType();
- String fullName = oldEquipment.getFullName();
- Date pushUpdateTime = oldEquipment.getPushUpdateTime();
- Long timeRuleId = oldEquipment.getTimeRuleId();
- String gtClientId = oldEquipment.getGtClientId();
- Integer eqeStatus = oldEquipment.getEqeStatus();
- Boolean isBlocked = oldEquipment.getIsBlocked();
- String messageReceiver = oldEquipment.getMessageReceiver();
- Boolean isSleep = oldEquipment.getIsSleep();
- String advancedParameters = oldEquipment.getAdvancedParameters();
- String volume = oldEquipment.getVolume();
- String commonParameters = oldEquipment.getCommonParameters();
- String network = oldEquipment.getNetwork();
- String offTime = oldEquipment.getOffTime();
- String bootTime = oldEquipment.getBootTime();
- String plcVersion = oldEquipment.getPlcVersion();
- String equipmentType = oldEquipment.getEquimentType();
- Date endDate = oldEquipment.getEndDate();
- String flowers = oldEquipment.getFlowers();
- String machineType = oldEquipment.getMachineType();
- // String apkVersion = oldEquipment.getApkVersion(); // 旧系统没有
- // String couponStatus = oldEquipment.getCouponStatus(); // 旧系统没有
- String paymentType = oldEquipment.getPaymentType();
- String companyType = oldEquipment.getCompanyType();
- TEquipment equipment = new TEquipment();
- equipment.setId(id);
- equipment.setCreateDate(createDate);
- equipment.setModifyDate(modifyDate);
- equipment.setAdminId(adminId);
- equipment.setAdminLevel(adminLevel);
- equipment.setAdminPwd(adminPwd);
- equipment.setAreaId(areaId);
- equipment.setCabinetHd(cabinetHd);
- equipment.setCabinetTm(cabinetTm);
- equipment.setClientId(clientId);
- equipment.setContactName(contactName);
- equipment.setContactPhone(contactPhone);
- equipment.setOperationalPhone(operationalPhone);
- equipment.setOperationalName(operationalName);
- equipment.setFurnaceSp(furnaceSp);
- equipment.setFurnaceTm(furnaceTm);
- equipment.setGuestPwd(guestPwd);
- equipment.setIsNetWork(isNetWork);
- equipment.setIsUsing(isUsing);
- equipment.setLastUpdateTime(lastUpdateTime);
- equipment.setLatitude(latitude);
- equipment.setLongitude(longitude);
- equipment.setManagerId(managerId);
- equipment.setSelfName(selfName);
- equipment.setChannel(channel);
- equipment.setName(name);
- equipment.setNetWorkingMode(netWorkingMode);
- equipment.setOperator(operator);
- equipment.setPayType(payType);
- equipment.setProductTotal(productTotal);
- equipment.setSimNo(simNo);
- equipment.setSn(sn);
- equipment.setAdminUserName(adminUserName);
- equipment.setAgencyId(agencyId);
- equipment.setMerchantId(merchantId);
- equipment.setCompanyPhone(companyPhone);
- equipment.setPersonageId(personageId);
- equipment.setType(type);
- equipment.setFullName(fullName);
- equipment.setPushUpdateTime(pushUpdateTime);
- equipment.setTimeRuleId(timeRuleId);
- equipment.setGtClientId(gtClientId);
- equipment.setEqeStatus(eqeStatus);
- equipment.setIsBlocked(isBlocked);
- equipment.setMessageReceiver(messageReceiver);
- equipment.setIsSleep(isSleep);
- equipment.setAdvancedParameters(advancedParameters);
- equipment.setVolume(volume);
- equipment.setCommonParameters(commonParameters);
- equipment.setNetwork(network);
- equipment.setOffTime(offTime);
- equipment.setBootTime(bootTime);
- equipment.setPlcVersion(plcVersion);
- equipment.setEquimentType(equipmentType);
- equipment.setEndDate(endDate);
- equipment.setFlowers(flowers);
- equipment.setMachineType(machineType);
- // equipment.setApkVersion();
- // equipment.setCouponStatus();
- equipment.setCompanyType(companyType);
- equipment.setPaymentType(paymentType);
- equipmentService.save(equipment);
- return Optional.of("success");
- } else {
- return Optional.empty();
- }
- }
- @Override
- public int getForeignEquipmentCount(String area) {
- switch (area) {
- case "0":
- // 统计国内
- List<Long> domesticAdminIdList = adminService.lambdaQuery().eq(TAdmin::getIfForeign, "0").list().stream().map(TAdmin::getId).collect(Collectors.toList());
- return equipmentService.lambdaQuery().in(TEquipment::getAdminId, domesticAdminIdList).count();
- case "1":
- // 统计海外
- List<Long> overseasAdminIdList = adminService.lambdaQuery().eq(TAdmin::getIfForeign, "1").list().stream().map(TAdmin::getId).collect(Collectors.toList());
- return equipmentService.lambdaQuery().in(TEquipment::getAdminId, overseasAdminIdList).count();
- case "2":
- // 统计全球
- return equipmentService.list().size();
- default:
- return 0;
- }
- }
- @Override
- public void checkEquipmentStatus() {
- LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
- query.eq(TEquipment::getEqeStatus, 1);
- List<TEquipment> equipmentList = equipmentService.list(query);
- if (equipmentList.size() > 0) {
- // 获取当前时间,并检查设备状态是否过期
- long nowTime = System.currentTimeMillis();
- for (TEquipment equipment : equipmentList) {
- if (equipment.getModifyDate() != null) {
- // 如果设备的最后刷新时间超过480秒前,则清除设备状态信息,更改为关机状态
- long updateTime = equipment.getModifyDate().getTime();
- if (nowTime > updateTime && (nowTime - updateTime) > 480000) {
- equipment.setCabinetTm("");
- equipment.setCabinetHd("");
- equipment.setFurnaceTm("");
- equipment.setFurnaceSp("");
- equipment.setEqeStatus(0);
- equipmentService.updateById(equipment);
- // 说明机器没有上传信号,判断为网络不好或者关机,发送信号通知客户 查机器归属国内还是国外
- TAdmin admin = adminService.getById(equipment.getAdminId());
- String ifForeign = admin.getIfForeign();
- // 查询是申泽还是七云的
- String companyType = admin.getCompanyType();
- LambdaQueryWrapper<TWechat> wechatQuery = Wrappers.lambdaQuery();
- wechatQuery.eq(TWechat::getAdminId, equipment.getAdminId());
- TWechat wechat = wechatService.getOne(wechatQuery);
- if(wechat != null) {
- // 有绑定微信的话发公众号
- String openId = wechat.getOpenId();
- wechatService.sendNoworkMessage(openId,equipment.getClientId(),equipment.getName(), ifForeign, companyType);
- if (ifForeign.equals("1")) {
- // 国外再发邮件
- String messageReceiver = equipment.getMessageReceiver();
- if(StringUtils.isNotEmpty(messageReceiver)) {
- String[] split = messageReceiver.split(",");
- for (String s : split) {
- WechatSendUtil.sentEmail(s,equipment.getName());
- }
- } else {
- if(StringUtils.isNotEmpty(admin.getEmail())){
- WechatSendUtil.sentEmail(admin.getEmail(),equipment.getName());
- }
- }
- }
- } else {
- // 0或空:国内,1:国外
- if (ifForeign.equals("0") || ifForeign.equals("")) {
- //TODO 国内发短信
- } else {
- // 国外发送邮件
- String messageReceiver = equipment.getMessageReceiver();
- if(StringUtils.isNotEmpty(messageReceiver)) {
- String[] split = messageReceiver.split(",");
- for (String s : split) {
- WechatSendUtil.sentEmail(s,equipment.getName());
- }
- } else {
- if(StringUtils.isNotEmpty(admin.getEmail())){
- WechatSendUtil.sentEmail(admin.getEmail(),equipment.getName());
- }
- }
- }
- }
- }
- }
- }
- }
- }
- /**
- * 根据经度获取时区
- * @param currentLon
- * @return
- */
- public static int lateTimeZone(double currentLon) {
- int timeZone ;
- int shangValue = (int)(currentLon / 15);
- double yushuValue = Math.abs(currentLon % 15);
- if (yushuValue <= 7.5) {
- timeZone = shangValue;
- } else {
- timeZone = shangValue +(currentLon > 0 ? 1 :-1);
- }
- return timeZone;
- }
- }
|