|
|
|
@ -19,11 +19,14 @@ import com.foreverwin.mesnac.common.model.PrintLog;
|
|
|
|
|
import com.foreverwin.mesnac.common.model.ProdReadyTask;
|
|
|
|
|
import com.foreverwin.mesnac.common.model.ProdReadyTaskDetail;
|
|
|
|
|
import com.foreverwin.mesnac.common.service.*;
|
|
|
|
|
import com.foreverwin.mesnac.common.util.ActiveMQUtil;
|
|
|
|
|
import com.foreverwin.mesnac.common.util.DateUtil;
|
|
|
|
|
import com.foreverwin.mesnac.common.util.StringUtil;
|
|
|
|
|
import com.foreverwin.mesnac.meapi.dto.BomComponentDto;
|
|
|
|
|
import com.foreverwin.mesnac.meapi.mapper.WorkCenterMapper;
|
|
|
|
|
import com.foreverwin.mesnac.meapi.model.*;
|
|
|
|
|
import com.foreverwin.mesnac.meapi.service.*;
|
|
|
|
|
import com.foreverwin.mesnac.meapi.util.StringUtils;
|
|
|
|
|
import com.foreverwin.modular.core.exception.BaseException;
|
|
|
|
|
import com.foreverwin.modular.core.exception.BusinessException;
|
|
|
|
|
import com.foreverwin.modular.core.util.CommonMethods;
|
|
|
|
@ -75,21 +78,32 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
|
|
|
|
|
@Autowired
|
|
|
|
|
private ProdReadyTaskMapper prodReadyTaskMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ResrceService resrceService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ProdReadyTaskDetailService prodReadyTaskDetailService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private SfcDispatchCommonService sfcDispatchCommonService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private BomComponentService bomComponentService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private WorkCenterMapper workCenterMapper;
|
|
|
|
|
@Autowired
|
|
|
|
|
private CustomFieldsService customFieldsService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MessageTypeService messageTypeService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ShopOrderService shopOrderService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private WorkCenterService workCenterService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private PrintLogService printLogService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ActiveMQUtil activeMQUtil;
|
|
|
|
|
@Autowired
|
|
|
|
|
private MessageService messageService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private NwaUserService nwaUserService;
|
|
|
|
|
@Autowired
|
|
|
|
|
private ItemService itemService;
|
|
|
|
|
@Autowired
|
|
|
|
@ -225,7 +239,7 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
|
|
|
|
|
lambdaQueryWrapper.eq(ProdReadyTask::getSfcDispatchBo, sfcDispatchBO);
|
|
|
|
|
lambdaQueryWrapper.orderByDesc(ProdReadyTask::getCreatedDateTime);
|
|
|
|
|
List<ProdReadyTask> list = list(lambdaQueryWrapper);
|
|
|
|
|
if (list.size() >0) {
|
|
|
|
|
if (list.size() > 0) {
|
|
|
|
|
ProdReadyTask prodReadyTask = list.get(0);
|
|
|
|
|
if (prodReadyTask.getStatus().equals(STATUS_CANCEL)) {
|
|
|
|
|
throw new BaseException("产前准备任务任务已取消");
|
|
|
|
@ -285,17 +299,17 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
|
|
|
|
|
returnMap = prodReadyTaskMapper.getToolDetail(site, LocaleContextHolder.getLocale().getLanguage(), dispatchNo);
|
|
|
|
|
} else {
|
|
|
|
|
//通过加工的零件号、设备类型、设备获取发布状态的工控程序
|
|
|
|
|
SfcDispatchDto sfcdispatch=new SfcDispatchDto();
|
|
|
|
|
sfcdispatch.setHandle(HandleEnum.SFC_DISPATCH.getHandle(site,dispatchNo));
|
|
|
|
|
SfcDispatchDto sfcdispatch = new SfcDispatchDto();
|
|
|
|
|
sfcdispatch.setHandle(HandleEnum.SFC_DISPATCH.getHandle(site, dispatchNo));
|
|
|
|
|
sfcdispatch = sfcDispatchCommonService.findSfcDispatchBySfc(sfcdispatch);
|
|
|
|
|
Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(site, sfcdispatch.getSfc()));
|
|
|
|
|
String itemBo = sfcServiceById.getItemBo();
|
|
|
|
|
JSONObject jsonObject = sendToDnc(StringUtil.trimHandle(itemBo), sfcdispatch.getResrce(), sfcdispatch.getResourceType());
|
|
|
|
|
Map<String, Object> map=new HashMap<>();
|
|
|
|
|
map.put("RESOURCE",sfcdispatch.getResrce());
|
|
|
|
|
map.put("RESOURCE_TYPE",sfcdispatch.getResourceType());
|
|
|
|
|
map.put("RESULT",jsonObject.get("RESULT"));
|
|
|
|
|
map.put("MESSAGE",jsonObject.get("MESSAGE"));
|
|
|
|
|
Map<String, Object> map = new HashMap<>();
|
|
|
|
|
map.put("RESOURCE", sfcdispatch.getResrce());
|
|
|
|
|
map.put("RESOURCE_TYPE", sfcdispatch.getResourceType());
|
|
|
|
|
map.put("RESULT", jsonObject.get("RESULT"));
|
|
|
|
|
map.put("MESSAGE", jsonObject.get("MESSAGE"));
|
|
|
|
|
returnMap.add(map);
|
|
|
|
|
}
|
|
|
|
|
return returnMap;
|
|
|
|
@ -429,21 +443,20 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
|
|
|
|
|
public void sendMsgJob(String site) {
|
|
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
|
|
LocalDateTime endTime = now.plusMinutes(30);
|
|
|
|
|
String user = CommonMethods.getUser();
|
|
|
|
|
//查找当前派工单的计划开始时间30分钟内的未准备完成的任务
|
|
|
|
|
List<ProdReadyTask> prodReadyTasks=prodReadyTaskMapper.getUnreadyTasks(site,now,endTime);
|
|
|
|
|
for(ProdReadyTask prodReadyTask : prodReadyTasks){
|
|
|
|
|
List<ProdReadyTask> prodReadyTasks = prodReadyTaskMapper.getUnreadyTasks(site, now, endTime);
|
|
|
|
|
for (ProdReadyTask prodReadyTask : prodReadyTasks) {
|
|
|
|
|
QueryWrapper<Message> messageQueryWrapper = new QueryWrapper<>();
|
|
|
|
|
messageQueryWrapper.eq(Message.OBJECT_BO,prodReadyTask.getHandle());
|
|
|
|
|
messageQueryWrapper.eq(Message.OBJECT_BO, prodReadyTask.getHandle());
|
|
|
|
|
List<Message> list = messageService.list(messageQueryWrapper);
|
|
|
|
|
if (!list.isEmpty()){
|
|
|
|
|
if (!list.isEmpty()) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
LambdaQueryWrapper<ProdReadyTaskDetail> lambdaQuery = new LambdaQueryWrapper<>();
|
|
|
|
|
lambdaQuery.eq(ProdReadyTaskDetail::getProdReadyTaskBo, prodReadyTask.getHandle());
|
|
|
|
|
List<ProdReadyTaskDetail> readyTaskDetails = prodReadyTaskDetailService.list(lambdaQuery);
|
|
|
|
|
for (ProdReadyTaskDetail prodReadyTaskDetail:readyTaskDetails){
|
|
|
|
|
if (prodReadyTaskDetail.getInspectionItem().equals(P01)){
|
|
|
|
|
for (ProdReadyTaskDetail prodReadyTaskDetail : readyTaskDetails) {
|
|
|
|
|
if (prodReadyTaskDetail.getInspectionItem().equals(P01)) {
|
|
|
|
|
Message message = new Message();
|
|
|
|
|
String uuid = UUID.randomUUID().toString();
|
|
|
|
|
message.setHandle(uuid);
|
|
|
|
@ -453,56 +466,85 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
|
|
|
|
|
message.setMessageType(MESSAGE_TYPE_WLZB);
|
|
|
|
|
//查询消息类型关联的用户组
|
|
|
|
|
String workCenter = prodReadyTask.getWorkCenter();
|
|
|
|
|
String userGroup=workCenter+"-"+MESSAGE_TYPE_WLZB;
|
|
|
|
|
String userGroup = workCenter + "-" + MESSAGE_TYPE_WLZB;
|
|
|
|
|
|
|
|
|
|
QueryWrapper<MessageTypeUserGroup> queryWrapper=new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(MessageTypeUserGroup.MESSAGE_TYPE_BO, new MessageTypeBOHandle(site,MESSAGE_TYPE_WLZB).getValue());
|
|
|
|
|
queryWrapper.eq(MessageTypeUserGroup.USER_GROUP_BO,new UserGroupBOHandle(site,userGroup).getValue());
|
|
|
|
|
QueryWrapper<MessageTypeUserGroup> queryWrapper = new QueryWrapper<>();
|
|
|
|
|
queryWrapper.eq(MessageTypeUserGroup.MESSAGE_TYPE_BO, new MessageTypeBOHandle(site, MESSAGE_TYPE_WLZB).getValue());
|
|
|
|
|
queryWrapper.eq(MessageTypeUserGroup.USER_GROUP_BO, new UserGroupBOHandle(site, userGroup).getValue());
|
|
|
|
|
List<MessageTypeUserGroup> messageTypeUserGroupList = messageTypeUserGroupService.list(queryWrapper);
|
|
|
|
|
if (messageTypeUserGroupList.isEmpty()){
|
|
|
|
|
if (messageTypeUserGroupList.isEmpty()) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
message.setSendUserGroup(userGroup);
|
|
|
|
|
message.setSendUser("");
|
|
|
|
|
message.setContent("");
|
|
|
|
|
message.setUpUserGroup("");
|
|
|
|
|
message.setUpUser("");
|
|
|
|
|
message.setUpMessageType("");
|
|
|
|
|
message.setUpDateTime(LocalDateTime.now());
|
|
|
|
|
message.setGrade(0.0D);
|
|
|
|
|
message.setResponseDateTime(LocalDateTime.now());
|
|
|
|
|
message.setNode("");
|
|
|
|
|
message.setStatus("");
|
|
|
|
|
message.setCreatedUser("");
|
|
|
|
|
message.setSendUser("JOB");
|
|
|
|
|
String sendMessage = this.formatMessage(prodReadyTask, MESSAGE_TYPE_WLZB, site);
|
|
|
|
|
message.setContent(sendMessage);
|
|
|
|
|
message.setUpUserGroup(null);
|
|
|
|
|
message.setUpUser(null);
|
|
|
|
|
message.setUpMessageType(null);
|
|
|
|
|
message.setUpDateTime(null);
|
|
|
|
|
message.setGrade(null);
|
|
|
|
|
message.setResponseDateTime(null);
|
|
|
|
|
message.setNode(null);
|
|
|
|
|
message.setStatus(Constants.STATUS_Y);
|
|
|
|
|
message.setCreatedUser("JOB");
|
|
|
|
|
message.setCreatedDateTime(LocalDateTime.now());
|
|
|
|
|
message.setModifiedUser("");
|
|
|
|
|
message.setModifiedUser("JOB");
|
|
|
|
|
message.setModifiedDateTime(LocalDateTime.now());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
List<NwaUser> nwaUsers = nwaUserService.checkUserGroup(site,abnormalMessage.getSendUserGroup());
|
|
|
|
|
List<NwaUser> nwaUsers = nwaUserService.checkUserGroup(site, userGroup);
|
|
|
|
|
StringBuilder sendUsers = new StringBuilder();
|
|
|
|
|
for (int i = 0; i < nwaUsers.size(); i++) {
|
|
|
|
|
if(i == (nwaUsers.size() - 1)){
|
|
|
|
|
if (i == (nwaUsers.size() - 1)) {
|
|
|
|
|
sendUsers.append(nwaUsers.get(i));
|
|
|
|
|
}else{
|
|
|
|
|
} else {
|
|
|
|
|
sendUsers.append(nwaUsers.get(i)).append("|");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
activeMQUtil.wechatSendMessage(sendUsers.toString(),abnormalMessage.getContent());
|
|
|
|
|
// }
|
|
|
|
|
messageService.saveOrUpdate(abnormalMessage);*/
|
|
|
|
|
|
|
|
|
|
messageService.save(message);
|
|
|
|
|
activeMQUtil.wechatSendMessage(sendUsers.toString(),sendMessage);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String formatMessage(ProdReadyTask prodReadyTask, String messageType, String site) {
|
|
|
|
|
//找到消息内容
|
|
|
|
|
String locale = LocaleContextHolder.getLocale().getLanguage();
|
|
|
|
|
MessageType messageTypeEntity = new MessageType();
|
|
|
|
|
messageTypeEntity.setSite(site);
|
|
|
|
|
messageTypeEntity.setMessageType(messageType);
|
|
|
|
|
QueryWrapper<MessageType> messageTypeQueryWrapper = new QueryWrapper<MessageType>();
|
|
|
|
|
messageTypeQueryWrapper.setEntity(messageTypeEntity);
|
|
|
|
|
MessageType sendMessageType = messageTypeService.getOne(messageTypeQueryWrapper);
|
|
|
|
|
if (sendMessageType == null) {
|
|
|
|
|
throw new BaseException("异常提报时找不到要发送的消息类型");
|
|
|
|
|
}
|
|
|
|
|
//格式化消息
|
|
|
|
|
String body = sendMessageType.getBody();
|
|
|
|
|
//替换消息类型中的参数
|
|
|
|
|
Map<String, String> messageMap = new HashMap<>();
|
|
|
|
|
//根据车间找到对应车间的描述
|
|
|
|
|
WorkCenter workCenter = workCenterMapper.findWorkCenterDescriptionByWorkCenter(site, prodReadyTask.getWorkCenter(), locale);
|
|
|
|
|
//根据资源找到对应的产线的描述
|
|
|
|
|
Resrce byResrce = resrceService.findByResrce(prodReadyTask.getResrce());
|
|
|
|
|
Item selectCurrent = itemService.selectCurrent(site, prodReadyTask.getItem());
|
|
|
|
|
//项目号
|
|
|
|
|
String item = selectCurrent.getItem() + "/" + selectCurrent.getDescription();
|
|
|
|
|
messageMap.put("WORKCENTER", workCenter.getDescription());
|
|
|
|
|
messageMap.put("RESOURCE", byResrce + "/" + byResrce.getDescription());
|
|
|
|
|
messageMap.put("ITEM", item);
|
|
|
|
|
messageMap.put("SHOPORDER", prodReadyTask.getShopOrder());
|
|
|
|
|
messageMap.put("SFC", prodReadyTask.getSfc());
|
|
|
|
|
|
|
|
|
|
//格式化之后的消息
|
|
|
|
|
return StringUtils.format(body, messageMap);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public JSONObject sendToDnc(String item, String resource, String resourceType) {
|
|
|
|
|
String site = CommonMethods.getSite();
|
|
|
|
|
String queue="resource.check.process";
|
|
|
|
|
JSONObject messageObject=new JSONObject();
|
|
|
|
|
String queue = "resource.check.process";
|
|
|
|
|
JSONObject messageObject = new JSONObject();
|
|
|
|
|
String tranid = UUID.randomUUID().toString();
|
|
|
|
|
messageObject.put("TRANID", tranid);
|
|
|
|
|
String dateTime = DateUtil.formatDate(new Date());
|
|
|
|
|