Merge remote-tracking branch 'origin/master'

master
Yangwl 8 months ago
commit 4b0ba99444

@ -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<SysNoticeGroup> getNoticesGroup(SysNoticeGroup noticeQo);
}

@ -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<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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();

@ -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<EquOrderDetail> 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<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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();
}
//发企业微信--------------------结束
}
}
// 如果不存在未达标信息

@ -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<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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<String> 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<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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("报修审核后,企业微信发送维修信息成功!");
}
/**
*
*

@ -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<SysNoticeGroup> notices = equRepairOrderMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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;
}

@ -342,4 +342,17 @@
where source_id = #{sourceId}
</select>
<select id="getNoticesGroup" resultType="com.op.system.api.domain.SysNoticeGroup">
select sng.notice_id noticeId,
sn.notice_title noticeTitle,
sn.notice_type noticeType,
sn.notice_content noticeContent,
btu.user_name userCode,
btu.wx_id wxId
from sys_notice_group sng
left join sys_notice sn on sng.notice_id = sn.notice_id
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId}
</select>
</mapper>

@ -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());
}
}
}

@ -162,4 +162,12 @@ public interface MesReportWorkMapper {
int deleteReport(String reportCode);
int deleteReportConsume(String reportCode);
List<MesReportWork> getSapWorkOrderByReport(String reportCode);
MesReportWork getPreReportWork(MesReportWork mesReportWork);
void updatePreReportAttr1(MesReportWork workOrder);
MesReportWork getReportWorkHzAttr1(MesReportWork mesReportWork);
}

@ -129,4 +129,6 @@ public interface IMesReportWorkService {
List<DynamicColumnVo> getMachineProductionTitle(MesMachineReport mesMachineReport);
int deleteReportNow(String reportCode);
R preReportRow(MesReportWork mesReportWork);
}

@ -42,4 +42,6 @@ public interface IWCSInterfaceService {
Map dryRoomDataCarousel(BoardDTO boardDTO);
AjaxResult changeTransferResultTask();
R prReportWork(MesReportWork mesReportWork);
}

@ -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<MesReportWork> 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<workOrders.size();n++){
MesReportWork workOrder = workOrders.get(n);
mesReportWork.setUploadStatus("1");//除了1报工成功的都需要报工
mesReportWork.setProdType("prod");
mesReportWork.setWorkorderCode(workOrder.getWorkorderCode());
mesReportWork.setMachineCode(workOrder.getMachineCode());
MesReportWork sHzWorks = mesReportWorkMapper.getPreReportWork(mesReportWork);
if (sHzWorks == null) {
return R.fail(workOrder.getWorkorderCode()+"未查询到报工单");
}
if(n == (workOrders.size()-2)){
gamng = sHzWorks.getQuantityFeedback();
}
if(n == (workOrders.size()-1)){
sHzWorks.setQuantityFeedback(gamng);
}
//三层以上工单报工
logger.info("==========================三层(第"+n+"层)以上工单("+sHzWorks.getWorkorderCodeSap()+")预报工开始");
sHzWorks.setMachineCode(workOrder.getMachineCode());
sapRson = this.preReportToSap(sHzWorks);
logger.info("==========================三层(第"+n+"层)以上工单("+sHzWorks.getWorkorderCodeSap()+")预报工结束:"
+ JSONObject.toJSONString(sapRson));
if (sapRson.getCode() == 200) {
try {
Thread.sleep(3000);
} catch (Exception e) {
e.printStackTrace();
}
}else{
//报工不成功跳出循环
break;
}
}
}
return sapRson;
}
/**
*
* @param workOrder
@ -495,7 +633,7 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
}
sapRFW.setLt_hwList(lt_hwList);
sapRFW.setAnzma(workOrder.getSapCode());//产线编号
sapRFW.setRemark(workOrder.getRemark());//产线编号
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());
@ -513,6 +651,55 @@ public class IWCInterfaceServiceImpl implements IWCSInterfaceService {
// return R.ok();//测试
}
/**
*
* @param workOrder
* @return
*/
private R preReportToSap(MesReportWork workOrder) {
Date nowTime = DateUtils.getNowDate();
SapRFW sapRFW = new SapRFW();
sapRFW.setAufnr(workOrder.getWorkorderCodeSap());//虚拟工单号
sapRFW.setGamng(workOrder.getQuantityFeedback().toString());//报工数量
SapRFW.lt_gs ltgs = new SapRFW.lt_gs();//生产订单报工工时修改
ltgs.setConf_activity1(workOrder.getSac1());//机器
ltgs.setConf_activity2(workOrder.getSac2());//人工
ltgs.setConf_activity3(workOrder.getSac1());//折旧
ltgs.setConf_activity4(workOrder.getSac2());//其它
// ltgs.setConf_activity5(workOrder.getSac5());
// ltgs.setConf_activity6(workOrder.getSac6());
sapRFW.setLt_gs(ltgs);
List<SapRFW.lt_hw> lt_hwList = new ArrayList<>();
MesReportWorkConsume consumeqo = new MesReportWorkConsume();
consumeqo.setWorkorderCode(workOrder.getWorkorderCode());
consumeqo.setRecoil("X");
consumeqo.setMachineCode(workOrder.getMachineCode());
// List<MesReportWorkConsume> 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<String> tables) {
DynamicDataSourceContextHolder.push(poolName);// 这是数据源的key

@ -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<Map<String, Object>> getMachineProductionList(MesMachineReport mesMachineReport) {

@ -23,7 +23,8 @@
</resultMap>
<sql id="selectMesLineVo">
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
</sql>
<select id="selectMesLineList" parameterType="MesLine" resultMap="MesLineResult">

@ -564,7 +564,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
mrw.create_time createTime,
pow.workorder_code_sap workorderCodeSap,
mrw.remark,mrw.report_code reportCode,
mrw.machine_code machineCode
mrw.machine_code machineCode,
mrw.attr1,mrw.upload_status uploadStatus
from mes_report_work mrw
left join pro_order_workorder pow on mrw.workorder_code = pow.workorder_code
where mrw.del_flag='0' and pow.del_flag = '0'
@ -618,7 +619,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
from
mes_report_work
where upload_status != #{uploadStatus} and prod_type = #{prodType}
and workorder_code = #{workorderCode} and del_flag='0'
and workorder_code = #{workorderCode} and del_flag='0'<!-- and attr1 != '1' attr1是预报工-->
<if test='machineCode!=""'>
and machine_code = #{machineCode}
</if>
@ -628,6 +629,41 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
left join base_equipment equ on equ.equipment_code = ow.workorder_name
where ow.del_flag='0' and equ.del_flag='0'
</select>
<select id="getReportWorkHzAttr1" resultType="com.op.mes.domain.MesReportWork">
select
ow.workorder_code workorderCode,
ow.workorder_code_sap workorderCodeSap,
mrw.quantity_feedback quantityFeedback,
mrw.product_code productCode,
mrw.product_name productName,
mrw.sac1,
mrw.sac2,
mrw.remark,
equ.sap_code sapCode
from (
select top 1
workorder_code,
0 quantity_feedback,
0 sac1,
0 sac2,
product_code,
product_name,
remark
from
mes_report_work
where upload_status != #{uploadStatus} and prod_type = #{prodType}
and workorder_code = #{workorderCode} and del_flag='0' and attr1 = '1'<!--attr1是预报工-->
<if test='machineCode!=""'>
and machine_code = #{machineCode}
</if>
group by workorder_code,product_code,product_name,remark
) mrw
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code
left join base_equipment equ on equ.equipment_code = ow.workorder_name
where ow.del_flag='0' and equ.del_flag='0'
</select>
<select id="selectMesReportWorkList_S" parameterType="MesReportWork" resultMap="MesReportWorkResult">
SELECT
mrw.machine_name,
@ -786,8 +822,52 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="getUploadStatusByReportCode" resultType="java.lang.String">
select top 1 upload_status from mes_report_work where report_code = #{reportCode}
</select>
<select id="getSapWorkOrderByReport" resultType="com.op.mes.domain.MesReportWork">
select pow.workorder_code_sap workorderCodeSap,
pow.workorder_code workorderCode,
pow.factory_code factoryCode,
pow.product_code productCode,
mrw.machine_code machineCode,
mrw.report_code reportCode
from mes_report_work mrw
left join pro_order_workorder pow on mrw.workorder_code = pow.workorder_code
where mrw.report_code = #{reportCode} and pow.del_flag = '0'
order by pow.order_code
</select>
<select id="getPreReportWork" resultType="com.op.mes.domain.MesReportWork">
select
ow.workorder_code workorderCode,
ow.workorder_code_sap workorderCodeSap,
mrw.quantity_feedback quantityFeedback,
mrw.product_code productCode,
mrw.product_name productName,
mrw.sac1,
mrw.sac2,
mrw.remark,
mrw.report_code reportCode,
equ.sap_code sapCode
from (
select
workorder_code,
quantity_feedback quantity_feedback,
work_time sac1,
work_time*use_man sac2,
product_code,
product_name,
remark,report_code
from
mes_report_work
where upload_status != #{uploadStatus} and prod_type = #{prodType}
and report_code = #{reportCode} and del_flag='0'
and workorder_code = #{workorderCode}
and machine_code = #{machineCode}
) mrw
left join pro_order_workorder ow on mrw.workorder_code = ow.workorder_code
left join base_equipment equ on equ.equipment_code = ow.workorder_name
where ow.del_flag='0' and equ.del_flag='0'
</select>
<insert id="insertMesReportWork" parameterType="MesReportWork">
<insert id="insertMesReportWork" parameterType="MesReportWork">
insert into mes_report_work
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">id,</if>
@ -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}
</foreach>
@ -986,6 +1067,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="item.reportCode != null">and report_code = #{item.reportCode}</if>
</foreach>
</update>
<update id="updatePreReportAttr1">
update mes_report_work set attr1 = #{attr1} where report_code = #{reportCode}
</update>
<delete id="deleteMesReportWorkById" parameterType="String">
update mes_report_work set del_flag = '1' where id = #{id}

@ -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<SysNoticeGroup> getNoticesGroup(SysNoticeGroup noticeQo);
EquEquipmentDTO selectEquipmentDetailByEquipmentCode(String equipmentCode);
}

