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