排序 装配件 前置写库

tags/yfai-pcn-ext-v2.3
王杰 7 months ago
commit 0d1769c17c

@ -61,8 +61,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
//【排序线】获取生产工单装配件清单 //【排序线】获取生产工单装配件清单
List<MesWorkOrderAssembly> workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext, false); List<MesWorkOrderAssembly> workOrderAssemblyList = getWorkOrderAssemblyList(prodRuleContext, false);
// 搜集待装配的数据 // 搜集待装配或者解绑的数据
workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0)).collect(Collectors.toList()); workOrderAssemblyList = CollectionUtils.isEmpty(workOrderAssemblyList) ? null : workOrderAssemblyList.stream().filter(o -> (null != o &&
(o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 || o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0))).collect(Collectors.toList());
if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null; if (CollectionUtils.isEmpty(workOrderAssemblyList)) return null;
@ -275,7 +276,9 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
//根据生产工单装配件清单ID分组 //根据生产工单装配件清单ID分组
private Map<Long, List<MesProductionAssembly>> groupProductionAssembly(List<MesProductionAssembly> productionAssemblyList) { private Map<Long, List<MesProductionAssembly>> groupProductionAssembly(List<MesProductionAssembly> productionAssemblyList) {
return CollectionUtils.isEmpty(productionAssemblyList) ? null : productionAssemblyList.stream().filter(o -> (null != o && o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) >= 0)).collect(Collectors.groupingBy(MesProductionAssembly::getSourceId)); return CollectionUtils.isEmpty(productionAssemblyList) ? null :
productionAssemblyList.stream().filter(o -> (null != o && (o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 ||
o.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_40.getValue()) == 0))).collect(Collectors.groupingBy(MesProductionAssembly::getSourceId));
} }
//根据装配件清单ID获取装配件绑定记录 //根据装配件清单ID获取装配件绑定记录

@ -257,8 +257,9 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
@Override @Override
public MesPullingOrderPartInfo doMesPullingOrderInfoJisScan(MesPullingOrderPartInfo mesPullingOrderInfo, String userName) { public MesPullingOrderPartInfo doMesPullingOrderInfoJisScan(MesPullingOrderPartInfo mesPullingOrderInfo, String userName) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesPullingOrderInfo.getOrganizeCode());
MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository.getById(mesPullingOrderInfo.getId()); DdlPreparedPack.getNumEqualPack(mesPullingOrderInfo.getId(), MesPcnExtConstWords.ID, packBean);
MesPullingOrderPartInfo partInfo = mesPullingOrderPartInfoRepository.getByProperty(packBean);
if (!StringUtil.isEmpty(partInfo)) { if (!StringUtil.isEmpty(partInfo)) {
//查拉动单明细对应的拉动组规则 //查拉动单明细对应的拉动组规则
DdlPackBean packBeanDetail = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode()); DdlPackBean packBeanDetail = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode());
@ -268,6 +269,12 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
if (StringUtil.isEmpty(mesPartPullDetail)) { if (StringUtil.isEmpty(mesPartPullDetail)) {
MesPcnException.throwMesBusiException("工单【%s】拉动组数据为空", mesPullingOrderInfo.getWorkOrderNo()); MesPcnException.throwMesBusiException("工单【%s】拉动组数据为空", mesPullingOrderInfo.getWorkOrderNo());
} }
//跳过码
if (mesPullingOrderInfo.getProductSn().equals(configService.getCfgValue(partInfo.getOrganizeCode(), MesPcnExtConstWords.JIS_SKIP_CODE))) {
//修改为已跳过
partInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.SKIP.getValue());
return updatePullingOrderPartInfo(userName, partInfo);
}
//校验规则 //校验规则
if (checkRule(mesPullingOrderInfo, mesPartPullDetail)) { if (checkRule(mesPullingOrderInfo, mesPartPullDetail)) {
//校验成功修改颜色为黄色2 //校验成功修改颜色为黄色2
@ -314,22 +321,26 @@ public class MesPullingOrderInfoService implements IMesPullingOrderInfoService {
if (!StringUtil.isEmpty(partInfo)) { if (!StringUtil.isEmpty(partInfo)) {
//修改为已送料 //修改为已送料
partInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.SENTED.getValue()); partInfo.setStatus(MesExtEnumUtil.PULL_ORDER_PART_STATUS.SENTED.getValue());
partInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.GREEN.getCode()); result.add(updatePullingOrderPartInfo(userName, partInfo));
ConvertBean.serviceModelUpdate(partInfo, userName);
mesPullingOrderPartInfoRepository.update(partInfo);
//拉动单改为已扫描
DdlPackBean packBean = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partInfo.getPullingOrderNo(), "pullingOrderNo", packBean);
MesPullingOrderInfo pullingOrderInfo = mesPullingOrderInfoRepository.getByProperty(packBean);
if (!StringUtil.isEmpty(pullingOrderInfo)) {
pullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue());
ConvertBean.serviceModelUpdate(pullingOrderInfo, userName);
mesPullingOrderInfoRepository.update(pullingOrderInfo);
}
result.add(partInfo);
} }
} }
return result; return result;
} }
private MesPullingOrderPartInfo updatePullingOrderPartInfo(String userName, MesPullingOrderPartInfo partInfo) {
partInfo.setColor(MesExtEnumUtil.PART_PULL_DETAIL_COLOR.GREEN.getCode());
ConvertBean.serviceModelUpdate(partInfo, userName);
mesPullingOrderPartInfoRepository.update(partInfo);
//拉动单改为已扫描
DdlPackBean packBean = DdlPackBean.getDdlPackBean(partInfo.getOrganizeCode());
DdlPreparedPack.getStringEqualPack(partInfo.getPullingOrderNo(), "pullingOrderNo", packBean);
MesPullingOrderInfo pullingOrderInfo = mesPullingOrderInfoRepository.getByProperty(packBean);
if (!StringUtil.isEmpty(pullingOrderInfo)) {
pullingOrderInfo.setPullOrderStatus(MesExtEnumUtil.PULL_ORDER_STATUS.JIS_PULL.getValue());
ConvertBean.serviceModelUpdate(pullingOrderInfo, userName);
mesPullingOrderInfoRepository.update(pullingOrderInfo);
}
return partInfo;
}
} }