@ -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<SysNoticeGroup> notices = openMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
List<WechartDTO> wecharts = new ArrayList<>();
List<String> 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");
}
//替换掉<p>标签
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<WechartDTO> 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));

@ -386,4 +386,23 @@
</foreach>
</insert>
<select id="getNoticesGroup" resultType="com.op.system.api.domain.SysNoticeGroup">
select sng.notice_id noticeId,
sn.notice_title noticeTitle,
sn.notice_type noticeType,
sn.notice_content noticeContent,
btu.user_name userCode,
btu.wx_id wxId
from sys_notice_group sng
left join sys_notice sn on sng.notice_id = sn.notice_id
left join base_team_user btu on sng.group_code = btu.team_code
where sng.notice_id = #{noticeId}
</select>
<select id="selectEquipmentDetailByEquipmentCode" parameterType="String" resultType="com.op.system.api.domain.device.EquEquipmentDTO">
select equipment_id, equipment_code, equipment_name, equipment_brand, equipment_spec, equipment_type_id, equipment_type_code, equipment_type_name, workshop_id, workshop_code, workshop_name, status, remark, attr1, attr2, attr3, attr4, create_by, create_time, update_by, update_time, workshop_section, equipment_location, hourly_unit_price, equipment_barcode, equipment_barcode_image, manufacturer, supplier, use_life, buy_time, asset_original_value, net_asset_value, asset_head, fixed_asset_code, department, unit_working_hours, plc_ip, plc_port, del_flag, sap_asset,equipment_status,equipment_category from base_equipment
where equipment_code = #{equipmentCode}
and del_flag = '0'
</select>
</mapper>

