mes-uat-changshu0609-temp-wj-250616-xisu
王杰 4 weeks ago
parent 5a385d72d0
commit 48d0c74aa8

@ -1,10 +1,12 @@
package cn.estsh.i3plus.ext.mes.pcn.api.busi; package cn.estsh.i3plus.ext.mes.pcn.api.busi;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesContainerPackageDetailContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesContainerPackageDetailContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackage; import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackage;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackageDetail; import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackageDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerSnStation; import cn.estsh.i3plus.pojo.mes.bean.MesContainerSnStation;
import cn.estsh.i3plus.pojo.mes.bean.MesStation; import cn.estsh.i3plus.pojo.mes.bean.MesStation;
import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import java.util.List; import java.util.List;
@ -42,4 +44,10 @@ public interface IMesStationContainerSnExtService {
@ApiOperation(value = "获取容器条码的一条上料明细表信息【可扣减】") @ApiOperation(value = "获取容器条码的一条上料明细表信息【可扣减】")
Boolean checkIsExistContainerPackageDetail(String organizeCode, Long id); Boolean checkIsExistContainerPackageDetail(String organizeCode, Long id);
@ApiOperation(value = "写入扣料记录")
void insertContainerPackageDetailFeeding(StationRequestBean reqBean, MesContainerPackageDetailContext containerPackageDetailContext, MesProductionPsOutContext productionPsOutContext);
@ApiOperation(value = "修改上料明细表信息状态")
void updateContainerPackageDetail(String organizeCode, String userInfo, Long id, Integer snStatus);
} }

@ -2,19 +2,18 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesStationContainerSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesStationContainerSnExtService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesContainerPackageDetailContext; import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesContainerPackageDetailContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords; import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.TimeTool;
import cn.estsh.i3plus.pojo.base.bean.DdlPackBean; import cn.estsh.i3plus.pojo.base.bean.DdlPackBean;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack; import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackage; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerPackageDetail; import cn.estsh.i3plus.pojo.mes.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.bean.MesContainerSnStation; import cn.estsh.i3plus.pojo.mes.repository.*;
import cn.estsh.i3plus.pojo.mes.bean.MesStation;
import cn.estsh.i3plus.pojo.mes.repository.MesContainerPackageDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesContainerPackageRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesContainerSnStationRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesStationRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
@ -46,6 +45,9 @@ public class MesStationContainerSnExtService implements IMesStationContainerSnEx
@Autowired @Autowired
private MesContainerPackageDetailRepository containerPackageDetailRepository; private MesContainerPackageDetailRepository containerPackageDetailRepository;
@Autowired
private MesContainerPackageDetailFeedingRepository containerPackageDetailFeedingRepository;
//根据设备代码查询站点信息 //根据设备代码查询站点信息
@Override @Override
public List<MesStation> getStationList(String organizeCode, String equipmentCode) { public List<MesStation> getStationList(String organizeCode, String equipmentCode) {
@ -125,7 +127,7 @@ public class MesStationContainerSnExtService implements IMesStationContainerSnEx
if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(containerSnList)) return null; if (StringUtils.isEmpty(organizeCode) || CollectionUtils.isEmpty(containerSnList)) return null;
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
if (containerSnList.size() == 1) DdlPreparedPack.getStringEqualPack(containerSnList.get(0), MesPcnExtConstWords.CONTAINER_SN, packBean); if (containerSnList.size() == 1) DdlPreparedPack.getStringEqualPack(containerSnList.get(0), MesPcnExtConstWords.CONTAINER_SN, packBean);
else DdlPreparedPack.getInPackList(containerSnList, MesPcnExtConstWords.STATION, packBean); else DdlPreparedPack.getInPackList(containerSnList, MesPcnExtConstWords.CONTAINER_SN, packBean);
DdlPreparedPack.getNumEqualPack(packageStatus, MesPcnExtConstWords.PACKAGE_STATUS, packBean); DdlPreparedPack.getNumEqualPack(packageStatus, MesPcnExtConstWords.PACKAGE_STATUS, packBean);
return containerPackageRepository.findByHqlWhere(packBean); return containerPackageRepository.findByHqlWhere(packBean);
} }
@ -159,4 +161,28 @@ public class MesStationContainerSnExtService implements IMesStationContainerSnEx
return containerPackageDetailRepository.isExitByHql(packBean); return containerPackageDetailRepository.isExitByHql(packBean);
} }
//写入扣料记录
@Override
public void insertContainerPackageDetailFeeding(StationRequestBean reqBean, MesContainerPackageDetailContext containerPackageDetailContext, MesProductionPsOutContext productionPsOutContext) {
MesContainerPackageDetailFeeding containerPackageDetailFeeding = new MesContainerPackageDetailFeeding();
BeanUtils.copyProperties(containerPackageDetailContext, containerPackageDetailFeeding, MesPcnExtConstWords.BASE_BEAN_FIELDS);
containerPackageDetailFeeding.setQty(containerPackageDetailContext.getDeductionQty());
containerPackageDetailFeeding.setSourceId(containerPackageDetailContext.getId());
if (null != productionPsOutContext) {
containerPackageDetailFeeding.setProductSn(productionPsOutContext.getProductSn());
containerPackageDetailFeeding.setProductSnId(productionPsOutContext.getId());
}
ConvertBean.serviceModelInitialize(containerPackageDetailFeeding, reqBean.getUserInfo());
containerPackageDetailFeedingRepository.insert(containerPackageDetailFeeding);
}
@Override
public void updateContainerPackageDetail(String organizeCode, String userInfo, Long id, Integer snStatus) {
containerPackageDetailRepository.updateByProperties(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.ID},
new Object[]{organizeCode, id},
new String[]{MesPcnExtConstWords.SN_STATUS, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME, MesPcnExtConstWords.SYSTEM_SYNC_STATUS, MesPcnExtConstWords.SYSTEM_SYNC_DATE_TIME},
new Object[]{snStatus, userInfo, TimeTool.getNowTime(true), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), MesPcnExtConstWords.EMPTY});
}
} }

