Merge branch 'uat-temp-wj-2412270000-44586' into uat

tags/yfai-pcn-ext-v2.7
王杰 4 months ago
commit f0a63f47fb

@ -9,6 +9,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPartContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesPartInspectionInputModel;
import cn.estsh.i3plus.mes.pcn.actor.shipping.dispatch.IFsmRouteDataService;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
@ -24,6 +25,7 @@ import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import com.google.common.base.Objects;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -59,6 +61,9 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
@Autowired
private IMesProductionDispatchContextStepService mesProductionDispatchContextStepService;
@Autowired
private IFsmRouteDataService fsmRouteDataService;
private static final Map<String, ActorRef> refMap = new ConcurrentHashMap<>(200);
@Override
@ -68,25 +73,35 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
StationResultBean resultBean = new StationResultBean();
// 获取加工结果
String result = mesProductionDispatchContextStepService.getProductResultContext(reqBean);
String productResult = mesProductionDispatchContextStepService.getProductResultContext(reqBean);
// 如果是报废或者可疑需要编辑条码状态为不合格、并且nc判定需要新增一条记录
Integer resultInt;
try {
resultInt = StringUtils.isEmpty(result) ? MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() : Integer.valueOf(result);
resultInt = StringUtils.isEmpty(productResult) ? MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue() : Integer.valueOf(productResult);
} catch (Exception e) {
resultInt = MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue();
}
if (resultInt.compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) == 0) return stepResult;
// 获取条码列表
List<MesProductionPsOutContext> mesProduceSns = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
//获取上下文产出条码数据信息集合
List<MesProductionPsOutContext> productionPsOutContextList = mesProductionDispatchContextStepService.getProductionPsOutContext(reqBean);
List<MesProductionPartContext> productionPartContexts = mesProductionDispatchContextStepService.getProductionPartContext(reqBean);
//获取上下文产出零件信息
List<MesProductionPartContext> productionPartContextList = mesProductionDispatchContextStepService.getProductionPartContext(reqBean);
// 保存加工异常记录(NC判断记录)
saveProductResultException(reqBean, mesProduceSns,productionPartContexts, result);
try {
// 保存加工异常记录(NC判断记录)
saveProductResultException(reqBean, productionPsOutContextList, productionPartContextList, resultInt);
} catch (ImppBusiException e) {
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("加工[%s] NC信息保存失败: %s", MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(resultInt), e.getErrorDetail()));
} catch (Exception e) {
String webMsg = String.format("加工[%s] NC信息保存失败: %s", MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(resultInt), fsmRouteDataService.handleFsmCfgOrDefault(reqBean, MesPcnEnumUtil.FSM_CFG.FSM_EXCEPTION_MSG.getCode()));
this.sendMessage(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.ERROR.getValue()), webMsg, MesPcnEnumUtil.STATION_BUSI_TYPE.MESSAGE, MesPcnEnumUtil.STATION_DATA_TYPE.EXP_TEXT);
this.cacheException(reqBean, reqBean.getStepName(), webMsg, e, true);
foundExThrowNoShowMsg();
}
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, String.format("加工[%s] NC信息保存成功!", MesExtEnumUtil.PRODUCE_QC_STATUS.valueOfDescription(resultInt)));
}
@ -94,13 +109,13 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
/**
*
* @param reqBean
* @param mesProduceSns
* @param productionPsOutContextList
*/
private void saveProductResultException(StationRequestBean reqBean, List<MesProductionPsOutContext> mesProduceSns, List<MesProductionPartContext> productionPartContexts, String result) {
private void saveProductResultException(StationRequestBean reqBean, List<MesProductionPsOutContext> productionPsOutContextList, List<MesProductionPartContext> productionPartContextList, Integer productResult) {
String defectTypeCode = MesEnumUtil.DEFECT_TYPE_CODE.DETERMIND.getValue();
mesProduceSns.forEach(mesProduceSn -> {
productionPsOutContextList.forEach(mesProduceSn -> {
String productVersion = null;
List<MesProductionPartContext> mesProductionPartContextList = productionPartContexts.stream().filter(mesProductionPartContext -> Objects.equal(mesProduceSn.getForeignKey(),mesProductionPartContext.getForeignKey())).collect(Collectors.toList());
List<MesProductionPartContext> mesProductionPartContextList = productionPartContextList.stream().filter(mesProductionPartContext -> Objects.equal(mesProduceSn.getForeignKey(),mesProductionPartContext.getForeignKey())).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(mesProductionPartContextList)) {
productVersion = mesProductionPartContextList.get(0).getProductVersion();
}
@ -125,7 +140,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
partInspection.setDefectTypeCode(mesDefectType.getDefectTypeCode());
partInspection.setInspectionDate(TimeTool.getToday());
partInspection.setLotNo(mesProduceSn.getLotNo());
if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) {
if (productResult.compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0) {
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue());
} else {
partInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.CREATE.getValue());
@ -148,7 +163,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
model.setType(partInspection.getSourceType());
model.setProductVersion(productVersion);
if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) {
if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), productResult)) {
model.setType(MesExtEnumUtil.NC_TYPE.SCRAP.getValue());
}
MesPartSap mesPartSap = new MesPartSap();
@ -156,8 +171,7 @@ public class MesProductResultErrorHandleStepService extends BaseStepService {
model.setPart(mesPartSap);
model.setPartInspectionDetailList(Arrays.asList(mesPartInspectionDetail));
if (Objects.equal(MesExtEnumUtil.EQUIP_VARIABLE_CFG_CATEGORY.PRODUCT_SCRAP.getValue(), result)) {
//TODO 有问题 需要修改条码质量状态
if (productResult.compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0) {
ncProcessingService.saveNc(model, reqBean.getOrganizeCode(), true);
} else {
MesPartInspectionInputModel inspectModel = new MesPartInspectionInputModel();

@ -72,10 +72,10 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
StepResult stepResult = StepResult.getSuccessComplete();
//获取上下文加工结果
String prodResult = productionDispatchContextStepService.getProductResultContext(reqBean);
String productResult = productionDispatchContextStepService.getProductResultContext(reqBean);
//验证加工结果是否满足参数条件: 可疑/报废是否打印
if (checkIsMatchProdResult(reqBean, prodResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.PRODUCT_SUSPICIOUS) || checkIsMatchProdResult(reqBean, prodResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.PRODUCT_SCRAP))
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, String.format("打印失败:%s!", MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.codeOfDescription(prodResult)));
if (checkIsMatchProdResult(reqBean, productResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.PRODUCT_SUSPICIOUS) || checkIsMatchProdResult(reqBean, productResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.PRODUCT_SCRAP))
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(MesPcnEnumUtil.WORK_CELL_SCAN_MONITOR_LOG_TYPE.PROCESS.getValue()), stepResult, String.format("打印失败:%s!", MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM.codeOfDescription(productResult)));
// 根据foreign找出加工规则对应的上下文判断是否需要打印
List<MesProdRuleContext> prodRuleDataContext = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
@ -159,9 +159,12 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
for (MesProductionPsOutContext outSn : productionPsOutContextList) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(outSn.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(outSn.getId(), MesPcnExtConstWords.ID, packBean);
mesProduceSnRao.updateByProperties(
new String[]{MesPcnExtConstWords.PRINT_STATUS, MesPcnExtConstWords.PRINT_COUNT, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
new Object[]{MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(), MesPcnExtConstWords.ONE, reqBean.getUserInfo(), TimeTool.getNowTime(true)}, packBean);
mesProduceSnRao.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.PRINT_STATUS, MesPcnExtConstWords.PRINT_COUNT, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME,
MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME},
new Object[]{MesExtEnumUtil.PRINT_STATUS.PRINTED.getValue(), MesPcnExtConstWords.ONE, reqBean.getUserInfo(), TimeTool.getNowTime(true),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY},
packBean);
}
//保存打印条码记录
snLogRao.saveAll(snLogList);
@ -169,10 +172,10 @@ public class MesProductSnPrintNosortStepService extends BaseStepService {
}
//验证加工结果是否满足参数条件: 可疑/报废是否打印
private Boolean checkIsMatchProdResult(StationRequestBean reqBean, String prodResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM prodResultEnum) {
private Boolean checkIsMatchProdResult(StationRequestBean reqBean, String productResult, MesExtEnumUtil.PRODUCT_RESULT_EQUIP_PARAM prodResultEnum) {
if (StringUtils.isEmpty(prodResult)) return false;
if (!prodResult.equals(prodResultEnum.getCode())) return false;
if (StringUtils.isEmpty(productResult)) return false;
if (!productResult.equals(prodResultEnum.getCode())) return false;
Optional<Map<String, MesProdRouteOptParam>> stepParamMap = getStepParams(reqBean);
String unPrintParam = (null != stepParamMap && stepParamMap.isPresent() && stepParamMap.get().containsKey(prodResultEnum.name())) ? stepParamMap.get().get(prodResultEnum.name()).getParamValue() : null;

@ -30,6 +30,7 @@ import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@ -114,57 +115,97 @@ public class MesProductSnSaveStepService extends BaseStepService {
if (null == produceSn) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查零件条码信息,产出零件条码[%s]ID[%s]信息不存在!", productionPsOutContext.getProductSn(), productionPsOutContext.getId()));
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- PS:{} {} --- ID:{} --- QURERY:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), produceSn.getProductSn(), produceSn.getPartNo(), produceSn.getId(), JSONObject.toJSONString(produceSn));
//零件信息
MesPart part = partMap.get(produceSn.getPartNo());
Map<String, Object> propertyMap = new HashMap<>();
productionPsOutContext.setAreaCode(reqBean.getAreaCode());
propertyMap.put(MesPcnExtConstWords.AREA_CODE, productionPsOutContext.getAreaCode());
productionPsOutContext.setWorkCenterCode(reqBean.getWorkCenterCode());
propertyMap.put(MesPcnExtConstWords.WORK_CENTER_CODE, productionPsOutContext.getWorkCenterCode());
productionPsOutContext.setWorkCellCode(reqBean.getWorkCellCode());
propertyMap.put(MesPcnExtConstWords.WORK_CELL_CODE, productionPsOutContext.getWorkCellCode());
productionPsOutContext.setRouteCode(reqBean.getRouteCode());
propertyMap.put(MesPcnExtConstWords.ROUTE_CODE, productionPsOutContext.getRouteCode());
productionPsOutContext.setProcessCode(reqBean.getProcessCode());
productionPsOutContext.setCraftCode(productionProcessContext.getCraftCode());
propertyMap.put(MesPcnExtConstWords.PROCESS_CODE, productionPsOutContext.getProcessCode());
productionPsOutContext.setQcStatus(!StringUtils.isEmpty(productResult) ? Integer.valueOf(productResult) : MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue());
productionPsOutContext.setCraftCode(productionProcessContext.getCraftCode());
propertyMap.put(MesPcnExtConstWords.CRAFT_CODE, productionPsOutContext.getCraftCode());
productionPsOutContext.setShiftCode(prodShiftContext.getShiftCode());
propertyMap.put(MesPcnExtConstWords.SHIFT_CODE, productionPsOutContext.getShiftCode());
productionPsOutContext.setShiftGroup(prodShiftContext.getShiftGroup());
propertyMap.put(MesPcnExtConstWords.SHIFT_GROUP, productionPsOutContext.getShiftGroup());
productionPsOutContext.setProcessLabelTemplate(part.getProcessLabelTemplate());
propertyMap.put(MesPcnExtConstWords.PROCESS_LABEL_TEMPLATE, productionPsOutContext.getProcessLabelTemplate());
productionPsOutContext.setProdLabelTemplate(part.getProductLabelTemplate());
propertyMap.put(MesPcnExtConstWords.PROD_LABEL_TEMPLATE, productionPsOutContext.getProdLabelTemplate());
productionPsOutContext.setCustLabelTemplate(part.getCustLabelTemplate());
propertyMap.put(MesPcnExtConstWords.CUST_LABEL_TEMPLATE, productionPsOutContext.getCustLabelTemplate());
ConvertBean.serviceModelUpdate(productionPsOutContext, reqBean.getUserInfo());
productionPsOutContext.setLotNo(productionPsOutContext.getModifyDatetime().substring(0, 10));
propertyMap.put(MesPcnExtConstWords.MODIFY_DATE_TIME, productionPsOutContext.getModifyDatetime());
propertyMap.put(MesPcnExtConstWords.MODIFY_USER, productionPsOutContext.getModifyUser());
propertyMap.put(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
propertyMap.put(MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.EMPTY);
if (StringUtils.isEmpty(productionPsOutContext.getLotNo()) || !productionPsOutContext.getLotNo().equals(productionPsOutContext.getModifyDatetime().substring(0, 10))) {
productionPsOutContext.setLotNo(productionPsOutContext.getModifyDatetime().substring(0, 10));
propertyMap.put(MesPcnExtConstWords.LOT_NO, productionPsOutContext.getLotNo());
}
if (StringUtils.isEmpty(productionPsOutContext.getInWorkCenterTime())) productionPsOutContext.setInWorkCenterTime(productionPsOutContext.getModifyDatetime());
if (StringUtils.isEmpty(productionPsOutContext.getInWorkCenterTime())) {
productionPsOutContext.setInWorkCenterTime(productionPsOutContext.getModifyDatetime());
propertyMap.put(MesPcnExtConstWords.IN_WC_TIME, productionPsOutContext.getInWorkCenterTime());
}
if (!StringUtils.isEmpty(productResult) && Integer.valueOf(productResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.QUALIFIED.getValue()) != 0) {
productionPsOutContext.setQcStatus(Integer.valueOf(productResult));
propertyMap.put(MesPcnExtConstWords.QC_STATUS, productionPsOutContext.getQcStatus());
}
//非排序 或者 排序的末道工位
if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()) == 0 ||
(!StringUtils.isEmpty(workCell.getIsEndWorkCell()) && workCell.getIsEndWorkCell().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)) {
productionPsOutContext.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.OFFLINE.getValue());
propertyMap.put(MesPcnExtConstWords.SN_STATUS, productionPsOutContext.getSnStatus());
productionPsOutContext.setOutWorkCenterTime(productionPsOutContext.getModifyDatetime());
propertyMap.put(MesPcnExtConstWords.OUT_WC_TIME, productionPsOutContext.getOutWorkCenterTime());
} else {
productionPsOutContext.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue());
//排序非末道
if (productionPsOutContext.getSnStatus().compareTo(MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue()) != 0) {
productionPsOutContext.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.PROCESSING.getValue());
propertyMap.put(MesPcnExtConstWords.SN_STATUS, productionPsOutContext.getSnStatus());
}
}
produceSnRepository.updateByProperties(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
new Object[]{produceSn.getId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.AREA_CODE, MesPcnExtConstWords.WORK_CENTER_CODE, MesPcnExtConstWords.WORK_CELL_CODE, MesPcnExtConstWords.ROUTE_CODE, MesPcnExtConstWords.PROCESS_CODE, MesPcnExtConstWords.CRAFT_CODE,
MesPcnExtConstWords.SN_STATUS, MesPcnExtConstWords.QC_STATUS, MesPcnExtConstWords.SHIFT_CODE, MesPcnExtConstWords.SHIFT_GROUP, MesPcnExtConstWords.PROCESS_LABEL_TEMPLATE, MesPcnExtConstWords.PROD_LABEL_TEMPLATE,
MesPcnExtConstWords.CUST_LABEL_TEMPLATE, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.IN_WC_TIME, MesPcnExtConstWords.OUT_WC_TIME, MesPcnExtConstWords.LOT_NO},
new Object[]{productionPsOutContext.getAreaCode(), productionPsOutContext.getWorkCenterCode(), productionPsOutContext.getWorkCellCode(), productionPsOutContext.getRouteCode(), productionPsOutContext.getProcessCode(), productionPsOutContext.getCraftCode(),
productionPsOutContext.getSnStatus(), productionPsOutContext.getQcStatus(), productionPsOutContext.getShiftCode(), productionPsOutContext.getShiftGroup(), productionPsOutContext.getProcessLabelTemplate(), productionPsOutContext.getProdLabelTemplate(),
productionPsOutContext.getCustLabelTemplate(), productionPsOutContext.getModifyDatetime(), productionPsOutContext.getModifyUser(), productionPsOutContext.getInWorkCenterTime(), productionPsOutContext.getOutWorkCenterTime(), productionPsOutContext.getLotNo()});
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- PS:{} {} --- ID:{} --- UPDATE:{}",
String[] propertyName = new String[propertyMap.size()];
Object[] propertyValue = new Object[propertyMap.size()];
Integer index = 0;
for (Map.Entry<String, Object> innerEntry : propertyMap.entrySet()) {
if (null == innerEntry) continue;
propertyName[index] = innerEntry.getKey();
propertyValue[index] = innerEntry.getValue();
index ++;
}
produceSnRepository.updateByPropertiesNoSync(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{produceSn.getId(), reqBean.getOrganizeCode()}, propertyName, propertyValue);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- PS:{} --- ID:{} --- QUERY:{} --- productResult:{} --- UPDATE:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), productionPsOutContext.getProductSn(), productionPsOutContext.getPartNo(), productionPsOutContext.getId(), JSONObject.toJSONString(productionPsOutContext));
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), productionPsOutContext.getProductSn(), produceSn.getId(), JSONObject.toJSONString(produceSn), productResult, JSONObject.toJSONString(propertyMap));
return productionPsOutContext;

