forked from I3-YF/i3plus-mes-pcn-yfai
排序 装配件 前置写库
commit
0d1769c17c
@ -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())});
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue