diff --git a/op-modules/op-device/src/main/java/com/op/device/mapper/EquRepairOrderMapper.java b/op-modules/op-device/src/main/java/com/op/device/mapper/EquRepairOrderMapper.java index 3dba6037..9c075237 100644 --- a/op-modules/op-device/src/main/java/com/op/device/mapper/EquRepairOrderMapper.java +++ b/op-modules/op-device/src/main/java/com/op/device/mapper/EquRepairOrderMapper.java @@ -8,6 +8,7 @@ import com.op.device.domain.EquEquipment; import com.op.device.domain.EquFile; import com.op.device.domain.EquRepairOrder; import com.op.device.domain.EquTeamUser; +import com.op.system.api.domain.SysNoticeGroup; import org.apache.ibatis.annotations.Param; /** @@ -109,4 +110,7 @@ public interface EquRepairOrderMapper { //联系方式 @DS("master") EquTeamUser getRepairPhoneNumber(EquTeamUser equTeamUser); + + //查询公告绑定的班组 + List getNoticesGroup(SysNoticeGroup noticeQo); } diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java index 166d57bc..30813808 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/DevicePDAServiceImpl.java @@ -1,5 +1,6 @@ package com.op.device.service.impl; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.context.SecurityContextHolder; import com.op.common.core.domain.BaseFileData; @@ -12,7 +13,12 @@ import com.op.device.domain.*; import com.op.device.domain.dto.PDADTO; import com.op.device.mapper.*; import com.op.device.service.IDevicePDAService; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.dto.WechartDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -30,6 +36,9 @@ import java.time.LocalDateTime; import java.time.ZoneId; import java.time.temporal.ChronoUnit; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; import static com.op.common.core.web.domain.AjaxResult.error; import static com.op.common.core.web.domain.AjaxResult.success; @@ -42,6 +51,7 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class DevicePDAServiceImpl implements IDevicePDAService { + protected Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private EquOrderMapper equOrderMapper; @@ -89,6 +99,9 @@ public class DevicePDAServiceImpl implements IDevicePDAService { @Autowired private EquOperationMapper equOperationMapper; + @Autowired + private RemoteOpenService remoteOpenService; + /** * 获取今日任务工单list-状态不为已完成 * @@ -459,11 +472,16 @@ public class DevicePDAServiceImpl implements IDevicePDAService { @DS("#header.poolName") public AjaxResult addRepairRecord(EquRepairOrder equRepairOrder) { try { -// equRepairOrder //自动填入联系人 联系方式!!!!! + EquTeamUser equTeamUser = new EquTeamUser(); + equTeamUser.setUserName(SecurityUtils.getUsername()); + EquTeamUser equTeamUser1 = equRepairOrderMapper.getRepairPhoneNumber(equTeamUser); + //人员 + equRepairOrder.setOrderRepairmanName(equTeamUser1.getNickName()); + equRepairOrder.setOrderConnection(equTeamUser1.getPhonenumber()); String id = IdUtils.fastSimpleUUID(); equRepairOrder.setOrderId(id); - // 新增 是需要获取故障报修流水号 + //获取故障报修流水号 String serialNum = String.format("%03d", equRepairOrderMapper.selectOrderCodeSerialNumber()); String equipmentCode = equRepairOrder.getEquipmentCode(); //报修单号 @@ -473,6 +491,7 @@ public class DevicePDAServiceImpl implements IDevicePDAService { equRepairOrder.setOrderRepairmanCode(SecurityUtils.getUsername()); equRepairOrder.setOrderTime(DateUtils.getNowDate()); equRepairOrder.setOrderStatus("待审核"); + equRepairOrder.setOrderSource("手持PDA"); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; equRepairOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); @@ -498,6 +517,78 @@ public class DevicePDAServiceImpl implements IDevicePDAService { equRepairOrderMapper.insertBaseFileBatch(files); } + //PDA企业微信报修审核提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + //id写死了? + noticeQo.setNoticeId(10L); + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n") + .replace("${orderCode}", equRepairOrder.getOrderCode()+"\n") + .replace("${orderDesc}", equRepairOrder.getOrderDesc()+"\n") + ; + //故障时间 + if(equRepairOrder.getOrderBreakdownTime() != null){ + contentInfo = contentInfo.replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderBreakdownTime}", "无"+"\n"); + } + + //报修人 + if(equRepairOrder.getOrderRepairmanName() != null){ + contentInfo = contentInfo.replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderRepairmanName}", "无"+"\n"); + } + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("PDA端报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("PDA端报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } + return success("新增报修记录成功!"); } catch (Exception e) { return error(); diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java index 3c41d79f..c405621d 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquOrderServiceImpl.java @@ -1,10 +1,15 @@ package com.op.device.service.impl; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.A; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.context.SecurityContextHolder; @@ -16,7 +21,12 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.device.domain.*; import com.op.device.mapper.*; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysUser; +import com.op.system.api.domain.dto.WechartDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.device.service.IEquOrderService; @@ -37,6 +47,8 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class EquOrderServiceImpl implements IEquOrderService { + protected Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired private EquOrderMapper equOrderMapper; @Autowired @@ -59,6 +71,10 @@ public class EquOrderServiceImpl implements IEquOrderService { private EquSpareApplyMapper equSpareApplyMapper; @Autowired private SparePartsLedgerMapper sparePartsLedgerMapper; + @Autowired + private RemoteOpenService remoteOpenService; + @Autowired + private EquEquipmentMapper equEquipmentMapper; /** * 查询计划工单 @@ -224,6 +240,7 @@ public class EquOrderServiceImpl implements IEquOrderService { } // 获取检查项信息列表 + String orderDesc = ""; //照片格式 String imageType = "3"; List detailList = equOrder.getDetailList(); @@ -268,7 +285,10 @@ public class EquOrderServiceImpl implements IEquOrderService { hasError = true; } } - + //不达标 + if(standard.getDetailReach().equals("0")){ + orderDesc = orderDesc + detail.getItemName() + ":" + standard.getStandardName()+"不达标;"; + } // 更新标准 standard.setUpdateTime(DateUtils.getNowDate()); equOrderStandardMapper.updateEquOrderStandard(standard); @@ -342,6 +362,66 @@ public class EquOrderServiceImpl implements IEquOrderService { String key = "#header.poolName"; equRepairOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); equRepairOrderMapper.insertEquRepairOrder(equRepairOrder); + + //点检巡检报修后 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + //id写死了? + noticeQo.setNoticeId(10L); + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n") + .replace("${orderCode}", equRepairOrder.getOrderCode()+"\n") + .replace("${orderDesc}", orderDesc+"\n") + .replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n") + .replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n") + ; + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("PC端点检巡检报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("PC端点检巡检报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } } // 如果不存在未达标信息 diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java index b3738ff5..86cc4afb 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairOrderServiceImpl.java @@ -4,7 +4,11 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.domain.BaseFileData; import com.op.common.core.utils.DateUtils; @@ -14,6 +18,11 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.device.domain.*; import com.op.device.mapper.*; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; +import com.op.system.api.domain.dto.WechartDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.device.service.IEquRepairOrderService; @@ -35,6 +44,8 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class EquRepairOrderServiceImpl implements IEquRepairOrderService { + protected Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired private EquRepairOrderMapper equRepairOrderMapper; @@ -53,6 +64,9 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService { @Autowired private EquOrderMapper equOrderMapper; + @Autowired + private RemoteOpenService remoteOpenService; + /** * 查询故障报修 * @@ -161,6 +175,67 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService { } equRepairOrderMapper.insertBaseFileBatch(files); } + + //企业微信报修审核提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + //id写死了? + noticeQo.setNoticeId(10L); + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n") + .replace("${orderCode}", equRepairOrder.getOrderCode()+"\n") + .replace("${orderDesc}", equRepairOrder.getOrderDesc()+"\n") + .replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n") + .replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n") + ; + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("PC端报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("PC端报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } return equRepairOrderMapper.insertEquRepairOrder(equRepairOrder); } @@ -174,13 +249,10 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService { @Override @DS("#header.poolName") public int checkEquRepairOrder(EquRepairOrder equRepairOrder) { - //不生成流水号,从报修单号第十位开始切割、拼接 - String code = equRepairOrder.getOrderCode().substring(10); + String code = equRepairOrder.getOrderCode().substring(10); //不生成流水号,从报修单号第十位开始切割、拼接 String workCode = DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + code; - //判断是否是点检、巡检过来的 - if (equRepairOrder.getOrderSource().equals("点检") || equRepairOrder.getOrderSource().equals("巡检")) { - //更新检查项信息 - EquOrder equOrder = new EquOrder(); + if (equRepairOrder.getOrderSource().equals("点检") || equRepairOrder.getOrderSource().equals("巡检")) { //判断是否是点检、巡检过来的 + EquOrder equOrder = new EquOrder(); //更新检查项信息 List ids = equOrderMapper.getIdsByOrderCode(equRepairOrder.getOrderCode()); for (String id : ids) { EquOrder one = new EquOrder(); @@ -194,148 +266,230 @@ public class EquRepairOrderServiceImpl implements IEquRepairOrderService { if (equRepairOrder.getRepairDestination().equals("计划性维修")) { EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder(); - //报修单号 - equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); - //维修单号 - equRepairWorkOrder.setWorkCode("WX" + workCode); - //报修id - equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); - //设备编号 - equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //维修组 - equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); - //不委外 - equRepairWorkOrder.setWorkOutsource("0"); - //无委外单号 - equRepairWorkOrder.setOutWorkCode("无"); - //是否立即维修 1是 0 否 - equRepairWorkOrder.setWorkHandle("0"); - //计划维修时间 - equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); - //是否停机维修 停机维修时间 - if (equRepairOrder.getWorkPlanDownTime() != null) { + equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); //报修单号 + equRepairWorkOrder.setWorkCode("WX" + workCode); //维修单号 + equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); + equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); //报修id + equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); //设备编号 + equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); //维修组 + equRepairWorkOrder.setWorkOutsource("0"); //不委外 + equRepairWorkOrder.setOutWorkCode("无"); //无委外单号 + equRepairWorkOrder.setWorkHandle("0"); //是否立即维修 1是 0 否 + equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); //计划维修时间 + if (equRepairOrder.getWorkPlanDownTime() != null) { //是否停机维修 停机维修时间 equRepairWorkOrder.setWorkDownMachine("1"); equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime()); } else { equRepairWorkOrder.setWorkDownMachine("0"); } - //故障描述???? - equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc()); - //维修状态 待维修 - equRepairWorkOrder.setWorkStatus("0"); - equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); + equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc()); //故障描述 + equRepairWorkOrder.setWorkStatus("0"); //维修状态 待维修 equRepairWorkOrder.setCreateTime(DateUtils.getNowDate()); equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername()); - //工厂 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); + + ////更新维修单 equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder); - equRepairOrder.setOrderStatus("审核通过"); ////更新设备状态 EquEquipment equEquipment = new EquEquipment(); equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //0 故障 - equEquipment.setEquipmentStatus("0"); + equEquipment.setEquipmentStatus("0"); //0 故障 equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); + ////审核结果 + equRepairOrder.setOrderStatus("审核通过"); + + ////发送微信通知 + AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder); } else if (equRepairOrder.getRepairDestination().equals("不维修")) { equRepairOrder.setOrderStatus("驳回"); - } else if (equRepairOrder.getRepairDestination().equals("委外维修")) { EquOutsourceWork equOutsourceWork = new EquOutsourceWork(); - //id - equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID()); - //报修单号 - equOutsourceWork.setOrderCode(equRepairOrder.getOrderCode()); - //设备编码 - equOutsourceWork.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //委外工单号 - equOutsourceWork.setWorkCode("WW" + workCode); - //维修工单号 - equOutsourceWork.setRepairCode("无"); - //委外联系方式 - equOutsourceWork.setWorkConnection(equRepairOrder.getWorkConnection()); - //委外单位 - equOutsourceWork.setWorkOutsourcingUnit(equRepairOrder.getWorkOutsourcingUnit()); - //委外人员 - equOutsourceWork.setWorkPerson(equRepairOrder.getOutSourcePerson()); - //委外原因 - equOutsourceWork.setWorkReason(equRepairOrder.getOutSourceReason()); - //委外类型 维修委外 - equOutsourceWork.setWorkType("0"); + equOutsourceWork.setWorkId(IdUtils.fastSimpleUUID()); //id + equOutsourceWork.setOrderCode(equRepairOrder.getOrderCode()); //报修单号 + equOutsourceWork.setEquipmentCode(equRepairOrder.getEquipmentCode()); //设备编码 + equOutsourceWork.setWorkCode("WW" + workCode); //委外工单号 + equOutsourceWork.setRepairCode("无"); //维修工单号 + equOutsourceWork.setWorkConnection(equRepairOrder.getWorkConnection()); //委外联系方式 + equOutsourceWork.setWorkOutsourcingUnit(equRepairOrder.getWorkOutsourcingUnit()); //委外单位 + equOutsourceWork.setWorkPerson(equRepairOrder.getOutSourcePerson()); //委外人员 + equOutsourceWork.setWorkReason(equRepairOrder.getOutSourceReason()); //委外原因 + equOutsourceWork.setWorkType("0"); //委外类型 维修委外 equOutsourceWork.setCreateBy(SecurityUtils.getUsername()); equOutsourceWork.setCreateTime(DateUtils.getNowDate()); HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; - //工厂号 equOutsourceWork.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); + ////更新委外列表 equOutsourceWorkMapper.insertEquOutsourceWork(equOutsourceWork); - equRepairOrder.setOrderStatus("审核通过"); ////更新设备状态 EquEquipment equEquipment = new EquEquipment(); equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //0 故障 - equEquipment.setEquipmentStatus("0"); + equEquipment.setEquipmentStatus("0"); //0 故障 equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); + equRepairOrder.setOrderStatus("审核通过"); } else if (equRepairOrder.getRepairDestination().equals("立即维修")) { EquRepairWorkOrder equRepairWorkOrder = new EquRepairWorkOrder(); - //维修工单id - equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); - //报修单号 - equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); - //维修单号 - equRepairWorkOrder.setWorkCode("WX" + workCode); - //orderId - equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); - //设备编码 - equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //维修组 - equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); - //不委外 - equRepairWorkOrder.setWorkOutsource("0"); - //无委外工单号 - equRepairWorkOrder.setOutWorkCode("无"); - //是否立即维修 1是 0 否 - equRepairWorkOrder.setWorkHandle("0"); - //计划维修时间 - equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); - //是否停机维修 停机维修时间 - if (equRepairOrder.getWorkPlanDownTime() != null) { + equRepairWorkOrder.setWorkId(IdUtils.fastSimpleUUID()); //维修工单id + equRepairWorkOrder.setOrderId(equRepairOrder.getOrderId()); //报修Id + equRepairWorkOrder.setOrderCode(equRepairOrder.getOrderCode()); //报修单号 + equRepairWorkOrder.setWorkCode("WX" + workCode); //维修单号 + equRepairWorkOrder.setEquipmentCode(equRepairOrder.getEquipmentCode()); //设备编码 + equRepairWorkOrder.setWorkTeam(equRepairOrder.getWorkTeam()); //维修组 + equRepairWorkOrder.setWorkOutsource("0"); //不委外 + equRepairWorkOrder.setOutWorkCode("无"); //无委外工单号 + equRepairWorkOrder.setWorkHandle("1"); //是否立即维修 1是 0 否 + equRepairWorkOrder.setWorkPlanTime(equRepairOrder.getWorkPlanTime()); //计划维修时间 + if (equRepairOrder.getWorkPlanDownTime() != null) { //是否停机维修 停机维修时间 equRepairWorkOrder.setWorkDownMachine("1"); equRepairWorkOrder.setWorkPlanDownTime(equRepairOrder.getWorkPlanDownTime()); } else { equRepairWorkOrder.setWorkDownMachine("0"); } - //故障描述 + equRepairWorkOrder.setWorkFaultDesc(equRepairOrder.getOrderDesc()); - //工单状态 待维修 - equRepairWorkOrder.setWorkStatus("0"); + equRepairWorkOrder.setWorkStatus("0"); //工单状态 待维修 equRepairWorkOrder.setCreateTime(DateUtils.getNowDate()); equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername()); - //工厂 HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); String key = "#header.poolName"; equRepairWorkOrder.setFactoryCode(request.getHeader(key.substring(8)).replace("ds_", "")); equRepairWorkOrderMapper.insertEquRepairWorkOrder(equRepairWorkOrder); + + ////审核结果 equRepairOrder.setOrderStatus("审核通过"); ////更新设备状态 EquEquipment equEquipment = new EquEquipment(); equEquipment.setEquipmentCode(equRepairOrder.getEquipmentCode()); - //0 故障 - equEquipment.setEquipmentStatus("0"); + equEquipment.setEquipmentStatus("0"); //0故障 equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); + AjaxResult repairSendWeChatResult = repairSendWeChat(equRepairWorkOrder); } equRepairOrder.setUpdateTime(DateUtils.getNowDate()); equRepairOrder.setUpdateBy(SecurityUtils.getUsername()); return equRepairOrderMapper.updateEquRepairOrder(equRepairOrder); } + /** + * 维修时发送企业微信 + */ + public AjaxResult repairSendWeChat(EquRepairWorkOrder equRepairWorkOrder) { + ////企业微信维修提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(11L); //id写死了? + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + ////判断是立即维修还是计划性维修 + String workHandle = ""; + if(equRepairWorkOrder.getWorkHandle().equals("1")){ + workHandle = "立即维修"; + }else{ + workHandle = "计划性维修"; + } + ////判断是否需要停机维修 + String workDownMachine = ""; + if(equRepairWorkOrder.getWorkDownMachine().equals("1")){ + workDownMachine = "停机"; + }else{ + workDownMachine = "不停机"; + } + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairWorkOrder.getEquipmentCode()+"\n") + .replace("${workCode}", equRepairWorkOrder.getWorkCode()+"\n") + .replace("${workHandle}", workHandle+"\n"); + //故障描述 + if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkFaultDesc())){ + contentInfo = contentInfo.replace("${workFaultDesc}", equRepairWorkOrder.getWorkFaultDesc()+"\n"); + }else{ + contentInfo = contentInfo.replace("${workFaultDesc}", "无"+"\n"); + } + + //维修组 + if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkTeam())){ + contentInfo = contentInfo.replace("${workTeam}", equRepairWorkOrder.getWorkTeam()+"\n"); + }else{ + contentInfo = contentInfo.replace("${workTeam}", "无"+"\n"); + } + + //计划停机维修时间 + if(equRepairWorkOrder.getWorkPlanTime() != null){ + contentInfo = contentInfo.replace("${workPlanTime}", myFmt.format(equRepairWorkOrder.getWorkPlanTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${workPlanTime}", "无"+"\n"); + } + + //计划停机维修时间 + if(equRepairWorkOrder.getWorkPlanDownTime() != null){ + contentInfo = contentInfo.replace("${workPlanDownTime}", myFmt.format(equRepairWorkOrder.getWorkPlanDownTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${workPlanDownTime}", "无"+"\n"); + } + + //是否停机 + if(StringUtils.isNotEmpty(workDownMachine)){ + contentInfo = contentInfo.replace("${workDownMachine}", workDownMachine+"\n"); + }else{ + contentInfo = contentInfo.replace("${workDownMachine}", "无"+"\n"); + } + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairWorkOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + //替换标签 + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("报修审核后企业微信提醒维修请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("报修审核后企业微信提醒结果(下一步开始维修):" + JSONObject.toJSONString(wxresult)); + }).start(); + + } + //发企业微信--------------------结束 + } + return success("报修审核后,企业微信发送维修信息成功!"); + } + + /** * 修改故障报修 * diff --git a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java index 6a70be32..e485c1b9 100644 --- a/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java +++ b/op-modules/op-device/src/main/java/com/op/device/service/impl/EquRepairWorkOrderServiceImpl.java @@ -7,7 +7,11 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.Collectors; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.op.common.core.domain.BaseFileData; import com.op.common.core.utils.DateUtils; @@ -17,6 +21,11 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.device.domain.*; import com.op.device.mapper.*; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; +import com.op.system.api.domain.dto.WechartDTO; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.op.device.service.IEquRepairWorkOrderService; @@ -39,6 +48,8 @@ import static com.op.common.core.web.domain.AjaxResult.success; */ @Service public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService { + protected Logger logger = LoggerFactory.getLogger(getClass()); + @Autowired private EquOrderMapper equOrderMapper; @@ -60,6 +71,12 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService @Autowired private EquEquipmentMapper equEquipmentMapper; + @Autowired + private RemoteOpenService remoteOpenService; + + @Autowired + private EquRepairOrderMapper equRepairOrderMapper; + /** * 查询维修工单 * @@ -152,6 +169,7 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService equRepairWorkOrder.setOrderCode("无"); equRepairWorkOrder.setOutWorkCode("无"); equRepairWorkOrder.setWorkCode("WX" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equipmentCode + serialNum); + equRepairWorkOrder.setWorkHandle("1"); equRepairWorkOrder.setCreateBy(SecurityUtils.getUsername()); equRepairWorkOrder.setCreateTime(DateUtils.getNowDate()); //工厂号 @@ -165,6 +183,106 @@ public class EquRepairWorkOrderServiceImpl implements IEquRepairWorkOrderService equEquipment.setEquipmentCode(equipmentCode); equEquipment.setEquipmentStatus("0");//0故障 equRepairWorkOrderMapper.updateEquipmentStatus(equEquipment); + + ////快速工单后发送微信提醒 + //发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(11L); //id写死了? + List notices = equRepairOrderMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + String workHandle = "立即维修"; + ////判断是否需要停机维修 + String workDownMachine = ""; + if(equRepairWorkOrder.getWorkDownMachine().equals("1")){ + workDownMachine = "停机"; + }else{ + workDownMachine = "不停机"; + } + //在前端填的时候,需要判空!!!!!! + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairWorkOrder.getEquipmentCode()+"\n") + .replace("${workCode}", equRepairWorkOrder.getWorkCode()+"\n") + .replace("${workHandle}", workHandle+"\n"); + //故障描述 + if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkFaultDesc())){ + contentInfo = contentInfo.replace("${workFaultDesc}", equRepairWorkOrder.getWorkFaultDesc()+"\n"); + }else{ + contentInfo = contentInfo.replace("${workFaultDesc}", "无"+"\n"); + } + + //维修组 + if(StringUtils.isNotEmpty(equRepairWorkOrder.getWorkTeam())){ + contentInfo = contentInfo.replace("${workTeam}", equRepairWorkOrder.getWorkTeam()+"\n"); + }else{ + contentInfo = contentInfo.replace("${workTeam}", "无"+"\n"); + } + + //计划停机维修时间 + if(equRepairWorkOrder.getWorkPlanTime() != null){ + contentInfo = contentInfo.replace("${workPlanTime}", myFmt.format(equRepairWorkOrder.getWorkPlanTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${workPlanTime}", "无"+"\n"); + } + + //计划停机维修时间 + if(equRepairWorkOrder.getWorkPlanDownTime() != null){ + contentInfo = contentInfo.replace("${workPlanDownTime}", myFmt.format(equRepairWorkOrder.getWorkPlanDownTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${workPlanDownTime}", "无"+"\n"); + } + + //是否停机 + if(StringUtils.isNotEmpty(workDownMachine)){ + contentInfo = contentInfo.replace("${workDownMachine}", workDownMachine+"\n"); + }else{ + contentInfo = contentInfo.replace("${workDownMachine}", "无"+"\n"); + } + + //查询设备相关信息 + //设备名称 + EquEquipment equ = equEquipmentMapper.selectEquEquipmentByEquEquipmentCode(equRepairWorkOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + //替换标签 + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("维修快速工单后企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("维修快速工单后企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + }).start(); + + } + //发企业微信--------------------结束 + } return result; } diff --git a/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml b/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml index 96b8ef42..83287198 100644 --- a/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml +++ b/op-modules/op-device/src/main/resources/mapper/device/EquRepairOrderMapper.xml @@ -342,4 +342,17 @@ where source_id = #{sourceId} + + diff --git a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java index 8803c218..ff0da372 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/controller/MesReportWorkController.java @@ -562,6 +562,17 @@ public class MesReportWorkController extends BaseController { dynamicRoutingDataSource.removeDataSource(dataSourceProperty.getPoolName()); return R.ok(); } + + /**批次预报工数据**/ + @PostMapping("/preReportRow") + public AjaxResult preReportRow(@RequestBody MesReportWork mesReportWork) { + R r = mesReportWorkService.preReportRow(mesReportWork); + if(r.getCode()==200){ + return AjaxResult.success(); + }else{ + return AjaxResult.error("报工失败:"+r.getMsg()); + } + } } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java index 09e9bdcc..20f16bdb 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/mapper/MesReportWorkMapper.java @@ -162,4 +162,12 @@ public interface MesReportWorkMapper { int deleteReport(String reportCode); int deleteReportConsume(String reportCode); + + List getSapWorkOrderByReport(String reportCode); + + MesReportWork getPreReportWork(MesReportWork mesReportWork); + + void updatePreReportAttr1(MesReportWork workOrder); + + MesReportWork getReportWorkHzAttr1(MesReportWork mesReportWork); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java index c8a52065..f2992d4a 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IMesReportWorkService.java @@ -129,4 +129,6 @@ public interface IMesReportWorkService { List getMachineProductionTitle(MesMachineReport mesMachineReport); int deleteReportNow(String reportCode); + + R preReportRow(MesReportWork mesReportWork); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java b/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java index 984a3cae..214cee3c 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/IWCSInterfaceService.java @@ -42,4 +42,6 @@ public interface IWCSInterfaceService { Map dryRoomDataCarousel(BoardDTO boardDTO); AjaxResult changeTransferResultTask(); + + R prReportWork(MesReportWork mesReportWork); } diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java index 9a4e5436..7f6dd6d6 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/IWCInterfaceServiceImpl.java @@ -357,6 +357,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); + +// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 +// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); +// } + if(sHzWorks==null){ return R.fail("未查询到一层报工单"); } @@ -380,6 +385,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); + +// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 +// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); +// } + if(sHzWorks==null){ return R.fail("未查询到子报工单"); } @@ -394,6 +404,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode()); mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork pHzWork = mesReportWorkMapper.getReportWorkHz(mesReportWork); + +// if(pHzWork==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 +// pHzWork = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); +// } + if(pHzWork==null){ return R.fail("未查询到母报工单"); } @@ -428,6 +443,11 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { mesReportWork.setWorkorderCode(workOrder.getWorkorderCode()); mesReportWork.setMachineCode(mesReportWork.getMachineCode()); MesReportWork sHzWorks = mesReportWorkMapper.getReportWorkHz(mesReportWork); + +// if(sHzWorks==null){//再去查预报工的一条数,带出基本数据,其它全部赋值0 +// sHzWorks = mesReportWorkMapper.getReportWorkHzAttr1(mesReportWork); +// } + if (sHzWorks == null) { return R.fail(workOrder.getWorkorderCode()+"未查询到报工单"); } @@ -458,6 +478,124 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService { return sapRson; } + @Override + public R prReportWork(MesReportWork mesReportWork) { + + //根据belong_work_order找到sap工单(子子母) + List workOrders = mesReportWorkMapper.getSapWorkOrderByReport(mesReportWork.getReportCode()); + if (CollectionUtils.isEmpty(workOrders)) { + return R.fail("子母工单信息缺失"); + } + + R sapRson = null; + if(workOrders.size()==1){ + /**(一层报工)工单报工**/ + mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 + mesReportWork.setProdType("prod"); + mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); + mesReportWork.setMachineCode(workOrders.get(0).getMachineCode()); + MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork); + if(sHzWorks==null){ + return R.fail("未查询到一层报工单"); + } + //查询base_product的report_rate//单层项向sap报工的数量=上位机报工数量*报工汇率 + BigDecimal reportRate = mesReportWorkMapper.getReportRate(workOrders.get(0).getProductCode()); + if(reportRate != null){ + BigDecimal newQuantity = sHzWorks.getQuantityFeedback().multiply(reportRate); + sHzWorks.setQuantityFeedback(newQuantity); + } + //机器=sum(工时数) 【设备开机时间】 Sac1 + //人工 = sum(每批的工时数*每批用人数) Sac2 + //子工单报工 + logger.info("==========================一层工单预报工开始"); + sHzWorks.setMachineCode(workOrders.get(0).getMachineCode()); + sapRson = this.preReportToSap(sHzWorks); + logger.info("==========================一层工单预报工结束:"+JSONObject.toJSONString(sapRson)); + }else if(workOrders.size()==2){ + /**(两层报工)子工单先报工,然后母工单报工**/ + mesReportWork.setUploadStatus("1");//除了1报工成功的,都需要报工 + mesReportWork.setProdType("prod"); + mesReportWork.setWorkorderCode(workOrders.get(0).getWorkorderCode()); + mesReportWork.setMachineCode(workOrders.get(0).getMachineCode()); + MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork); + if(sHzWorks==null){ + return R.fail("未查询到子报工单"); + } + + //子工单报工 + logger.info("==========================子工单预报工开始"); + sHzWorks.setMachineCode(workOrders.get(0).getMachineCode()); + sapRson = this.preReportToSap(sHzWorks); + logger.info("==========================子工单预报工结束:"+JSONObject.toJSONString(sapRson)); + if(sapRson.getCode()== 200){ + //一定是子单报工成功返回后,再母单报工 + mesReportWork.setWorkorderCode(workOrders.get(1).getWorkorderCode()); + mesReportWork.setMachineCode(workOrders.get(1).getMachineCode()); + MesReportWork pHzWork = mesReportWorkMapper.getPreReportWork(mesReportWork); + if(pHzWork==null){ + return R.fail("未查询到母报工单"); + } + try { + Thread.sleep(3000); + }catch (Exception e){ + e.printStackTrace(); + } + //母工单报工 + logger.info("==========================母工单预报工开始"); + //查询base_product的report_rate//箱子-大盒-小盒 + BigDecimal reportRate = mesReportWorkMapper.getReportRate(workOrders.get(1).getProductCode()); + if(reportRate != null){ + BigDecimal newQuantity = sHzWorks.getQuantityFeedback().divide(reportRate,2, RoundingMode.HALF_UP); + pHzWork.setQuantityFeedback(newQuantity); + }else{ + pHzWork.setQuantityFeedback(sHzWorks.getQuantityFeedback()); + } + pHzWork.setMachineCode(mesReportWork.getMachineCode()); + //pHzWork.setSac2("4");//母单报工固定值(上位机插入数据时候默认4) + R sapR = this.preReportToSap(pHzWork); + logger.info("==========================母工单预报工结束"+JSONObject.toJSONString(sapR)); + return sapR; + } + + }else if(workOrders.size()>=3){ + BigDecimal gamng = null; + for(int n=0;n lt_hwList = new ArrayList<>(); + MesReportWorkConsume consumeqo = new MesReportWorkConsume(); + consumeqo.setWorkorderCode(workOrder.getWorkorderCode()); + consumeqo.setRecoil("X"); + consumeqo.setMachineCode(workOrder.getMachineCode()); +// List consumes = mesReportWorkConsumeMapper.getSumConsumeList(consumeqo); +// if (!CollectionUtils.isEmpty(consumes)) { +// for (MesReportWorkConsume consume : consumes) { +// SapRFW.lt_hw lthw = new SapRFW.lt_hw();//MES生产订单报工货物移动修改 +// lthw.setEntry_qnt(consume.getQuantity() + "");//数量 +// lthw.setMaterial(consume.getMaterialCode());//物料编码 +// lt_hwList.add(lthw); +// } +// } else { +// logger.info(workOrder.getWorkorderCodeSap() + "sap工单报工:工单" + workOrder.getWorkorderCode() + "mes_report_work_consume没有数据"); +// return R.fail("mes_report_work_consume没有数据"); +// } + sapRFW.setLt_hwList(lt_hwList); + sapRFW.setAnzma(workOrder.getSapCode());//产线编号 + sapRFW.setRemark(workOrder.getRemark());//备注 + logger.info(workOrder.getWorkorderCodeSap() + "sap工单预报工请求:" + JSONObject.toJSONString(sapRFW)); + R r = remoteSapService.sapRFWOrder(sapRFW); + logger.info(workOrder.getWorkorderCodeSap() + "sap工单预报工结果:" + r.getCode() + "," + r.getData() + "," + r.getMsg()); + //上传成功,更改mes_report_work--attr1状态 + if (r.getCode() == 200) { + workOrder.setAttr1("1"); + } + mesReportWorkMapper.updatePreReportAttr1(workOrder); + return r; + } + public void dateBKFunc(String poolName, List tables) { DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key diff --git a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java index b0279ef1..5493cc9f 100644 --- a/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java +++ b/op-modules/op-mes/src/main/java/com/op/mes/service/impl/MesReportWorkServiceImpl.java @@ -10,6 +10,7 @@ import java.util.*; import java.util.stream.Collectors; import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; import com.baomidou.dynamic.datasource.annotation.DS; import com.google.common.collect.Lists; import com.op.common.core.domain.R; @@ -256,9 +257,9 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { mesReportWork.setUpdateTime(nowTime); mesReportWork.setUpdateBy(updateBy); } - //会更新好几次//着急发布后面再说 - mesReportWorkMapper.updateReportRemark(mesReportWorks); + //会更新好几次//着急发布后面再说 + //mesReportWorkMapper.updateReportRemark(mesReportWorks); return mesReportWorkMapper.submitReportPS(mesReportWorks); } @@ -588,6 +589,14 @@ public class MesReportWorkServiceImpl implements IMesReportWorkService { return reportNum; } + @Override + @DS("#header.poolName") + public R preReportRow(MesReportWork mesReportWork) { + mesReportWork.setFactoryCode(ServletUtils.getRequest().getHeader("PoolName")); + R s = iWCSInterfaceService.prReportWork(mesReportWork); + return s; + } + @Override @DS("#header.poolName") public List> getMachineProductionList(MesMachineReport mesMachineReport) { diff --git a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml index 4f75e67d..8d38de3b 100644 --- a/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml +++ b/op-modules/op-mes/src/main/resources/mapper/mes/MesLineMapper.xml @@ -23,7 +23,8 @@ - select id, line_code, line_name, use_man, efficiency, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, factory_code, del_flag from mes_line + select id, line_code, line_name, use_man, efficiency, attr1, attr2, attr3, attr4, create_by, + create_time, update_by, update_time, factory_code, del_flag from mes_line + + + select top 1 upload_status from mes_report_work where report_code = #{reportCode} + + - + insert into mes_report_work id, @@ -961,7 +1041,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" work_time = #{item.workTime}, use_man = #{item.useMan}, update_by = #{item.updateBy}, - update_time = #{item.updateTime} + update_time = #{item.updateTime}, + remark = #{item.remark} where id = #{item.id} @@ -986,6 +1067,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and report_code = #{item.reportCode} + + update mes_report_work set attr1 = #{attr1} where report_code = #{reportCode} + update mes_report_work set del_flag = '1' where id = #{id} diff --git a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java index 53e36544..fa441c9a 100644 --- a/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java +++ b/op-modules/op-open/src/main/java/com/op/open/mapper/OpenMapper.java @@ -1,7 +1,9 @@ package com.op.open.mapper; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.SysSapLog; import com.op.system.api.domain.device.DeviceRepairOrder; +import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.mes.MesReportWorkConsumeDTO; import com.op.system.api.domain.mes.MesReportWorkDTO; @@ -85,5 +87,9 @@ public interface OpenMapper { String getSampNum(QcCheckTaskProduceDTO sampQua); Date getLastTask(QcCheckTaskProduceDTO qcCheckTaskProduce); + + List getNoticesGroup(SysNoticeGroup noticeQo); + + EquEquipmentDTO selectEquipmentDetailByEquipmentCode(String equipmentCode); } diff --git a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java index ea98a3c8..cd0fdf20 100644 --- a/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java +++ b/op-modules/op-open/src/main/java/com/op/open/service/impl/OpenServiceImpl.java @@ -13,7 +13,10 @@ import com.op.common.core.web.domain.AjaxResult; import com.op.common.security.utils.SecurityUtils; import com.op.open.mapper.OpenMapper; import com.op.open.service.OpenService; +import com.op.system.api.RemoteOpenService; +import com.op.system.api.domain.SysNoticeGroup; import com.op.system.api.domain.device.DeviceRepairOrder; +import com.op.system.api.domain.device.EquEquipmentDTO; import com.op.system.api.domain.device.EquRepairOrderDTO; import com.op.system.api.domain.dto.WCSDTO; import com.op.system.api.domain.dto.WCSDataDTO; @@ -21,6 +24,8 @@ import com.op.system.api.domain.dto.WechartDTO; import com.op.system.api.domain.mes.ProRfidProcessDetail; import com.op.system.api.domain.quality.*; import org.apache.commons.lang.StringUtils; + +import java.text.SimpleDateFormat; import java.time.LocalDateTime; import java.time.Duration; import org.slf4j.Logger; @@ -33,6 +38,8 @@ import java.math.BigDecimal; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import static com.op.common.core.web.domain.AjaxResult.error; @@ -68,8 +75,8 @@ public class OpenServiceImpl implements OpenService { @Autowired private OpenMapper openMapper; -// @Autowired -// private RemoteSapService remoteSapService; + @Autowired + private RemoteOpenService remoteOpenService; /** * 下一工序机台集合获取 @@ -265,43 +272,115 @@ public class OpenServiceImpl implements OpenService { @Override public AjaxResult machineRepair(EquRepairOrderDTO equRepairOrderDTO) { - if (equRepairOrderDTO.getFactory() == null) { return error("工厂源不可为空!"); } - DynamicDataSourceContextHolder.push("ds_" + equRepairOrderDTO.getFactory());// 这是数据源的key + DynamicDataSourceContextHolder.push("ds_" + equRepairOrderDTO.getFactory()); // 这是数据源的key - // 创建报修单 + ////创建报修单 DeviceRepairOrder equRepairOrder = new DeviceRepairOrder(); - // 获取故障报修流水号 - String serialNum = String.format("%03d", openMapper.selectOrderCodeSerialNumber()); + String serialNum = String.format("%03d", openMapper.selectOrderCodeSerialNumber()); // 获取故障报修流水号 if (equRepairOrderDTO.getEquipmentCode() == null) { return error("设备信息不可为空!"); } equRepairOrder.setOrderCode("BX" + DateUtils.dateTimeNow(DateUtils.YYYYMMDD) + equRepairOrderDTO.getEquipmentCode() + serialNum);// 报修单号 - equRepairOrder.setOrderId(IdUtils.fastSimpleUUID());// id + equRepairOrder.setOrderId(IdUtils.fastSimpleUUID()); // id equRepairOrder.setEquipmentCode(equRepairOrderDTO.getEquipmentCode()); - equRepairOrder.setOrderSource("上位机");// 故障来源 - equRepairOrder.setOrderDesc(equRepairOrderDTO.getOrderDesc());//故障描述 新增加的 - equRepairOrder.setOrderTime(DateUtils.getNowDate());// 报修时间 - equRepairOrder.setOrderBreakdownTime(DateUtils.getNowDate());// 故障时间 + equRepairOrder.setOrderSource("上位机"); // 故障来源 + equRepairOrder.setOrderDesc(equRepairOrderDTO.getOrderDesc()); //故障描述 新增加的 + equRepairOrder.setOrderTime(DateUtils.getNowDate()); // 报修时间 + equRepairOrder.setOrderBreakdownTime(DateUtils.getNowDate()); // 故障时间 if (equRepairOrderDTO.getUserName() != null) { - equRepairOrder.setOrderRepairmanCode(equRepairOrderDTO.getUserName());// 用户账号 + equRepairOrder.setOrderRepairmanCode(equRepairOrderDTO.getUserName()); // 用户账号 } if (equRepairOrderDTO.getUserNickName() != null) { - equRepairOrder.setOrderRepairmanName(equRepairOrderDTO.getUserNickName());// 用户名称 + equRepairOrder.setOrderRepairmanName(equRepairOrderDTO.getUserNickName()); // 用户名称 } - equRepairOrder.setCreateTime(DateUtils.getNowDate()); equRepairOrder.setCreateBy(equRepairOrderDTO.getUserName()); - equRepairOrder.setOrderStatus("待审核");// 报修单状态 - equRepairOrder.setFactoryCode(equRepairOrderDTO.getFactory());// 工厂 + equRepairOrder.setOrderStatus("待审核"); // 报修单状态 + equRepairOrder.setFactoryCode(equRepairOrderDTO.getFactory()); // 工厂 if (equRepairOrderDTO.getPhoneNumber() != null) { - equRepairOrder.setOrderConnection(equRepairOrderDTO.getPhoneNumber());// 联系方式 + equRepairOrder.setOrderConnection(equRepairOrderDTO.getPhoneNumber()); // 联系方式 } - openMapper.insertEquRepairOrder(equRepairOrder); + ////发企业微信--------------------开始(跟班组有关) + SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); //规范时间格式 + SysNoticeGroup noticeQo = new SysNoticeGroup(); + //id写死了? + noticeQo.setNoticeId(10L); + List notices = openMapper.getNoticesGroup(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + List wecharts = new ArrayList<>(); + List userCodes = notices.stream() + .map(SysNoticeGroup::getUserCode) + .collect(Collectors.toList()); + for (SysNoticeGroup noticeDto : notices) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(noticeDto.getWxId()); + String contentInfo = noticeDto.getNoticeContent(); + //设备编码 + contentInfo = contentInfo + .replace("${message}", "\n") + .replace("${equipmentCode}", equRepairOrder.getEquipmentCode()+"\n") + .replace("${orderCode}", equRepairOrder.getOrderCode()+"\n"); + + //故障时间 + if(equRepairOrder.getOrderBreakdownTime() != null){ + contentInfo = contentInfo.replace("${orderBreakdownTime}", myFmt.format(equRepairOrder.getOrderBreakdownTime())+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderBreakdownTime}", "无"+"\n"); + } + + //故障原因 + if(StringUtils.isNotEmpty(equRepairOrder.getOrderDesc())){ + contentInfo = contentInfo.replace("${orderDesc}", equRepairOrder.getOrderDesc()+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderDesc}", "无"+"\n"); + } + + //报修人名字 + if(StringUtils.isNotEmpty(equRepairOrder.getOrderRepairmanName())){ + contentInfo = contentInfo.replace("${orderRepairmanName}", equRepairOrder.getOrderRepairmanName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${orderRepairmanName}", "无"+"\n"); + } + + //查询设备相关信息 + EquEquipmentDTO equ = openMapper.selectEquipmentDetailByEquipmentCode(equRepairOrder.getEquipmentCode()); + if(StringUtils.isNotEmpty(equ.getEquipmentName())){ + contentInfo = contentInfo.replace("${equipmentName}", equ.getEquipmentName()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentName}", "无"+"\n"); + } + //设备位置 + if(StringUtils.isNotEmpty(equ.getEquipmentLocation())){ + contentInfo = contentInfo.replace("${equipmentLocation}", equ.getEquipmentLocation()+"\n"); + }else{ + contentInfo = contentInfo.replace("${equipmentLocation}", "无"+"\n"); + } + + //替换掉

标签 + Pattern p= Pattern.compile("<[^>]+>"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); + System.out.println(contentInfo); + + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("上位机报修企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult wxresult = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("上位机报修企业微信提醒结果:" + JSONObject.toJSONString(wxresult)); + + }).start(); + } + //发企业微信--------------------结束 + } + return success(); } @@ -510,7 +589,7 @@ public class OpenServiceImpl implements OpenService { @Override public AjaxResult sendWeChartMessage(List dtos) { try { - String result = HttpUtils.sendPost(weChartUrl, JSON.toJSONString(dtos)); + String result = HttpUtils.sendPostWechart(weChartUrl, JSON.toJSONString(dtos)); return success(result); } catch (Exception e) { e.printStackTrace(); @@ -518,7 +597,6 @@ public class OpenServiceImpl implements OpenService { } } - protected Boolean oneMinHas(Date lastData){ if(lastData != null){ int year= Integer.parseInt(String.format("%tY", lastData)); diff --git a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml index 099a2a96..97d1f036 100644 --- a/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml +++ b/op-modules/op-open/src/main/resources/mapper/open/OpenMapper.xml @@ -386,4 +386,23 @@ + + + + diff --git a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java index e2632c18..90a0cca4 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/mapper/ProOrderWorkorderBatchMapper.java @@ -3,6 +3,7 @@ package com.op.plan.mapper; import com.op.plan.domain.Batch; import com.op.plan.domain.ProOrderWorkorderBatch; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -79,4 +80,6 @@ public interface ProOrderWorkorderBatchMapper { List selectCodeByWorkOrderIds(String[] workorderIds); public int deleteBatch(String[] workorderIds); + + List checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List newbatchs); } diff --git a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java index 5eb59c91..fc98bf43 100644 --- a/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java +++ b/op-modules/op-plan/src/main/java/com/op/plan/service/impl/ProOrderWorkorderServiceImpl.java @@ -634,13 +634,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { // 校验批次编号是否存在(重复问题) String[] workorderIds = (String[]) ids.toArray(new String[ids.size()]); - List batchCodes = proOrderWorkorderBatchMapper.selectCodeByWorkOrderIds(workorderIds); - for (int i = 0; i < batchCodes.size(); i++) { - for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) { - if (batchCodes.get(i).equals(splitOrderDTO.getFormFields().get(j).getBatchCode())) { - checkout = false; - } - } + List newbatchs = new ArrayList<>(); + for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) { + newbatchs.add(splitOrderDTO.getFormFields().get(j).getBatchCode()); + } + List batchCodes = proOrderWorkorderBatchMapper.checkBatchCodeByWorkOrderIds(workorderIds,newbatchs); + if (!CollectionUtils.isEmpty(batchCodes)) { + checkout = false; } //校验各工序设备是否已选择 List processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode()); @@ -957,13 +957,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService { // 校验批次编号是否存在(重复问题) String[] workorderIds = (String[]) ids.toArray(new String[ids.size()]); - List batchCodes = proOrderWorkorderBatchMapper.selectCodeByWorkOrderIds(workorderIds); - for (int i = 0; i < batchCodes.size(); i++) { - for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) { - if (batchCodes.get(i).equals(splitOrderDTO.getFormFields().get(j).getBatchCode())) { - checkout = false; - } - } + List newbatchs = new ArrayList<>(); + for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) { + newbatchs.add(splitOrderDTO.getFormFields().get(j).getBatchCode()); + } + List batchCodes = proOrderWorkorderBatchMapper.checkBatchCodeByWorkOrderIds(workorderIds,newbatchs); + if (!CollectionUtils.isEmpty(batchCodes)) { + checkout = false; } //校验各工序设备是否已选择 List processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode()); diff --git a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml index 6b01fb32..239cd2c6 100644 --- a/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml +++ b/op-modules/op-plan/src/main/resources/mapper/plan/ProOrderWorkorderBatchMapper.xml @@ -70,6 +70,17 @@ + insert into pro_order_workorder_batch diff --git a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java index 0a0c225e..0137eb85 100644 --- a/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java +++ b/op-modules/op-quality/src/main/java/com/op/quality/service/impl/QcCheckTaskIncomeServiceImpl.java @@ -2,6 +2,8 @@ package com.op.quality.service.impl; import java.math.BigDecimal; import java.util.*; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import com.alibaba.fastjson2.JSONObject; @@ -127,32 +129,6 @@ public class QcCheckTaskIncomeServiceImpl implements public List selectQcCheckTaskIncomeList(QcCheckTaskIncome qcCheckTaskIncome) { qcCheckTaskIncome.setDelFlag("0"); qcCheckTaskIncome.setTypeCode("material"); - -// //发企业微信--------------------开始(跟班组无关) -// SysNoticeGroup noticeQo = new SysNoticeGroup(); -// noticeQo.setNoticeId(6L); -// List notices = qcCheckTaskIncomeMapper.getNotices(noticeQo); -// if(!CollectionUtils.isEmpty(notices)) { -// List wecharts = new ArrayList<>(); -// -// List wxids = new ArrayList<>(); -// wxids.add("MES002"); -// for (String wxid : wxids) { -// WechartDTO wechart0 = new WechartDTO(); -// wechart0.setUserId(wxid); -// wechart0.setText("您好,有一条新的来料检验任务,需要您登陆手持进行处理。"); -// wecharts.add(wechart0); -// } -// logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); -// if (!CollectionUtils.isEmpty(wecharts)) { -// new Thread(() -> { -// AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts); -// logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result)); -// -// }).start(); -// } -// //发企业微信--------------------结束 -// } return qcCheckTaskIncomeMapper.selectQcCheckTaskIncomeList(qcCheckTaskIncome); } @@ -295,38 +271,43 @@ public class QcCheckTaskIncomeServiceImpl implements item.setCreateTime(nowDate); item.setCreateBy(createBy); item.setFactoryCode(factoryCode); - item.setStatus("N"); + item.setStatus("Y"); } int s = qcCheckTaskDetailMapper.addBatch(items); -// //发企业微信--------------------开始(跟班组无关) -// SysNoticeGroup noticeQo = new SysNoticeGroup(); -// noticeQo.setNoticeId(6L); -// List notices = qcCheckTaskIncomeMapper.getNotices(noticeQo); -// if(!CollectionUtils.isEmpty(notices)) { -// List wecharts = new ArrayList<>(); -// //去主库查微信id -// DynamicDataSourceContextHolder.push("master");// 这是数据源的key -// List userCodes = users.stream() -// .map(QcUserMaterialDTO::getUserCode) -// .collect(Collectors.toList()); -// List wxids = qcCheckTaskIncomeMapper.getWxId(userCodes); -// for (String wxid : wxids) { -// WechartDTO wechart0 = new WechartDTO(); -// wechart0.setUserId(wxid); -// wechart0.setText(notices.get(0).getNoticeContent()); -// wecharts.add(wechart0); -// } -// logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); -// if (!CollectionUtils.isEmpty(wecharts)) { -// new Thread(() -> { -// AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts); -// logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result)); -// -// }).start(); -// } -// //发企业微信--------------------结束 -// } + //发企业微信--------------------开始(跟班组无关) + SysNoticeGroup noticeQo = new SysNoticeGroup(); + noticeQo.setNoticeId(6L); + List notices = qcCheckTaskIncomeMapper.getNotices(noticeQo); + if(!CollectionUtils.isEmpty(notices)) { + Pattern p0= Pattern.compile("<[^>]+>"); + List wecharts = new ArrayList<>(); + //去主库查微信id + DynamicDataSourceContextHolder.push("master");// 这是数据源的key + List userCodes = users.stream() + .map(QcUserMaterialDTO::getUserCode) + .collect(Collectors.toList()); + List wxids = qcCheckTaskIncomeMapper.getWxId(userCodes); + for (String wxid : wxids) { + WechartDTO wechart0 = new WechartDTO(); + wechart0.setUserId(wxid); + String contentInfo = notices.get(0).getNoticeContent(); + contentInfo = contentInfo.replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n"); + Matcher m = p0.matcher(contentInfo); + contentInfo = m.replaceAll(""); + wechart0.setText(contentInfo); + wecharts.add(wechart0); + } + logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); + if (!CollectionUtils.isEmpty(wecharts)) { + new Thread(() -> { + AjaxResult result = remoteOpenService.sendWeChartMessage(wecharts); + logger.info("来料检验企业微信提醒结果:" + JSONObject.toJSONString(result)); + + }).start(); + } + //发企业微信--------------------结束 + } return s; } @@ -849,28 +830,21 @@ public class QcCheckTaskIncomeServiceImpl implements noticeQo.setNoticeId(9L); List notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo); if(!CollectionUtils.isEmpty(notices)) { + Pattern p= Pattern.compile("<[^>]+>"); List wecharts = new ArrayList<>(); -// //去主库查微信id -// DynamicDataSourceContextHolder.push("master");// 这是数据源的key -// List userCodes = notices.stream() -// .map(SysNoticeGroup::getUserCode) -// .collect(Collectors.toList()); - //Map wxidsMap = qcCheckTaskIncomeMapper.getWxIdMap(userCodes); for (SysNoticeGroup noticedto : notices) { -// SysUser sysUser = wxidsMap.get(noticedto.getUserCode()); -// if (sysUser != null) { WechartDTO wechart0 = new WechartDTO(); wechart0.setUserId(noticedto.getWxId()); String contentInfo = noticedto.getNoticeContent(); - contentInfo = contentInfo.replace("${materialCode}", qcCheckTaskIncome.getMaterialCode()) - .replace("${materialName}", qcCheckTaskIncome.getMaterialName()) - //.replace("${incomeBatchNo}", qcCheckTaskIncome.getIncomeBatchNo()) - //.replace("${orderNo}", qcCheckTaskIncome.getOrderNo()) - ; + contentInfo = contentInfo.replace("${materialCode}", qcCheckTaskIncome.getMaterialCode()+"\n") + .replace("${materialName}", qcCheckTaskIncome.getMaterialName()+"\n") + .replace("${checkNo}", qcCheckTaskIncome.getCheckNo()+"\n") + .replace("${supplierName}", qcCheckTaskIncome.getSupplierName()+"\n") + .replace("${quality}", qcCheckTaskIncome.getQuality()+"\n"); + Matcher m = p.matcher(contentInfo); + contentInfo = m.replaceAll(""); wechart0.setText(contentInfo); wecharts.add(wechart0); - //} - } logger.info("来料检验企业微信提醒请求:" + JSONObject.toJSONString(wecharts)); if (!CollectionUtils.isEmpty(wecharts)) { diff --git a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java index 91f224bd..21ebcbbd 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/controller/WmsToWCSmissionController.java @@ -133,6 +133,22 @@ public class WmsToWCSmissionController { String result = odsProcureOrderService.ArrivalRegistration(odsProcureOrder); return success(result); } + + + + /** + * 到货登记--用的于查询,,入参--采购单,物料,行项目 + * @param odsProcureOrder + * @return + */ + @PostMapping("/selectArrivalRegistration") + public AjaxResult selectArrivalRegistration(@RequestBody OdsProcureOrder odsProcureOrder) { +// odsProcureOrderService.PurchaseOrderdeliPdas(odsProcureOrder); +// return success(); + OdsProcureOrder order = odsProcureOrderService.selectArrivalRegistration(odsProcureOrder); + return success(order); + } + /** * 手持 --包材采购单采购收货查询总共已经收货数量 */ @@ -573,4 +589,7 @@ public class WmsToWCSmissionController { return success(odsProductEmbryoInventoryCorrelationList); } + + + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOrder.java b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOrder.java index 9d4f895e..5b5ae668 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOrder.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/domain/OdsProcureOrder.java @@ -27,6 +27,28 @@ public class OdsProcureOrder extends BaseEntity { @Excel(name = "工厂编码") private String factoryCode; List list; + /** + * 已登记数量 + */ + + private BigDecimal operationNumber; + private BigDecimal czNumber; + + public BigDecimal getCzNumber() { + return czNumber; + } + + public void setCzNumber(BigDecimal czNumber) { + this.czNumber = czNumber; + } + + public BigDecimal getOperationNumber() { + return operationNumber; + } + + public void setOperationNumber(BigDecimal operationNumber) { + this.operationNumber = operationNumber; + } public List getList() { return list; diff --git a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOrderMapper.java b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOrderMapper.java index 40e8581a..dad24ecb 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOrderMapper.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/mapper/OdsProcureOrderMapper.java @@ -64,4 +64,6 @@ public interface OdsProcureOrderMapper { String selectBaseSupplier(OdsProcureOrder odsProcureOrder); List selectOdsProcureOrderAlreadyList(OdsProcureOrder odsProcureOrder); + + void updateOdsProcureOrderAddOperationNumber(OdsProcureOrder odsProcureOrder); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java index 0e5e8d46..fb780109 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/IOdsProcureOrderService.java @@ -99,4 +99,6 @@ public interface IOdsProcureOrderService { String PurchaseOrderdeliPdaConfirm(OdsProcureOrder odsProcureOrder); String ArrivalRegistration(OdsProcureOrder odsProcureOrder); + + OdsProcureOrder selectArrivalRegistration(OdsProcureOrder odsProcureOrder); } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java index abbf8a09..52db3a3f 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/OdsProcureOrderServiceImpl.java @@ -733,32 +733,44 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService { OdsProcureOrder order=new OdsProcureOrder(); order.setProcureCode(odsProcureOrder.getProcureCode()); order.setActive("1"); - List orderList= odsProcureOrderMapper.selectOdsProcureOrderList(order); - for (OdsProcureOrder order1:orderList){ - //查询这次收货信息----生成质检任务------- //插入检验集计划 - QcCheckTaskIncomeDTO qcCheckTaskIncomeDTO = new QcCheckTaskIncomeDTO(); - qcCheckTaskIncomeDTO.setCheckLoc("mjtest"); - qcCheckTaskIncomeDTO.setCheckType("checkTypeLL"); + OdsProcureOrder order1= odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID()); + + //查询这次收货信息----生成质检任务------- //插入检验集计划 + QcCheckTaskIncomeDTO qcCheckTaskIncomeDTO = new QcCheckTaskIncomeDTO(); + qcCheckTaskIncomeDTO.setCheckLoc("mjtest"); + qcCheckTaskIncomeDTO.setCheckType("checkTypeLL"); // qcCheckTaskIncomeDTO.setCheckManCode("mobile"); // qcCheckTaskIncomeDTO.setCheckManName("手持测试用户"); - qcCheckTaskIncomeDTO.setSupplierCode(order1.getSupplierCode()); - String name = odsProcureOrderMapper.selectBaseSupplier(order1); - qcCheckTaskIncomeDTO.setSupplierName(name); - qcCheckTaskIncomeDTO.setOrderType("8040");//包材固定码 - qcCheckTaskIncomeDTO.setUnit(order1.getUnit()); - qcCheckTaskIncomeDTO.setFactoryCode(odsProcureOrder.getFactoryCode()); - qcCheckTaskIncomeDTO.setQuality(order1.getPlanNumber()); - qcCheckTaskIncomeDTO.setMaterialCode(order1.getMaterialCode()); - qcCheckTaskIncomeDTO.setMaterialName(order1.getMaterialDesc()); - // qcCheckTaskIncomeDTO.setIncomeBatchNo(order.getUserDefined2()); - qcCheckTaskIncomeDTO.setOrderNo(order1.getProcureCode()); - qcCheckTaskIncomeDTO.setIncomeTime(new Date()); - remoteQualityService.createIncomeTask(qcCheckTaskIncomeDTO); + qcCheckTaskIncomeDTO.setSupplierCode(order1.getSupplierCode()); + String name = odsProcureOrderMapper.selectBaseSupplier(order1); + qcCheckTaskIncomeDTO.setSupplierName(name); + qcCheckTaskIncomeDTO.setOrderType("8040");//包材固定码 + qcCheckTaskIncomeDTO.setUnit(order1.getUnit()); + qcCheckTaskIncomeDTO.setFactoryCode(odsProcureOrder.getFactoryCode()); + qcCheckTaskIncomeDTO.setQuality(odsProcureOrder.getCzNumber());//操作数量 + qcCheckTaskIncomeDTO.setMaterialCode(order1.getMaterialCode()); + qcCheckTaskIncomeDTO.setMaterialName(order1.getMaterialDesc()); + // qcCheckTaskIncomeDTO.setIncomeBatchNo(order.getUserDefined2()); + qcCheckTaskIncomeDTO.setOrderNo(order1.getProcureCode()); + qcCheckTaskIncomeDTO.setIncomeTime(new Date()); + R ruslt= remoteQualityService.createIncomeTask(qcCheckTaskIncomeDTO); +// 成功后修改-- + if (ruslt.getCode()==200){//成功 + odsProcureOrderMapper.updateOdsProcureOrderAddOperationNumber(odsProcureOrder); + }else { + result="操作失败"; } -// return result; } + @Override + public OdsProcureOrder selectArrivalRegistration(OdsProcureOrder odsProcureOrder) { + //采购单,物料,行项目 + DynamicDataSourceContextHolder.push("ds_" + odsProcureOrder.getFactoryCode()); + OdsProcureOrder order= odsProcureOrderMapper.selectOdsProcureOrderByID(odsProcureOrder.getID()); + return order; + } + public String DesignatedPalletOutboundWCS(WMSDesignatedPalle wmsDesignatedPalle) { // 定义请求的URL地址 String url = "http://192.168.202.37:9001/api/v1/ReceiveMesMsg/packingMaterialsOutBoundByPallet"; diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOrderMapper.xml index 562f6911..9931f297 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/OdsProcureOrderMapper.xml @@ -36,10 +36,11 @@ + - select Site_code, ID, Procure_Code, Material_Code, Material_Desc, Plan_Date, Plan_Number, Unit,COALESCE(Reality_Number, 0) Reality_Number, Order_Status, User_Defined1, User_Defined2, User_Defined3, User_Defined4, User_Defined5, User_Defined6, User_Defined7, User_Defined8, User_Defined9, User_Defined10, User_Defined11, Supplier_Code, Supplier_Name, Remark, Create_By, Create_Date, Last_Update_By, Last_Update_Date, Active, Enterprise_Id, Enterprise_Code from ods_procure_order + select Site_code, ID, Procure_Code, Material_Code, Material_Desc, Plan_Date, Plan_Number, Unit,COALESCE(Reality_Number, 0) Reality_Number, Order_Status, User_Defined1, User_Defined2, User_Defined3, User_Defined4, User_Defined5, User_Defined6, User_Defined7, User_Defined8, User_Defined9, User_Defined10, User_Defined11, Supplier_Code, Supplier_Name, Remark, Create_By, Create_Date, Last_Update_By, Last_Update_Date, Active, Enterprise_Id, Enterprise_Code, COALESCE(Operation_Number, 0) Operation_Number from ods_procure_order + + update ods_procure_order + SET Operation_Number = COALESCE(Operation_Number, 0) + #{czNumber}, + Last_Update_By = #{lastUpdateBy}, + Last_Update_Date = getdate() + where ID = #{ID} + diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/PowderChargeOrderMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/PowderChargeOrderMapper.xml index e86250d6..0183981d 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/PowderChargeOrderMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/PowderChargeOrderMapper.xml @@ -214,6 +214,6 @@ where ID=#{ID} update ods_raw_storage_news set storage_amount =storage_amount- #{realityNumber}, - gmt_modified = now() + gmt_modified = getdate() where material_code=#{materialCode} AND wl_code=#{wlCode} diff --git a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsMapper.xml b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsMapper.xml index 401c203a..d6e2ca1b 100644 --- a/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsMapper.xml +++ b/op-modules/op-wms/src/main/resources/mapper/wms/WmsOdsEmStorageNewsMapper.xml @@ -250,7 +250,7 @@ update wms_ods_em_storage_news set storage_amount = IFNULL(storage_amount, 0) - #{amount}, - gmt_modified=now() + gmt_modified=getdate() where wh_code=#{whCode} and wl_code=#{wlCode} and material_code=#{materialCode}