@ -49,6 +49,8 @@ public class MesEvcRuleMatchBackValueService implements IMesEquipVariableCfgRule
//不过滤[)>字符 //不过滤[)>字符
private MesEquipVariableCollectContext filterSpecialChar(MesEquipVariableCollectContext equipVariableCollectContext) { private MesEquipVariableCollectContext filterSpecialChar(MesEquipVariableCollectContext equipVariableCollectContext) {
equipVariableCollectContext.trimValue();
String realEquipVariableValue = equipVariableCollectContext.getEquipVariableValue(); String realEquipVariableValue = equipVariableCollectContext.getEquipVariableValue();
String equipVariableValue = StringUtils.removePattern(equipVariableCollectContext.getEquipVariableValue(), "[^A-Z^a-z0-9_^\\s^\\-^/^\\.^\\[^\\)^\\>^\\:]"); String equipVariableValue = StringUtils.removePattern(equipVariableCollectContext.getEquipVariableValue(), "[^A-Z^a-z0-9_^\\s^\\-^/^\\.^\\[^\\)^\\>^\\:]");

@ -144,7 +144,7 @@ public class MesProductionSortModuleService extends BaseModuleService {
if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()) isComplete = true; if (queueOrderModel.getStatus() == MesExtEnumUtil.QUEUE_ORDER_STATUS.FINISH.getValue()) isComplete = true;
else if (!isComplete) color = MesExtEnumUtil.COLOR.WHITE.getValue(); else if (!isComplete) color = MesExtEnumUtil.COLOR.WHITE.getValue();
//跳号标黄色 //跳号标黄色
if (index <= queueOrderList.size() && checkJumpNumber(queueOrderList.get(index).getWorkOrderSeq(), mesQueueOrder.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue(); if (index < queueOrderList.size() && checkJumpNumber(queueOrderList.get(index).getWorkOrderSeq(), mesQueueOrder.getWorkOrderSeq())) color = MesExtEnumUtil.COLOR.YELLOW.getValue();
queueOrderModel.setColor(color); queueOrderModel.setColor(color);
queueOrderModels.add(queueOrderModel); queueOrderModels.add(queueOrderModel);
index++; index++;

@ -0,0 +1,173 @@
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.IMesProductionDispatchContextStepService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
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;
import cn.estsh.i3plus.pojo.base.codemaker.SnowflakeIdMaker;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssembly;
import cn.estsh.i3plus.pojo.mes.bean.MesProductionAssemblyUnique;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesProductionAssemblyUniqueRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesWorkOrderAssemblyRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
/**
* @Description :
* @Author : wangjie
**/
@Slf4j
@Service("mesAssemblySaveSortStepService")
public class MesAssemblySaveSortStepService extends BaseStepService {
@Autowired
private IMesProductionDispatchContextStepService productionDispatchContextStepService;
@Autowired
private MesProductionAssemblyRepository productionAssemblyRepository;
@Autowired
private MesWorkOrderAssemblyRepository workOrderAssemblyRepository;
@Autowired
private MesProductionAssemblyUniqueRepository productionAssemblyUniqueRepository;
@Autowired
private SnowflakeIdMaker snowflakeIdMaker;
@Autowired
private IMesProduceSnExtService produceSnExtService;
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));
Long mouldRecordId = null != scanMonitorContext ? scanMonitorContext.getMouldRecordId() : null;
List<Long> productSnIdList = new ArrayList<>();
//获取模具号
String mouldNo = getMouldNo(reqBean, prodRuleContextList);
for (MesProdRuleContext prodRuleContext : prodRuleContextList) {
if (null == prodRuleContext) continue;
if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) continue;
//显示装配件的时候会进行赋值, 后续匹配的时候已经有值
if (StringUtils.isEmpty(prodRuleContext.getProductionRecordId())) prodRuleContext.setProductionRecordId(snowflakeIdMaker.nextId());
if (StringUtils.isEmpty(prodRuleContext.getMouldNo())) prodRuleContext.setMouldNo(mouldNo);
MesProductionPsOutContext productionPsOutContext = CollectionUtils.isEmpty(ppMap) ? null : ppMap.get(prodRuleContext.getForeignKey());
List<MesProductionAssemblySortContext> productionAssemblySortContextList = prodRuleContext.getSortAssemblyDataContext();
for (MesProductionAssemblySortContext productionAssemblySortContext : productionAssemblySortContextList) {
if (null == productionAssemblySortContext) continue;
if (productionAssemblySortContext.getIsSaveDb().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) continue;
if (productionAssemblySortContext.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0) continue;
if (StringUtils.isEmpty(productionAssemblySortContext.getId())) {
MesProductionAssembly productionAssembly = new MesProductionAssembly();
BeanUtils.copyProperties(productionAssemblySortContext, productionAssembly);
productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
if (null != productionPsOutContext) {
productionAssembly.setSerialNumber(productionPsOutContext.getSerialNumber());
productionAssembly.setCustSn(productionPsOutContext.getCustSn());
}
productionAssembly.setMouldRecordId(mouldRecordId);
productionAssembly.setProductionRecordId(prodRuleContext.getProductionRecordId());
productionAssembly.setMouldNo(mouldNo);
productionAssembly.setFid(UUID.randomUUID().toString());
productionAssembly.setOrganizeCode(reqBean.getOrganizeCode());
ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo());
productionAssembly.setRemark(getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), null));
productionAssembly = productionAssemblyRepository.insert(productionAssembly);
productionAssemblySortContext.setId(productionAssembly.getId());
} else {
productionAssemblyRepository.updateByProperties(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
new Object[]{productionAssemblySortContext.getId(), reqBean.getOrganizeCode()},
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.MOULD_RECORD_ID, MesPcnExtConstWords.PRODUCTION_RECORD_ID, MesPcnExtConstWords.REMARK},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
productionAssemblySortContext.getAssemblyStatus(), productionAssemblySortContext.getAssemblySn(), productionAssemblySortContext.getIsSkip(), mouldNo,
mouldRecordId, prodRuleContext.getProductionRecordId(), getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getPaRemark())});
}
saveWorkOrderAssembly(reqBean, productionAssemblySortContext);
productionAssemblySortContext.isSaveDb();
saveProductionAssemblyUnique(reqBean, productionAssemblySortContext);
if (!StringUtils.isEmpty(productionAssemblySortContext.getProductSnId())) productSnIdList.add(productionAssemblySortContext.getProductSnId());
}
}
if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList);
return prodRuleContextList;
}
private String getMouldNo(StationRequestBean reqBean, List<MesProdRuleContext> prodRuleContextList) {
Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> null != o && !StringUtils.isEmpty(o.getMouldNo())).findFirst();
if (null != optional && optional.isPresent()) return optional.get().getMouldNo();
MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean);
return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null;
}
private String getRemark(String curWorkCellCode, String workCellCode, String remark) {
if (curWorkCellCode.equals(workCellCode)) return remark;
StringJoiner sj = new StringJoiner(MesPcnExtConstWords.SEMICOLON);
if (!StringUtils.isEmpty(remark)) sj.add(remark);
return sj.add(String.format("装配工位[%s]", curWorkCellCode)).toString();
}
private void saveProductionAssemblyUnique(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) {
if (productionAssemblySortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssemblySortContext.getAssemblySn())) return;
MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique();
BeanUtils.copyProperties(productionAssemblySortContext, productionAssemblyUnique, MesPcnExtConstWords.ID);
productionAssemblyUnique.setPid(productionAssemblySortContext.getId());
productionAssemblyUnique.setOrganizeCode(reqBean.getOrganizeCode());
ConvertBean.serviceModelInitialize(productionAssemblyUnique, reqBean.getUserInfo());
productionAssemblyUniqueRepository.insert(productionAssemblyUnique);
}
private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblySortContext productionAssemblySortContext) {
workOrderAssemblyRepository.updateByProperties(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
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 Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblySortContext.getAssemblyStatus(),
getRemark(reqBean.getWorkCellCode(), productionAssemblySortContext.getWorkCellCode(), productionAssemblySortContext.getWoaRemark())});
}
}