@ -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<String> selectCodeByWorkOrderIds(String[] workorderIds);
public int deleteBatch(String[] workorderIds);
List<String> checkBatchCodeByWorkOrderIds(@Param("workorderIds")String[] workorderIds,@Param("newbatchs") List<String> newbatchs);
}

@ -634,13 +634,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
// 校验批次编号是否存在(重复问题)
String[] workorderIds = (String[]) ids.toArray(new String[ids.size()]);
List<String> 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<String> newbatchs = new ArrayList<>();
for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) {
newbatchs.add(splitOrderDTO.getFormFields().get(j).getBatchCode());
}
List<String> batchCodes = proOrderWorkorderBatchMapper.checkBatchCodeByWorkOrderIds(workorderIds,newbatchs);
if (!CollectionUtils.isEmpty(batchCodes)) {
checkout = false;
}
//校验各工序设备是否已选择
List<CascaderDTO> processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode());
@ -957,13 +957,13 @@ public class ProOrderWorkorderServiceImpl implements IProOrderWorkorderService {
// 校验批次编号是否存在(重复问题)
String[] workorderIds = (String[]) ids.toArray(new String[ids.size()]);
List<String> 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<String> newbatchs = new ArrayList<>();
for (int j = 0; j < splitOrderDTO.getFormFields().size(); j++) {
newbatchs.add(splitOrderDTO.getFormFields().get(j).getBatchCode());
}
List<String> batchCodes = proOrderWorkorderBatchMapper.checkBatchCodeByWorkOrderIds(workorderIds,newbatchs);
if (!CollectionUtils.isEmpty(batchCodes)) {
checkout = false;
}
//校验各工序设备是否已选择
List<CascaderDTO> processes = proOrderMapper.getRouteProcess(splitOrderDTO.getRouteCode());

@ -70,6 +70,17 @@
</foreach>
</select>
<select id="checkBatchCodeByWorkOrderIds" resultType="java.lang.String">
select batch_code
from pro_order_workorder_batch
where del_flag = '0' and workorder_id in
<foreach item="workorderId" collection="workorderIds" open="(" separator="," close=")">
#{workorderId}
</foreach> and batch_code in
<foreach item="batchcode" collection="newbatchs" open="(" separator="," close=")">
#{batchcode}
</foreach>
</select>
<insert id="insertProOrderWorkorderBatch" parameterType="ProOrderWorkorderBatch">
insert into pro_order_workorder_batch

@ -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<QcCheckUnqualifiedService> implements
public List<QcCheckTaskIncome> selectQcCheckTaskIncomeList(QcCheckTaskIncome qcCheckTaskIncome) {
qcCheckTaskIncome.setDelFlag("0");
qcCheckTaskIncome.setTypeCode("material");
// //发企业微信--------------------开始(跟班组无关)
// SysNoticeGroup noticeQo = new SysNoticeGroup();
// noticeQo.setNoticeId(6L);
// List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
// if(!CollectionUtils.isEmpty(notices)) {
// List<WechartDTO> wecharts = new ArrayList<>();
//
// List<String> 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<QcCheckUnqualifiedService> 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<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
// if(!CollectionUtils.isEmpty(notices)) {
// List<WechartDTO> wecharts = new ArrayList<>();
// //去主库查微信id
// DynamicDataSourceContextHolder.push("master");// 这是数据源的key
// List<String> userCodes = users.stream()
// .map(QcUserMaterialDTO::getUserCode)
// .collect(Collectors.toList());
// List<String> 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<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNotices(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
Pattern p0= Pattern.compile("<[^>]+>");
List<WechartDTO> wecharts = new ArrayList<>();
//去主库查微信id
DynamicDataSourceContextHolder.push("master");// 这是数据源的key
List<String> userCodes = users.stream()
.map(QcUserMaterialDTO::getUserCode)
.collect(Collectors.toList());
List<String> 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<QcCheckUnqualifiedService> implements
noticeQo.setNoticeId(9L);
List<SysNoticeGroup> notices = qcCheckTaskIncomeMapper.getNoticesGroup(noticeQo);
if(!CollectionUtils.isEmpty(notices)) {
Pattern p= Pattern.compile("<[^>]+>");
List<WechartDTO> wecharts = new ArrayList<>();
// //去主库查微信id
// DynamicDataSourceContextHolder.push("master");// 这是数据源的key
// List<String> userCodes = notices.stream()
// .map(SysNoticeGroup::getUserCode)
// .collect(Collectors.toList());
//Map<String, SysUser> 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)) {

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

@ -27,6 +27,28 @@ public class OdsProcureOrder extends BaseEntity {
@Excel(name = "工厂编码")
private String factoryCode;
List<OdsProcureOrder> 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<OdsProcureOrder> getList() {
return list;

@ -64,4 +64,6 @@ public interface OdsProcureOrderMapper {
String selectBaseSupplier(OdsProcureOrder odsProcureOrder);
List<OdsProcureOrder> selectOdsProcureOrderAlreadyList(OdsProcureOrder odsProcureOrder);
void updateOdsProcureOrderAddOperationNumber(OdsProcureOrder odsProcureOrder);
}

@ -99,4 +99,6 @@ public interface IOdsProcureOrderService {
String PurchaseOrderdeliPdaConfirm(OdsProcureOrder odsProcureOrder);
String ArrivalRegistration(OdsProcureOrder odsProcureOrder);
OdsProcureOrder selectArrivalRegistration(OdsProcureOrder odsProcureOrder);
}

@ -733,32 +733,44 @@ public class OdsProcureOrderServiceImpl implements IOdsProcureOrderService {
OdsProcureOrder order=new OdsProcureOrder();
order.setProcureCode(odsProcureOrder.getProcureCode());
order.setActive("1");
List<OdsProcureOrder> 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";

@ -36,10 +36,11 @@
<result property="Active" column="Active"/>
<result property="enterpriseId" column="Enterprise_Id"/>
<result property="enterpriseCode" column="Enterprise_Code"/>
<result property="operationNumber" column="Operation_Number"/>
</resultMap>
<sql id="selectOdsProcureOrderVo">
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
</sql>
<select id="selectOdsProcureOrderList" parameterType="OdsProcureOrder" resultMap="OdsProcureOrderResult">
@ -216,4 +217,11 @@
<include refid="selectOdsProcureOrderVo"/>
<![CDATA[ where Procure_Code = #{procureCode} and Active='1' AND Order_Status <> 0 ]]>
</select>
<update id="updateOdsProcureOrderAddOperationNumber" parameterType="OdsProcureOrder">
update ods_procure_order
SET Operation_Number = COALESCE(Operation_Number, 0) + #{czNumber},
Last_Update_By = #{lastUpdateBy},
Last_Update_Date = getdate()
where ID = #{ID}
</update>
</mapper>

@ -214,6 +214,6 @@
where ID=#{ID}
</update>
<update id="updateOdsRawStorageNews"> 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} </update>
</mapper>

@ -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}
</update>
<select id="selectWmsOdsEmStorageNewsByWlCode" resultMap="WmsOdsEmStorageNewsResult">

@ -235,7 +235,7 @@
set
Order_Status = #{orderStatus},
Reality_Number=#{realityNumber},
Last_Update_Date = now()
Last_Update_Date = getdate()
where Order_Code=#{orderCode}
</update>
<select id="selectProOrderWorkorder" resultType="com.op.wms.domain.ProOrderWorkorder">

Loading…
Cancel
Save