|
|
@ -1,7 +1,8 @@
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step.method;
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
|
|
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProduceSnExtService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionDispatchContextStepService;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionProcessContextStepService;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
|
|
|
|
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.serviceimpl.fsm.BaseStepService;
|
|
|
@ -9,9 +10,12 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
import cn.estsh.i3plus.platform.common.tool.TimeTool;
|
|
|
|
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
|
|
|
|
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
|
|
|
|
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.repository.MesProductionAssemblyRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
|
|
|
|
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
|
|
|
@ -27,7 +31,7 @@ import java.util.*;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @Description : 保存装配记录工步 【排序】
|
|
|
|
* @Description : 保存装配记录工步 【排序】【删除平行工位的装配件】
|
|
|
|
* @Author : wangjie
|
|
|
|
* @Author : wangjie
|
|
|
|
**/
|
|
|
|
**/
|
|
|
|
@Slf4j
|
|
|
|
@Slf4j
|
|
|
@ -35,6 +39,9 @@ import java.util.stream.Collectors;
|
|
|
|
public class MesAssemblySaveSortStepService extends BaseStepService {
|
|
|
|
public class MesAssemblySaveSortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
|
|
|
|
private IMesProductionProcessContextStepService productionProcessContextStepService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
|
|
|
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
@ -52,6 +59,7 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private IMesProduceSnExtService produceSnExtService;
|
|
|
|
private IMesProduceSnExtService produceSnExtService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//保存排序线装配件
|
|
|
|
public List<MesProdRuleContext> saveSortProductionAssembly(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesProductionPsOutContext> productionPsOutContextList, MesScanMonitorContext scanMonitorContext) {
|
|
|
|
public List<MesProdRuleContext> saveSortProductionAssembly(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList, List<MesProductionPsOutContext> productionPsOutContextList, MesScanMonitorContext scanMonitorContext) {
|
|
|
|
|
|
|
|
|
|
|
|
Map<Integer, MesProductionPsOutContext> ppMap = CollectionUtils.isEmpty(productionPsOutContextList) ? null : productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsOutContext::getForeignKey, o -> o));
|
|
|
|
Map<Integer, MesProductionPsOutContext> ppMap = CollectionUtils.isEmpty(productionPsOutContextList) ? null : productionPsOutContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()))).collect(Collectors.toMap(MesProductionPsOutContext::getForeignKey, o -> o));
|
|
|
@ -106,15 +114,17 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
|
|
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
|
|
productionAssemblyRepository.updateByProperties(
|
|
|
|
productionAssemblyRepository.updateByPropertiesNoSync(
|
|
|
|
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
|
|
|
|
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
|
|
|
|
new Object[]{productionAssemblySortContext.getId(), reqBean.getOrganizeCode()},
|
|
|
|
new Object[]{productionAssemblySortContext.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.ASSEMBLY_STATUS, MesPcnExtConstWords.ASSEMBLY_SN, MesPcnExtConstWords.IS_SKIP, MesPcnExtConstWords.MOULD_NO,
|
|
|
|
MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.ASSEMBLY_STATUS, MesPcnExtConstWords.ASSEMBLY_SN,
|
|
|
|
MesPcnExtConstWords.MOULD_RECORD_ID, MesPcnExtConstWords.PRODUCTION_RECORD_ID, MesPcnExtConstWords.REMARK},
|
|
|
|
MesPcnExtConstWords.IS_SKIP, MesPcnExtConstWords.MOULD_NO, MesPcnExtConstWords.MOULD_RECORD_ID,
|
|
|
|
|
|
|
|
MesPcnExtConstWords.PRODUCTION_RECORD_ID, MesPcnExtConstWords.REMARK},
|
|
|
|
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
productionAssemblySortContext.getAssemblyStatus(), productionAssemblySortContext.getAssemblySn(), productionAssemblySortContext.getIsSkip(), mouldNo,
|
|
|
|
MesPcnExtConstWords.EMPTY, productionAssemblySortContext.getAssemblyStatus(), productionAssemblySortContext.getAssemblySn(),
|
|
|
|
mouldRecordId, prodRuleContext.getProductionRecordId(), getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getPaRemark())});
|
|
|
|
productionAssemblySortContext.getIsSkip(), mouldNo, mouldRecordId,
|
|
|
|
|
|
|
|
prodRuleContext.getProductionRecordId(), getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getPaRemark())});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -163,12 +173,53 @@ public class MesAssemblySaveSortStepService extends BaseStepService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) {
|
|
|
|
private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) {
|
|
|
|
workOrderAssemblyRepository.updateByProperties(
|
|
|
|
workOrderAssemblyRepository.updateByPropertiesNoSync(
|
|
|
|
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
|
|
|
|
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
|
|
|
|
new Object[]{productionAssemblySortContext.getSourceId(), reqBean.getOrganizeCode()},
|
|
|
|
new Object[]{productionAssemblySortContext.getSourceId(), reqBean.getOrganizeCode()},
|
|
|
|
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS, MesPcnExtConstWords.REMARK},
|
|
|
|
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS,
|
|
|
|
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblySortContext.getAssemblyStatus(),
|
|
|
|
MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.ASSEMBLY_STATUS, MesPcnExtConstWords.REMARK},
|
|
|
|
|
|
|
|
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
|
|
|
|
MesPcnExtConstWords.EMPTY, productionAssemblySortContext.getAssemblyStatus(),
|
|
|
|
getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getWoaRemark())});
|
|
|
|
getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getWoaRemark())});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//删除平行工位的装配件
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public StepResult execute(StationRequestBean reqBean) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StationResultBean resultBean = new StationResultBean();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
StepResult stepResult = StepResult.getSuccessComplete();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取上下文信息
|
|
|
|
|
|
|
|
MesProductionProcessContext productionProcessContext = productionProcessContextStepService.dispatchCurCellEquipment(reqBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//配置错误 抛出异常
|
|
|
|
|
|
|
|
if (!productionProcessContext.getSuccess()) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), productionProcessContext.getMessage());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//存储生产过程上下文对象
|
|
|
|
|
|
|
|
productionProcessContextStepService.dispatchProductionProcessContext(reqBean, productionProcessContext);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//获取上下文产品加工规则数据信息集合
|
|
|
|
|
|
|
|
List<MesProdRuleContext> prodRuleContextList = productionDispatchContextStepService.getProdRuleDataContext(reqBean);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(prodRuleContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在非排序加工规则数据,请重置工序!");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
|
|
|
|
|
|
|
|
if (null == prodRuleContext || StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue;
|
|
|
|
|
|
|
|
List<MesProductionAssemblySortContext> productionAssemblySortContextList = prodRuleContext.getSortAssemblyDataContext();
|
|
|
|
|
|
|
|
int count = workOrderAssemblyRepository.updateByPropertiesNoSync(
|
|
|
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.CRAFT_CODE, MesPcnExtConstWords.PROCESS_SEQ, MesPcnExtConstWords.ASSEMBLY_STATUS},
|
|
|
|
|
|
|
|
new Object[]{reqBean.getOrganizeCode(), prodRuleContext.getWorkOrderNo(), productionProcessContext.getCraftCode(), productionAssemblySortContextList.get(0).getProcessSeq(), MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()},
|
|
|
|
|
|
|
|
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS,
|
|
|
|
|
|
|
|
MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.REMARK},
|
|
|
|
|
|
|
|
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
|
|
|
|
MesPcnExtConstWords.EMPTY, CommonEnumUtil.IS_VAILD.INVAILD.getValue(), String.format("平行工位[%s]标记无效!", reqBean.getWorkCellCode())});
|
|
|
|
|
|
|
|
this.sendMessage(reqBean, resultBean.writeDbLog(), String.format("加工单[%s]在工位[%s]标记平行工位的装配件条数[%s]",
|
|
|
|
|
|
|
|
prodRuleContext.getWorkOrderNo(), reqBean.getWorkCellCode(), count), MesPcnEnumUtil.STATION_BUSI_TYPE.RUNNING_INFO, MesPcnEnumUtil.STATION_DATA_TYPE.TEXT);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return stepResult;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|