@ -8,18 +8,15 @@ 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;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
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.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.bean.MesWorkCenter;
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.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult; 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.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
@ -35,7 +32,7 @@ import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
* @Description : * @Description :
* @Author : wangjie * @Author : wangjie
**/ **/
@Slf4j @Slf4j
@ -55,9 +52,6 @@ public class MesAssemblySaveStepService extends BaseStepService {
private MesProductionAssemblyRepository productionAssemblyRepository; private MesProductionAssemblyRepository productionAssemblyRepository;
@Autowired @Autowired
private MesWorkOrderAssemblyRepository workOrderAssemblyRepository;
@Autowired
private MesProductionAssemblyUniqueRepository productionAssemblyUniqueRepository; private MesProductionAssemblyUniqueRepository productionAssemblyUniqueRepository;
@Autowired @Autowired
@ -89,16 +83,17 @@ public class MesAssemblySaveStepService extends BaseStepService {
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!"); if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true);
//从上下文中取出工位当前要使用的设备 //从上下文中取出工位当前要使用的设备
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
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));
List<Long> productSnIdList = new ArrayList<>(); List<Long> productSnIdList = new ArrayList<>();
//保存装配记录 //保存装配记录
prodRuleContextList.stream().filter(o -> null != o).forEach(o -> saveProductionAssemblyData(reqBean, resultBean, stepResult, productSnIdList, productionProcessContext, o, ppMap, cellEquipContext, workCenter)); prodRuleContextList.stream().filter(o -> null != o).forEach(o -> saveProductionAssemblyData(reqBean, productSnIdList, productionProcessContext, o, ppMap, cellEquipContext, scanMonitorContext));
if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList); if (!CollectionUtils.isEmpty(productSnIdList)) produceSnExtService.saveProduceSnList(reqBean, MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY.getValue(), productSnIdList);
@ -106,26 +101,25 @@ public class MesAssemblySaveStepService extends BaseStepService {
} }
private void saveProductionAssemblyData(StationRequestBean reqBean, StationResultBean resultBean, StepResult stepResult, List<Long> productSnIdList, MesProductionProcessContext productionProcessContext, private void saveProductionAssemblyData(StationRequestBean reqBean, List<Long> productSnIdList, MesProductionProcessContext productionProcessContext, MesProdRuleContext prodRuleContext,
MesProdRuleContext prodRuleContext, Map<Integer, MesProductionPsOutContext> ppMap, MesCellEquipContext cellEquipContext, MesWorkCenter workCenter) { Map<Integer, MesProductionPsOutContext> ppMap, MesCellEquipContext cellEquipContext, MesScanMonitorContext scanMonitorContext) {
if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) return; if (StringUtils.isEmpty(prodRuleContext.getAssemblyDataJson())) return;
List<MesProductionAssemblyContext> productionAssemblyContextList = prodRuleContext.getAssemblyDataContext(workCenter); List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList = prodRuleContext.getNosortAssemblyDataContext();
MesProductionPsOutContext productionPsOutContext = CollectionUtils.isEmpty(ppMap) ? null : ppMap.get(prodRuleContext.getForeignKey()); MesProductionPsOutContext productionPsOutContext = CollectionUtils.isEmpty(ppMap) ? null : ppMap.get(prodRuleContext.getForeignKey());
for (MesProductionAssemblyContext productionAssemblyContext : productionAssemblyContextList) { for (MesProductionAssemblyNosortContext productionAssemblyNosortContext : productionAssemblyNosortContextList) {
if (null == productionAssemblyContext) continue; if (null == productionAssemblyNosortContext) continue;
MesProductionAssembly productionAssembly = new MesProductionAssembly(); MesProductionAssembly productionAssembly = new MesProductionAssembly();
BeanUtils.copyProperties(productionAssemblyContext, productionAssembly); BeanUtils.copyProperties(productionAssemblyNosortContext, productionAssembly);
productionAssembly.setDataSource(workCenter.getCenterType());
productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); productionAssembly.setAreaCode(reqBean.getAreaCode());
productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode());
productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode());
productionAssembly.setProcessCode(reqBean.getProcessCode()); productionAssembly.setProcessCode(reqBean.getProcessCode());
@ -147,46 +141,31 @@ public class MesAssemblySaveStepService extends BaseStepService {
productionAssembly.setCustSn(productionPsOutContext.getCustSn()); productionAssembly.setCustSn(productionPsOutContext.getCustSn());
} }
MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true);
if (null != scanMonitorContext) productionAssembly.setMouldRecordId(scanMonitorContext.getMouldRecordId()); if (null != scanMonitorContext) productionAssembly.setMouldRecordId(scanMonitorContext.getMouldRecordId());
productionAssembly.setFid(UUID.randomUUID().toString());
productionAssembly.setOrganizeCode(reqBean.getOrganizeCode()); productionAssembly.setOrganizeCode(reqBean.getOrganizeCode());
ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo());
if (StringUtils.isEmpty(productionAssembly.getId())) { productionAssembly = productionAssemblyRepository.insert(productionAssembly);
ConvertBean.serviceModelInitialize(productionAssembly, reqBean.getUserInfo());
productionAssembly.setFid(UUID.randomUUID().toString());
productionAssembly = productionAssemblyRepository.insert(productionAssembly);
} else {
ConvertBean.serviceModelUpdate(productionAssembly, reqBean.getUserInfo());
productionAssemblyRepository.update(productionAssembly);
}
if (productionAssemblyContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) == 0) saveProductionAssemblyUnique(productionAssembly);
if (!StringUtils.isEmpty(productionAssemblyContext.getProductSnId())) productSnIdList.add(productionAssemblyContext.getProductSnId()); saveProductionAssemblyUnique(productionAssembly);
if (productionAssemblyContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) if (!StringUtils.isEmpty(productionAssemblyNosortContext.getProductSnId())) productSnIdList.add(productionAssemblyNosortContext.getProductSnId());
productionCustomContextStepService.dispatchRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyContext);
if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue()) == 0) saveWorkOrderAssembly(reqBean, productionAssemblyContext); if (productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyNosortContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0)
productionCustomContextStepService.dispatchRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext);
} }
} }
private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) { private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) {
if (productionAssembly.getAssemblyStatus().compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0) return; if (productionAssembly.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssembly.getAssemblySn())) return;
MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique(); MesProductionAssemblyUnique productionAssemblyUnique = new MesProductionAssemblyUnique();
BeanUtils.copyProperties(productionAssembly, productionAssemblyUnique, MesPcnExtConstWords.ID); BeanUtils.copyProperties(productionAssembly, productionAssemblyUnique, MesPcnExtConstWords.ID);
productionAssemblyUnique.setPid(productionAssembly.getId()); productionAssemblyUnique.setPid(productionAssembly.getId());
productionAssemblyUniqueRepository.insert(productionAssemblyUnique); productionAssemblyUniqueRepository.insert(productionAssemblyUnique);
} }
private void saveWorkOrderAssembly(StationRequestBean reqBean, MesProductionAssemblyContext productionAssemblyContext) {
workOrderAssemblyRepository.updateByProperties(
new String[]{MesPcnExtConstWords.ID, MesPcnExtConstWords.ORGANIZE_CODE},
new Object[]{productionAssemblyContext.getSourceId(), reqBean.getOrganizeCode()},
new String[]{MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.ASSEMBLY_STATUS},
new Object[]{reqBean.getUserInfo(), TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), productionAssemblyContext.getAssemblyStatus()});
}
} }

