Merge remote-tracking branch 'origin/dev' into dev

tags/yfai-pcn-ext-v1.7
jun 9 months ago
commit f0f4c667e4

@ -13,6 +13,7 @@ import cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.MesEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
@ -353,7 +354,6 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.FAIL.getValue());
ConvertBean.serviceModelUpdate(model.getPartInspection(), AuthUtil.getSessionUser().getUserName());
partInspectionRepository.save(model.getPartInspection());
//查询当前单据明细
List<MesPartInspectionDetail> resultDetailList = queryResultDetailList(model, org);
@ -387,10 +387,23 @@ public class MesInputDefectRecordService implements IMesInputDefectRecordService
if (model.getSourceType() == MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.SINGLE.getValue()) {
checkProduceSn(produceSn, model.getSn());
produceSn.setQcStatus(MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue());
String defectTypeCode = MesEnumUtil.DEFECT_TYPE_CODE.DETERMIND.getValue();
String defectTypeCodeStr = configService.getCfgValue(org, "MES_SUSPICIOUS_DEFECT_TYPE_CODE") == null ? "QX130" :configService.getCfgValue(org, "");
//根据页面上选择的位置 查询位置,若不存在则提示 位置不存在,请检查数据
DdlPackBean packBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(defectTypeCodeStr, "defectTypeCode", packBean);
MesDefectType defectType = defectTypeRepository.getByProperty(packBean);
model.getPartInspection().setDefectTypeCode(defectType.getDefectTypeCode());
model.getPartInspection().setDefectTypeId(defectType.getId());
ConvertBean.serviceModelInitialize(produceSn, AuthUtil.getSessionUser().getUserName());
produceSnExtService.update(produceSn);
}
partInspectionRepository.save(model.getPartInspection());
partInspectionDetailRepository.saveAll(resultDetailList);
partInspectionDetailRepository.saveAll(model.getPartInspectionDetailList());