@ -1,13 +1,11 @@
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.IMesProduceSnExtService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesProductionCustomContextStepService;
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;
import cn.estsh.i3plus.platform.common.convert.ConvertBean; import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.MathOperation;
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;
@ -18,6 +16,7 @@ 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.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import com.alibaba.fastjson.JSONObject;
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;
@ -54,6 +53,9 @@ public class MesAssemblySaveStepService extends BaseStepService {
@Autowired @Autowired
private IMesProduceSnExtService produceSnExtService; private IMesProduceSnExtService produceSnExtService;
@Autowired
private IMesStationContainerSnExtService stationContainerSnExtService;
@Override @Override
public StepResult execute(StationRequestBean reqBean) { public StepResult execute(StationRequestBean reqBean) {
@ -124,6 +126,21 @@ public class MesAssemblySaveStepService extends BaseStepService {
if (null == productionAssemblyNosortContext) continue; if (null == productionAssemblyNosortContext) continue;
//容器匹配, 一个装配件信息可能对应多条原料条码
if (productionAssemblyNosortContext.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_80.getValue()) == 0) {
insertMesProductionAssembly80(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
} else {
//一对一
insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
}
}
}
//保存装配件绑定记录
private void insertProductionAssembly(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext,
MesProdRuleContext prodRuleContext, MesProductionPsOutContext productionPsOutContext,
MesProductionAssemblyNosortContext productionAssemblyNosortContext, MesScanMonitorContext scanMonitorContext, List<Long> productSnIdList) {
MesProductionAssembly productionAssembly = new MesProductionAssembly(); MesProductionAssembly productionAssembly = new MesProductionAssembly();
BeanUtils.copyProperties(productionAssemblyNosortContext, productionAssembly); BeanUtils.copyProperties(productionAssemblyNosortContext, productionAssembly);
@ -165,17 +182,38 @@ public class MesAssemblySaveStepService extends BaseStepService {
if (productionAssemblyNosortContext.getIsRepeat().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0 && productionAssemblyNosortContext.getIsRepeat2Cache().compareTo(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) == 0) 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); productionCustomContextStepService.dispatchRepeatAssemblySn(reqBean.getOrganizeCode(), reqBean.getWorkCenterCode(), reqBean.getWorkCellCode(), productionAssemblyNosortContext);
}
} }
private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) { private void saveProductionAssemblyUnique(MesProductionAssembly productionAssembly) {
if (productionAssembly.getMatchType().compareTo(MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.MATCH_TYPE_30.getValue()) != 0 || StringUtils.isEmpty(productionAssembly.getAssemblySn())) return; if (!MesExtEnumUtil.ASSEMBLY_MATCH_TYPE.checkUniqueRuleInDb(productionAssembly.getMatchType()) || 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 insertMesProductionAssembly80(StationRequestBean reqBean, MesProductionProcessContext productionProcessContext, MesCellEquipContext cellEquipContext,
MesProdRuleContext prodRuleContext, MesProductionPsOutContext productionPsOutContext,
MesProductionAssemblyNosortContext productionAssemblyNosortContext, MesScanMonitorContext scanMonitorContext, List<Long> productSnIdList) {
//解析扣料信息
List<MesContainerPackageDetailContext> containerPackageDetailContextList = StringUtils.isEmpty(productionAssemblyNosortContext.getContainerSnData()) ? null : JSONObject.parseArray(productionAssemblyNosortContext.getContainerSnData(), MesContainerPackageDetailContext.class);
if (CollectionUtils.isEmpty(containerPackageDetailContextList)) return;
for (MesContainerPackageDetailContext containerPackageDetailContext : containerPackageDetailContextList) {
if (null == containerPackageDetailContext || StringUtils.isEmpty(containerPackageDetailContext.getBarCode())) continue;
//覆盖原料条码字段跟工序用量
productionAssemblyNosortContext.assemblySn(containerPackageDetailContext.getBarCode()).qty(containerPackageDetailContext.getDeductionQty());
//保存装配件绑定记录
insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
//写入扣料记录
stationContainerSnExtService.insertContainerPackageDetailFeeding(reqBean, containerPackageDetailContext, productionPsOutContext);
//修改上料明细表信息状态【扣减完成】
if (MathOperation.compareTo(containerPackageDetailContext.getRemainQty(), new Double(0)) == 0) {
stationContainerSnExtService.updateContainerPackageDetail(reqBean.getOrganizeCode(), reqBean.getUserInfo(), containerPackageDetailContext.getId(), MesExtEnumUtil.CONTAINER_BARCODE_STATUS.STATUS_20.getValue());
}
}
}
} }

@ -195,7 +195,10 @@ public class MesStationDeductionAssemblyStepService extends BaseStepService {
deductionContextList = new ArrayList<>(); deductionContextList = new ArrayList<>();
barCodeList = new ArrayList<>(); barCodeList = new ArrayList<>();
} }
deductionContextList.add(new MesContainerPackageDetailContext(containerPackageDetailContext).deductionQty(MathOperation.sub(remainQtyCache, remainQtyMap2Cache.get(containerPackageDetailContext.getRemainKey()).getRemainQty()))); deductionContextList.add(new MesContainerPackageDetailContext(containerPackageDetailContext)
.remainQty(remainQtyMap2Cache.get(containerPackageDetailContext.getRemainKey()).getRemainQty())
.deductionQty(MathOperation.sub(remainQtyCache, remainQtyMap2Cache.get(containerPackageDetailContext.getRemainKey()).getRemainQty()))
);
barCodeList.add(containerPackageDetailContext.getBarCode()); barCodeList.add(containerPackageDetailContext.getBarCode());
//如果存在未匹配的工序用量 //如果存在未匹配的工序用量

@ -87,6 +87,16 @@ public class MesProductionAssemblyNosortContext extends MesProductionAssemblyCon
return this; return this;
} }
public MesProductionAssemblyNosortContext assemblySn(String assemblySn) {
this.assemblySn = assemblySn;
return this;
}
public MesProductionAssemblyNosortContext qty(Double qty) {
this.qty = qty;
return this;
}
public MesProductionAssemblyNosortContext assemblySkip() { public MesProductionAssemblyNosortContext assemblySkip() {
this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_40.getValue(); this.assemblyStatus = MesExtEnumUtil.ASSEMBLY_STATUS.ASSEMBLY_STATUS_40.getValue();
this.isSkip = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(); this.isSkip = CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue();

Loading…
Cancel
Save