@ -1,5 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step; package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesAssemblyExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProdRuleCfgExtService;
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.api.busi.IMesProductionProcessContextStepService;
@ -16,6 +17,7 @@ import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean; import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult; import cn.estsh.i3plus.pojo.mes.model.StepResult;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -50,6 +52,9 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
@Autowired @Autowired
private IFsmCommonService fsmCommonService; private IFsmCommonService fsmCommonService;
@Autowired
public IMesAssemblyExtService assemblyExtService;
@Override @Override
public StepResult execute(StationRequestBean reqBean) { public StepResult execute(StationRequestBean reqBean) {
@ -72,9 +77,6 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
//从上下文中取出生产线对象 //从上下文中取出生产线对象
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
//加工规则数据信息集合
List<MesProdRuleContext> prodRuleContextList = new ArrayList<>();
//获取上下文产出零件数据信息集合 //获取上下文产出零件数据信息集合
List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean); List<MesProductionPartContext> productionPartContextList = productionDispatchContextStepService.getProductionPartContext(reqBean);
@ -84,10 +86,20 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
//获取上下文产出零件条码信息集合 //获取上下文产出零件条码信息集合
List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean); List<MesProductionPsOutContext> productionPsOutContextList = productionDispatchContextStepService.getProductionPsOutContext(reqBean);
//获取上下文工位扫描监控信息
MesScanMonitorContext scanMonitorContext = productionProcessContextStepService.dispatchScanMonitorContext(reqBean, true);
//加工规则数据信息集合
List<MesProdRuleContext> prodRuleContextList = new ArrayList<>();
//封装排序加工规则 //封装排序加工规则
doHandleProdRuleData(reqBean, resultBean, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList); doHandleProdRuleData(reqBean, resultBean, productionProcessContext, cellEquipContext, prodRuleContextList, productionPartContextList, productionPsInContextList, productionPsOutContextList);
if (!CollectionUtils.isEmpty(prodRuleContextList)) { if (!CollectionUtils.isEmpty(prodRuleContextList)) {
//无需扫描的需要先写库, 使用isSaveDb=1 进行标记
prodRuleContextList = ((MesAssemblySaveSortStepService) SpringContextsUtil.getBean("mesAssemblySaveSortStepService")).saveSortProductionAssembly(reqBean, prodRuleContextList, productionPsOutContextList, scanMonitorContext);
//保存上下文产品加工规则信息集合 //保存上下文产品加工规则信息集合
productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList); productionDispatchContextStepService.dispatchProdRuleDataContext(reqBean, prodRuleContextList);
//保存上下文产出零件信息 //保存上下文产出零件信息
@ -106,6 +118,7 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
} }
//获取装配件信息(子类进行重写)
public MesProdRuleContext getProdRuleSortContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesProductionPsInContext productionPsInContext) { public MesProdRuleContext getProdRuleSortContext(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext, MesProductionPsInContext productionPsInContext) {
MesProdRuleContext prodRuleContext = new MesProdRuleContext( MesProdRuleContext prodRuleContext = new MesProdRuleContext(
reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()).isCheckBindSeq(productionProcessContext.getWorkCell().getIsSeqScan()) reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), reqBean.getProcessCode(), productionProcessContext.getCraftCode()).isCheckBindSeq(productionProcessContext.getWorkCell().getIsSeqScan())
@ -157,6 +170,7 @@ public class MesAssemblyShowSortStepService extends BaseStepService {
productionPartContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey()); productionPartContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.foreignKey(foreignKey += 1).getForeignKey());
productionPsOutContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.getForeignKey()); productionPsOutContextList.stream().filter(o -> (null != o && o.getWorkOrderNo().equals(productionPsInContext.getWorkOrderNo()))).findFirst().get().foreignKey(productionPsInContext.getForeignKey());
//获取装配件信息
prodRuleContextList.add(getProdRuleSortContext(reqBean, productionProcessContext, cellEquipContext, productionPsInContext)); prodRuleContextList.add(getProdRuleSortContext(reqBean, productionProcessContext, cellEquipContext, productionPsInContext));
} }

