产前准备发消息

master
philip 4 years ago
parent 4af8faf814
commit a35da8e733

@ -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
@ -429,7 +443,6 @@ 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) {
@ -463,24 +476,22 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
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)) {
@ -489,14 +500,45 @@ public class ProdReadyTaskServiceImpl extends ServiceImpl<ProdReadyTaskMapper, P
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) {

@ -4,7 +4,7 @@ import com.foreverwin.mesnac.meapi.dto.SfcDto;
import com.foreverwin.mesnac.meapi.dto.WorkCenterDto;
import com.foreverwin.mesnac.meapi.model.Sfc;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
public interface PodTemplateService {
@ -18,7 +18,7 @@ public interface PodTemplateService {
void sfcComplete(Map<String, Object> map);
void sendErp(String sfc, String stepId, BigDecimal qty, BigDecimal scrapQty);
void sendErp(List<Map<String,Object>> mapList);
SfcDto getInfoBySfc(Sfc sfc);

@ -46,7 +46,9 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.rmi.RemoteException;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.*;
@ -232,8 +234,8 @@ public class PodTemplateServiceImpl implements PodTemplateService {
public void sfcComplete(Map<String, Object> map) {
List<SfcDto> sfcDtoList = (List<SfcDto>) map.get("sfcDtoList");
ObjectMapper mapper = new ObjectMapper();
sfcDtoList = mapper.convertValue(sfcDtoList, new TypeReference<List<SfcDto>>() {
});
sfcDtoList = mapper.convertValue(sfcDtoList, new TypeReference<List<SfcDto>>() {});
List<Map<String,Object>> postMapList=new ArrayList<>();
String resrce = (String) map.get("resrce");
if (sfcDtoList == null || sfcDtoList.size() < 1) {
throw new BaseException("作业列表不能为空");
@ -242,6 +244,7 @@ public class PodTemplateServiceImpl implements PodTemplateService {
throw new BaseException("资源不能为空");
}
for (SfcDto sfcDto:sfcDtoList){
Map<String,Object> postMap=new HashMap<>();
String site = CommonMethods.getSite();
String operation = sfcDto.getOperation();
Operation currentRevisionRef = operationService.getCurrentRevisionRef(site, operation);
@ -298,15 +301,26 @@ public class PodTemplateServiceImpl implements PodTemplateService {
paramMap.put("CATEGORY",Constants.INSPECTION_TYPE_S);
inspectionTaskService.createTask(paramMap);
}
//计算工时
LocalDateTime startTime = sfcService.getSfcStartTime(HandleEnum.SFC.getHandle(site, sfc));
long workHourSeconds = Duration.between(startTime, LocalDateTime.now()).getSeconds();
BigDecimal workHour = new BigDecimal(workHourSeconds).divide(BigDecimal.valueOf(3600), 2, RoundingMode.HALF_UP);
postMap.put("sfc",sfc);
postMap.put("stepId",stepId);
postMap.put("qty",qty);
postMap.put("scrapQty",BigDecimal.ZERO);
postMap.put("workHour",workHour);
postMapList.add(postMap);
sfcCrossService.completeAction(site, currentRevisionRef.getHandle(), resrce, sfcServiceById.getHandle(), qty);
//更改派工单状态
sfcDispatchCommonService.updateSfcDispatchStatus(site, CommonMethods.getUser(), dispatchNo, DispatchStatusEnum.COMPLETE.getCode());
//报工
//sendErp(sfc, stepId, qty,BigDecimal.ZERO);
} catch (Exception e) {
ExceptionUtil.throwException(e);
}
}
//报工
//sendErp(postMapList);
}
public void materialConsumption(String site, String operation, String sfcBo, String stepId, String resource) {
@ -399,13 +413,19 @@ public class PodTemplateServiceImpl implements PodTemplateService {
}
@Override
public void sendErp(String sfc, String stepId, BigDecimal qty, BigDecimal scrapQty) {
public void sendErp(List<Map<String,Object>> postMapList) {
//请求参数
ZprodordconfStruIn[] ins = new ZprodordconfStruIn[1];
for (int i=0;i<postMapList.size();i++){
Map<String, Object> map = postMapList.get(i);
String sfc = (String)map.get("sfc");
Sfc sfcServiceById = sfcService.getById(HandleEnum.SFC.getHandle(CommonMethods.getSite(),sfc));
String shopOrderBo = sfcServiceById.getShopOrderBo();
String shopOrder = StringUtil.trimHandle(shopOrderBo);
//请求参数
ZprodordconfStruIn[] ins = new ZprodordconfStruIn[1];
String stepId = (String)map.get("stepId");
BigDecimal qty = (BigDecimal) map.get("qty");
BigDecimal scrapQty = (BigDecimal)map.get("scrapQty");
BigDecimal workHour = (BigDecimal)map.get("workHour");
ZprodordconfStruIn struIn = new ZprodordconfStruIn();
//生产订单
struIn.setAufnr(shopOrder);
@ -417,22 +437,24 @@ public class PodTemplateServiceImpl implements PodTemplateService {
//报废数量
struIn.setXmnga(scrapQty);
//机器工时
struIn.setIsm01(BigDecimal.ZERO);
struIn.setIsm01(workHour);
//人工工时
struIn.setIsm02(BigDecimal.ZERO);
struIn.setIsm02(workHour);
struIn.setIsm03(BigDecimal.ZERO);
struIn.setIsm04(BigDecimal.ZERO);
struIn.setIsm05(BigDecimal.ZERO);
struIn.setIsm06(BigDecimal.ZERO);
ins[0] = struIn;
ins[i] = struIn;
}
TableOfZprodordconfStruInHolder inHolder = new TableOfZprodordconfStruInHolder(ins);
//返回对象
ZprodordconfStruOut[] outs = new ZprodordconfStruOut[1];
ZprodordconfStruOut struOut = new ZprodordconfStruOut();
struOut.setAufnr(shopOrder);
struOut.setVornr(stepId);
struOut.setAufnr("");
struOut.setVornr("");
struOut.setAueru("1");
struOut.setLmnga(new BigDecimal(1));
struOut.setRet("");
@ -455,10 +477,10 @@ public class PodTemplateServiceImpl implements PodTemplateService {
log.setHandle(UUID.randomUUID().toString());
log.setSite(CommonMethods.getSite());
log.setIntegrationType(IntegrationTypeConstant.ROUTER);
log.setCategory("SEND");
log.setCategory("REQUEST");
log.setIntegrationWay("ERP");
log.setIntegrationMethod("erpWebService.zmesProdordconf");
log.setParam(struIn.toString());
log.setParam(ins.toString());
log.setStatus(outHolder.value[1].getRet());
log.setResultMessage(outHolder.value[1].getMsg());
log.setTransactionId("");

Loading…
Cancel
Save