@ -98,7 +98,7 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
//产出条码 根据生产工单分组
Map<String, List<MesProductionPsOutContext>> proMap = productionPsOutContextList.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(MesProductionPsOutContext::getWorkOrderNo));
String prodResult = productionDispatchContextStepService.getProductResultContext(reqBean);
String productResult = productionDispatchContextStepService.getProductResultContext(reqBean);
//遍历产出零件信息
for(Map.Entry<String, List<MesProductionPartContext>> entry : ppMap.entrySet()) {
@ -121,10 +121,6 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
if (null == workOrder) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息不存在!", entry.getKey()));
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- QURERY:{} --- calcCompleteQty:{} --- prodResult:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder), calcCompleteQty, prodResult);
//工单状态分 排序工单 和非排序工单; 现在必须是非排序工单
if (!MesExtEnumUtil.ORDER_STATUS.checkNosortAllowStatus(workOrder.getWorkOrderStatus()))
stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", entry.getKey(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
@ -149,13 +145,13 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
*
*/
if (!StringUtils.isEmpty(prodResult)) {
if (!StringUtils.isEmpty(productResult)) {
//可疑品
if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
if (Integer.valueOf(productResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
propertyMap.put(MesPcnExtConstWords.SUSPICIOUS_PART_QTY, MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(productionPsOutContextList.size())));
}
//报废数量
if (Integer.valueOf(prodResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
if (Integer.valueOf(productResult).compareTo(MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()) == 0 && !CollectionUtils.isEmpty(productionPsOutContextList)){
propertyMap.put(MesPcnExtConstWords.SCRAP_PART_QTY, MathOperation.add(workOrder.getScrapPartQty(), new Double(productionPsOutContextList.size())));
}
}
@ -170,6 +166,8 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
propertyMap.put(MesPcnExtConstWords.MODIFY_DATE_TIME, (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()));
propertyMap.put(MesPcnExtConstWords.MODIFY_USER, reqBean.getUserInfo());
propertyMap.put(MesPcnExtConstWords.SYSTEM_SYNC_STATUS, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
propertyMap.put(MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.EMPTY);
String[] propertyName = new String[propertyMap.size()];
Object[] propertyValue = new Object[propertyMap.size()];
@ -182,11 +180,12 @@ public class MesWorkOrderSaveNosortStepService extends BaseStepService {
index ++;
}
workOrderRepository.updateByProperties(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{workOrder.getId(), reqBean.getOrganizeCode()}, propertyName, propertyValue);
workOrderRepository.updateByPropertiesNoSync(new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE}, new Object[]{workOrder.getId(), reqBean.getOrganizeCode()}, propertyName, propertyValue);
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}",
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- QUERY:{} --- calcCompleteQty:{} --- productResult:{} --- UPDATE:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(propertyMap));
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder), calcCompleteQty, productResult, JSONObject.toJSONString(propertyMap));
}
}