@ -36,7 +36,7 @@ public class MesProductionDataSaveStepService extends BaseStepService {
//保存零件条码信息工步 //保存零件条码信息工步
((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).executeInState(reqBean); ((IStepService) SpringContextsUtil.getBean("mesProductSnSaveStepService")).executeInState(reqBean);
//保存工位队列信息工步 //保存工位队列信息工步 【排序】
if (isSort) ((IStepService) SpringContextsUtil.getBean("mesWorkOrderQueueSaveStepService")).executeInState(reqBean); if (isSort) ((IStepService) SpringContextsUtil.getBean("mesWorkOrderQueueSaveStepService")).executeInState(reqBean);
//加工异常处理工步 //加工异常处理工步
@ -45,8 +45,8 @@ public class MesProductionDataSaveStepService extends BaseStepService {
//生成加工记录工步 //生成加工记录工步
((IStepService) SpringContextsUtil.getBean("mesProductionRecordGenerateStepService")).executeInState(reqBean); ((IStepService) SpringContextsUtil.getBean("mesProductionRecordGenerateStepService")).executeInState(reqBean);
//保存装配记录工步 //保存装配记录工步 【非排序】
((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).executeInState(reqBean); if (!isSort)((IStepService) SpringContextsUtil.getBean("mesAssemblySaveStepService")).executeInState(reqBean);
//保存工单信息工步 //保存工单信息工步
((IStepService) SpringContextsUtil.getBean("mesWorkOrderSaveStepService")).executeInState(reqBean); ((IStepService) SpringContextsUtil.getBean("mesWorkOrderSaveStepService")).executeInState(reqBean);

@ -83,10 +83,6 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!"); if (CollectionUtils.isEmpty(productionPsOutContextList)) stepExpSendMsgAndThrowEx(reqBean, resultBean.writeDbLog(), "当前不存在产出零件条码信息,请重置工序解决!");
//获取上下文(头道)模具号
MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getFirstMouldNoContext(reqBean);
if (null == equipVariableCollectContext) equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean);
//从上下文中取出工位当前要使用的设备 //从上下文中取出工位当前要使用的设备
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
@ -99,8 +95,10 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
MesWorkCell workCell = productionProcessContext.getWorkCell(); MesWorkCell workCell = productionProcessContext.getWorkCell();
//获取上下文(头道)模具号
String mouldNo = getMouldNo(reqBean, workCenter, prodRuleContextList);
//生成加工记录 //生成加工记录
String mouldNo = null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null;
productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProductionRecordData(reqBean, workCenter, mouldNo, prodRuleContextList, productionProcessContext, o, prMap, cellEquipContext, CollectionUtils.isEmpty(psiMap) ? null : psiMap.get(o.getForeignKey()))); productionPsOutContextList.stream().filter(o -> null != o).forEach(o -> saveProductionRecordData(reqBean, workCenter, mouldNo, prodRuleContextList, productionProcessContext, o, prMap, cellEquipContext, CollectionUtils.isEmpty(psiMap) ? null : psiMap.get(o.getForeignKey())));
//保存上下文产品加工规则信息集合 //保存上下文产品加工规则信息集合
@ -176,10 +174,15 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
productionRecord.setFid(UUID.randomUUID().toString()); productionRecord.setFid(UUID.randomUUID().toString());
productionRecord.setOneMouldMoreId(UUID.randomUUID().toString()); productionRecord.setOneMouldMoreId(UUID.randomUUID().toString());
//排序可能会先赋加工记录ID, 装配件记录前置工步写入时需要写加工记录ID
if (!StringUtils.isEmpty(prodRuleContext.getProductionRecordId())) productionRecord.setId(prodRuleContext.getProductionRecordId());
productionRecord = productionRecordRepository.insert(productionRecord); productionRecord = productionRecordRepository.insert(productionRecord);
if (null != prodRuleContext) prodRuleContextList.stream().filter(o -> (null != o && //判断加工规则有没有赋值加工记录ID或者模具号
!StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(productionPsOutContext.getForeignKey()) == 0)).findFirst().get().productionRecordId(productionRecord.getId()).mouldNo(mouldNo); if (null != prodRuleContext && (StringUtils.isEmpty(prodRuleContext.getProductionRecordId()) || StringUtils.isEmpty(prodRuleContext.getMouldNo()))) {
prodRuleContextList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getForeignKey()) && o.getForeignKey().compareTo(productionPsOutContext.getForeignKey()) == 0)).findFirst().get().productionRecordId(productionRecord.getId()).mouldNo(mouldNo);
}
} }
@ -200,4 +203,19 @@ public class MesProductionRecordGenerateStepService extends BaseStepService {
return (null != optional && optional.isPresent()) ? true : false; return (null != optional && optional.isPresent()) ? true : false;
} }
//获取模具号
private String getMouldNo(StationRequestBean reqBean, MesWorkCenter workCenter, List<MesProdRuleContext> prodRuleContextList) {
//非排序 先获取头道模具号, 没有再获取模具号
if (workCenter.getCenterType().compareTo(MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue()) == 0) {
MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getFirstMouldNoContext(reqBean);
if (null == equipVariableCollectContext) equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean);
return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null;
}
//排序, 加工规则上下文中可能已经存了模具号, 装配件前置绑定的时候会写模具号
Optional<MesProdRuleContext> optional = prodRuleContextList.stream().filter(o -> null != o && !StringUtils.isEmpty(o.getMouldNo())).findFirst();
if (null != optional && optional.isPresent()) return optional.get().getMouldNo();
MesEquipVariableCollectContext equipVariableCollectContext = productionDispatchContextStepService.getMouldNoContext(reqBean);
return null != equipVariableCollectContext ? equipVariableCollectContext.getEquipVariableValue() : null;
}
} }