@ -90,7 +90,7 @@ public class MesAssemblyMatchNosortStepService extends BaseStepService {
//根据产出零件或者腔数拿到需要的加工规则数量, 优先使用产出零件数量
Integer needQty = !CollectionUtils.isEmpty(productionPartContextList) ? productionPartContextList.size() : cellEquipContext.getCavity();
//全部匹配完毕,存在进料的时候直接调用 并且不存在产出零件的时候 生成零件条码工步 【尾都调用是因为 生成零件条码工步 调用执行过程中可能会出现配置报错】
//全部匹配完毕,存在进料的时候直接调用 并且不存在产出零件的时候 生成零件条码工步 【尾都调用是因为 生成零件条码工步 调用执行过程中可能会出现配置报错】
if (!hasUnBindAssembly && !CollectionUtils.isEmpty(productionPsInContextList) && productionPsInContextList.size() >= needQty && !productionDispatchContextStepService.checkProductionPsOutIsExistContext(reqBean))
((IStepService) SpringContextsUtil.getBean("mesProductSnGenerateStepService")).executeInState(reqBean);

@ -25,13 +25,13 @@ public class MesAssemblyMatchStepService extends BaseStepService {
@Autowired
private IMesProductionProcessContextStepService productionProcessContextStepService;
@Override
public StepResult init(StationRequestBean reqBean) {
//显示装配件扫描项工步
return ((IStepService) SpringContextsUtil.getBean("mesAssemblyShowStepService")).executeInState(reqBean);
}
// @Override
// public StepResult init(StationRequestBean reqBean) {
//
// //显示装配件扫描项工步
// return ((IStepService) SpringContextsUtil.getBean("mesAssemblyShowStepService")).executeInState(reqBean);
//
// }
@Override
public StepResult execute(StationRequestBean reqBean) {

@ -103,7 +103,7 @@ public class MesAssemblyShowNosortStepService extends BaseStepService {
if (!CollectionUtils.isEmpty(productionPartContextList)) productionDispatchContextStepService.saveProductionPartContext(reqBean, productionPartContextList);
//保存进料主条码数据
if (!CollectionUtils.isEmpty(productionPsInContextList)) productionDispatchContextStepService.saveProductionPsInContext(reqBean, productionPsInContextList);
} else resultBean.checkRepeat();
}
//显示装配件信息
showProductionAssembly(reqBean, resultBean, workCenter, cellEquipContext, prodRuleContextList);

@ -9,6 +9,7 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionProcessContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.serviceimpl.fsm.BaseStepService;
import cn.estsh.i3plus.mes.pcn.util.StringUtil;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
@ -20,6 +21,7 @@ import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -108,6 +110,9 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
Map<String, List<MesProductionPsOutContext>> proMap = productionPsOutContextList.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(MesProductionPsOutContext::getWorkOrderNo));
//产品加工规则 根据foreignKey分组
Map<Integer, MesProdRuleContext> prMap = prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProdRuleContext::getForeignKey, o -> o));
String prodResult = productionDispatchContextStepService.getProductResultContext(reqBean);
//遍历产出零件信息
for(Map.Entry<String, List<MesProductionPartContext>> entry : ppMap.entrySet()) {
@ -123,11 +128,18 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
if (productionPsOutContext.getIsCalcCompleteQty() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) calcCompleteQty += 1;
}
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) == 0 ) continue;
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) == 0) continue;
MesWorkOrder workOrder = workOrderExtService.getWorkOrder(reqBean.getOrganizeCode(), entry.getValue().get(0).getId());
entityManager.detach(workOrder);
if (null == workOrder) execExpSendMsgAndThrowEx(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);
entityManager.detach(workOrder);
//工单状态分 排序工单 和非排序工单; 现在必须是非排序工单
if (!MesExtEnumUtil.ORDER_STATUS.checkAllowStatus(workCenter.getCenterType(), workOrder.getWorkOrderStatus()))
execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息工单状态[%s]!", entry.getKey(), MesExtEnumUtil.ORDER_STATUS.valueOfDescription(workOrder.getWorkOrderStatus())));
@ -136,20 +148,16 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
execExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), String.format("请检查工单信息,加工单[%s]信息所属生产线[%s]与当前生产线[%s]不一致!", entry.getKey(), workOrder.getWorkCenterCode(), reqBean.getWorkCenterCode()));
List<String> propertyNameList = new ArrayList<>();
List<Object> propertyValueList = new ArrayList<>();
//修改完成数量
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0) {
workOrder.setCompleteQty(MathOperation.add(workOrder.getCompleteQty(), calcCompleteQty));
propertyNameList.add("completeQty");
propertyValueList.add(workOrder.getCompleteQty());
}
//修改未完成数量
if (calcCompleteQty.compareTo(MesPcnExtConstWords.ZERO) > 0 && workOrder.getUnCompleteQty().compareTo(new Double(0)) > 0 &&
MathOperation.compareTo(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)), new Double(0)) >= 0) {
workOrder.setUnCompleteQty(MathOperation.sub(workOrder.getUnCompleteQty(), new Double(calcCompleteQty)));
propertyNameList.add("unCompleteQty");
propertyValueList.add(workOrder.getUnCompleteQty());
}
/**
@ -159,7 +167,7 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
*
*/
String prodResult = productionDispatchContextStepService.getProductResultContext(reqBean);
if (!StringUtils.isEmpty(prodResult)) {
//可疑品
boolean isSuspicious = MesExtEnumUtil.PRODUCE_QC_STATUS.SUSPICIOUS.getValue() == Integer.parseInt(prodResult);
@ -167,7 +175,6 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
int suspiciousQty = productionPsOutContextList.size();
workOrder.setSuspiciousPartQty(MathOperation.add(workOrder.getSuspiciousPartQty(), new Double(suspiciousQty)));
propertyNameList.add("suspiciousPartQty");
propertyValueList.add(workOrder.getSuspiciousPartQty());
}
//报废数量
boolean isScrap = MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue() == Integer.parseInt(prodResult);
@ -175,32 +182,27 @@ public class MesWorkOrderSaveStepService extends BaseStepService {
int scrapQty = productionPsOutContextList.size();
workOrder.setScrapPartQty(MathOperation.add(workOrder.getScrapPartQty(), new Double(scrapQty)));
propertyNameList.add("scrapPartQty");
propertyValueList.add(workOrder.getScrapPartQty());
}
}
if (MathOperation.compareTo(workOrder.getCompleteQty(), workOrder.getQty()) >= 0 && workOrder.getWorkOrderStatus().compareTo(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue()) != 0) {
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
propertyNameList.add("workOrderStatus");
propertyValueList.add(workOrder.getWorkOrderStatus());
} else if (workOrder.getCompleteQty() > 0 && workOrder.getWorkOrderStatus() == MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue()) {
workOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
propertyNameList.add("workOrderStatus");
propertyValueList.add(workOrder.getWorkOrderStatus());
}
//如果数量都没有修改,不操作数据库
if (!propertyNameList.isEmpty()) {
ConvertBean.serviceModelUpdate(workOrder, reqBean.getUserInfo());
workOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
workOrderExtService.update(workOrder);
/* propertyNameList.add("modifyUser");
propertyValueList.add(reqBean.getUserInfo());
propertyNameList.add("modifyDatetime");
propertyValueList.add(TimeTool.getNowTime(true));
DdlPackBean workOrderPackBean = DdlPackBean.getDdlPackBean(reqBean.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(workOrder.getId(),"id",workOrderPackBean);
workOrderRepository.updateByProperties(propertyNameList.toArray(new String[]{}), propertyValueList.toArray(), workOrderPackBean);
*/ }
log.info("工厂{}生产线{}工位{}:FSM STATE DISPATCHER --- DO STEP --- {} EXEC --- ORDER:{} --- UPDATE:{}",
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(),
StringUtil.toLowerCaseFirst(this.getClass().getSimpleName()), workOrder.getWorkOrderNo(), JSONObject.toJSONString(workOrder));
}
}
}

Loading…
Cancel
Save