@ -98,22 +98,26 @@ public class MesWorkOrderSaveSortStepService extends BaseStepService {
if (!isEndWorkCell && productionPartContext.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()) == 0) continue;
if (!isEndWorkCell) {
workOrderRepository.updateByProperties(
workOrderRepository.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
new Object[]{productionPartContext.getId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS,
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME,
MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME,
MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.START_TIME, MesPcnExtConstWords.ONLINE_TIME},
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY,
MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue(), productionPartContext.getOnlineTime(), productionPartContext.getOnlineTime()});
} else {
productionPartContext.setOfflineTime(TimeTool.getNowTime(true));
workOrderRepository.updateByProperties(
workOrderRepository.updateByPropertiesNoSync(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
new Object[]{productionPartContext.getId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS,
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME,
MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME,
MesPcnExtConstWords.WORK_ORDER_STATUS, MesPcnExtConstWords.COMPLETE_QTY, MesPcnExtConstWords.UN_COMPLETE_QTY,
MesPcnExtConstWords.START_TIME, MesPcnExtConstWords.ONLINE_TIME, MesPcnExtConstWords.END_TIME, MesPcnExtConstWords.OFFLINE_TIME},
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
new Object[]{reqBean.getUserInfo(), (new SimpleDateFormat(MesPcnExtConstWords.DATE_FORMAT_SSS)).format(new Date()),
CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY,
MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue(), new Double(1), new Double(0),
productionPartContext.getOnlineTime(), productionPartContext.getOnlineTime(), productionPartContext.getOfflineTime(), productionPartContext.getOfflineTime()});
}

Loading…
Cancel
Save