@ -279,7 +279,7 @@ public class MesWorkOrderCutProductSnSaveStepService extends BaseStepService {
productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
productionAssembly.setIsSkip(CommonEnumUtil.FALSE); productionAssembly.setIsSkip(CommonEnumUtil.FALSE);
productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); productionAssembly.setAreaCode(reqBean.getAreaCode());
productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode());
productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode());
productionAssembly.setProcessCode(reqBean.getProcessCode()); productionAssembly.setProcessCode(reqBean.getProcessCode());

@ -65,7 +65,7 @@ public class MesWorkOrderCutSaveStepService extends BaseStepService {
productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()); productionAssembly.setIsOrigSn(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
productionAssembly.setIsSkip(CommonEnumUtil.FALSE); productionAssembly.setIsSkip(CommonEnumUtil.FALSE);
productionAssembly.setAreaCode(reqBean.getWorkCenterCode()); productionAssembly.setAreaCode(reqBean.getAreaCode());
productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode()); productionAssembly.setWorkCenterCode(reqBean.getWorkCenterCode());
productionAssembly.setWorkCellCode(reqBean.getWorkCellCode()); productionAssembly.setWorkCellCode(reqBean.getWorkCellCode());
productionAssembly.setProcessCode(reqBean.getProcessCode()); productionAssembly.setProcessCode(reqBean.getProcessCode());

@ -131,6 +131,11 @@ public class MesEquipVariableCollectContext implements Serializable {
return this; return this;
} }
public MesEquipVariableCollectContext trimValue() {
if (!StringUtils.isEmpty(this.equipVariableValue)) this.equipVariableValue = this.equipVariableValue.trim();
return this;
}
public MesEquipVariableCollectContext replaceValue(String realEquipVariableValue, String equipVariableValue) { public MesEquipVariableCollectContext replaceValue(String realEquipVariableValue, String equipVariableValue) {
this.realEquipVariableValue = realEquipVariableValue; this.realEquipVariableValue = realEquipVariableValue;
this.equipVariableValue = equipVariableValue; this.equipVariableValue = equipVariableValue;

@ -47,6 +47,9 @@ public class MesProductionAssemblyContext implements Serializable {
@ApiParam("自制件ID") @ApiParam("自制件ID")
public Long productSnId; public Long productSnId;
@ApiParam("数据来源")
public Integer dataSource;
@ApiParam("来源ID") @ApiParam("来源ID")
public Long sourceId; public Long sourceId;

@ -50,6 +50,8 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
BeanUtils.copyProperties(prodRuleContext, this); BeanUtils.copyProperties(prodRuleContext, this);
this.dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.NOSORT.getValue();
this.sourceId = assemblyNosortCfg.getId(); this.sourceId = assemblyNosortCfg.getId();
this.partNo = prodRuleContext.getOutPartNo(); this.partNo = prodRuleContext.getOutPartNo();

@ -109,6 +109,18 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
@ApiParam(value = "装配件记录表ID") @ApiParam(value = "装配件记录表ID")
public Long id; public Long id;
@ApiParam("开模记录ID")
private Long mouldRecordId;
@ApiParam("加工记录ID")
private Long productionRecordId;
@ApiParam(value = "工单装配件信息备注")
public String woaRemark;
@ApiParam(value = "装配件记录信息备注")
public String paRemark;
@ApiParam(value = "装配件记录表创建时间") @ApiParam(value = "装配件记录表创建时间")
public String createDatetime; public String createDatetime;
@ -118,10 +130,16 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
@ApiParam(name = "是否顺序扫描") @ApiParam(name = "是否顺序扫描")
private Integer isSeqScan; private Integer isSeqScan;
@ApiParam(name = "是否保存到DB")
private Integer isSaveDb = CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue();
public MesProductionAssemblySortContext() {} public MesProductionAssemblySortContext() {}
//前道工位
public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly) { public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly) {
this.dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue();
if (null != workOrderAssembly) { if (null != workOrderAssembly) {
BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS);
this.sourceId = workOrderAssembly.getId(); this.sourceId = workOrderAssembly.getId();
@ -130,7 +148,8 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO;
if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO;
if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0 ||
this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue();
if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue()) == 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType))
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue();
@ -138,17 +157,22 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
return this; return this;
} }
//末道工位
public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly, MesProductionAssembly productionAssembly, MesWorkCell workCell) { public MesProductionAssemblySortContext copy(MesWorkOrderAssembly workOrderAssembly, MesProductionAssembly productionAssembly, MesWorkCell workCell) {
if (null != workOrderAssembly) { if (null != workOrderAssembly) {
BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); BeanUtils.copyProperties(workOrderAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS);
this.sourceId = workOrderAssembly.getId(); this.sourceId = workOrderAssembly.getId();
this.woaRemark = workOrderAssembly.getRemark();
} }
if (null != productionAssembly) { if (null != productionAssembly) {
this.id = productionAssembly.getId(); this.id = productionAssembly.getId();
this.mouldRecordId = productionAssembly.getMouldRecordId();
this.productionRecordId = productionAssembly.getProductionRecordId();
this.createDatetime = productionAssembly.getCreateDatetime(); this.createDatetime = productionAssembly.getCreateDatetime();
this.createUser = productionAssembly.getCreateUser(); this.createUser = productionAssembly.getCreateUser();
this.paRemark = productionAssembly.getRemark();
} }
if (null != workCell && !StringUtils.isEmpty(workCell.getIsSeqScan())) this.isSeqScan = workCell.getIsSeqScan(); if (null != workCell && !StringUtils.isEmpty(workCell.getIsSeqScan())) this.isSeqScan = workCell.getIsSeqScan();
@ -156,7 +180,8 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.routeSeq)) this.routeSeq = MesPcnExtConstWords.ZERO;
if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO; if (StringUtils.isEmpty(this.processSeq)) this.processSeq = MesPcnExtConstWords.ZERO;
if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue(); if (StringUtils.isEmpty(this.assemblyStatus) || this.assemblyStatus.compareTo(MesPcnExtConstWords.ZERO) == 0 ||
this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_20.getValue()) == 0) this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_30.getValue();
if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType)) if (this.assemblyStatus.compareTo(MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue()) != 0 && !MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkIsNeedScan(this.matchType))
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_10.getValue();
@ -203,6 +228,11 @@ public class MesProductionAssemblySortContext extends MesProductionAssemblyConte
return this; return this;
} }
public MesProductionAssemblySortContext isSaveDb() {
this.isSaveDb = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();
return this;
}
public MesProductionAssemblySortContext copy(MesProductionAssembly productionAssembly) { public MesProductionAssemblySortContext copy(MesProductionAssembly productionAssembly) {
if (null != productionAssembly) BeanUtils.copyProperties(productionAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS); if (null != productionAssembly) BeanUtils.copyProperties(productionAssembly, this, MesPcnExtConstWords.BASE_BEAN_FIELDS);

@ -139,6 +139,8 @@ public class MesPcnExtConstWords {
public static final String DATD_SOURCE = "dataSource"; public static final String DATD_SOURCE = "dataSource";
// 数据来源ID // 数据来源ID
public static final String SOURCE_ID = "sourceId"; public static final String SOURCE_ID = "sourceId";
// 是否跳过
public static final String IS_SKIP = "isSkip";
// 装配件绑定状态 // 装配件绑定状态
public static final String ASSEMBLY_STATUS = "assemblyStatus"; public static final String ASSEMBLY_STATUS = "assemblyStatus";
// 装配件绑定状态 // 装配件绑定状态
@ -203,6 +205,8 @@ public class MesPcnExtConstWords {
public static final String DATA = "data"; public static final String DATA = "data";
// 开模记录ID // 开模记录ID
public static final String MOULD_RECORD_ID = "mouldRecordId"; public static final String MOULD_RECORD_ID = "mouldRecordId";
// 加工记录ID
public static final String PRODUCTION_RECORD_ID = "productionRecordId";
// 工步代码 // 工步代码
public static final String STEP_CODE = "stepCode"; public static final String STEP_CODE = "stepCode";
// 生产顺序号 // 生产顺序号
@ -527,6 +531,9 @@ public class MesPcnExtConstWords {
//SPS强过配置code //SPS强过配置code
public static final String SPS_STRONGER_PASS = "SPS_STRONGER_PASS"; public static final String SPS_STRONGER_PASS = "SPS_STRONGER_PASS";
// JIS跳过码
public static final String JIS_SKIP_CODE = "JIS_SKIP_CODE";
//发运解析条码最大长度 //发运解析条码最大长度
public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH"; public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH";
//裁片工单号 //裁片工单号

Loading…
Cancel
Save