调配原料演示问题修复

mes-uat-changshu0609^2
jason 2 weeks ago
parent c77004ef62
commit a9cd69ee86

@ -7,6 +7,6 @@ import cn.estsh.i3plus.ext.mes.pcn.pojo.context.MesProductionPsOutContext;
import java.util.List; import java.util.List;
public interface IMesRawSnWeightRecordService { public interface IMesRawSnWeightRecordService {
void insertRawRemainWeightRecord(MesProductionAssemblyContext context, String organizeCode, String username); void insertRawRemainWeightRecord(String productSn, MesProductionAssemblyContext context, String organizeCode, String username);
void insertOutPartNoWeightRecord(MesProductionPsOutContext productionPsOutContext, List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList, String organizeCode, String username); void insertOutPartNoWeightRecord(MesProductionPsOutContext productionPsOutContext, List<MesProductionAssemblyNosortContext> productionAssemblyNosortContextList, String organizeCode, String username);
} }

@ -58,6 +58,8 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
private SnowflakeIdMaker snowflakeIdMaker; private SnowflakeIdMaker snowflakeIdMaker;
@Autowired @Autowired
protected MesContainerPackageDetailFeedingRepository packageDetailFeedingRDao; protected MesContainerPackageDetailFeedingRepository packageDetailFeedingRDao;
@Autowired
private MesRawSnWeightRecordRepository rawSnWeightRecordRDao;
private MesContainerPackage getContainerPackage(MesContainerSnBindModel model, String containerSn) { private MesContainerPackage getContainerPackage(MesContainerSnBindModel model, String containerSn) {
MesContainerPackage containerPackage = containerPackageRDao.getByProperty( MesContainerPackage containerPackage = containerPackageRDao.getByProperty(
@ -467,7 +469,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
containerPart.setContainerType(containerType.getContainerType()); containerPart.setContainerType(containerType.getContainerType());
containerPart.setContainerPackage(containerPackage); containerPart.setContainerPackage(containerPackage);
MesContainerPackageDetail packageDetail = createContainerPackageDetail(model, containerPackage, containerPart, matchResult); MesContainerPackageDetail packageDetail = createContainerPackageDetail(containerType, model, containerPackage, containerPart, matchResult);
List<MesContainerPackageDetail> combPackageDetails = new ArrayList<>(oldPackageDetails); List<MesContainerPackageDetail> combPackageDetails = new ArrayList<>(oldPackageDetails);
if (CollectionUtils.isEmpty(bottomPackageDetails)) { if (CollectionUtils.isEmpty(bottomPackageDetails)) {
combPackageDetails.add(packageDetail); combPackageDetails.add(packageDetail);
@ -692,7 +694,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
return containerPackage; return containerPackage;
} }
private MesContainerPackageDetail createContainerPackageDetail(MesContainerSnBindModel model, MesContainerPackage containerPackage, MesContainerPartsModel containerPart, Map<String, Object> matchResult) { private MesContainerPackageDetail createContainerPackageDetail(MesContainerType containerType, MesContainerSnBindModel model, MesContainerPackage containerPackage, MesContainerPartsModel containerPart, Map<String, Object> matchResult) {
Object qty = matchResult.get(MesPcnExtConstWords.QTY); Object qty = matchResult.get(MesPcnExtConstWords.QTY);
Object dataType = matchResult.get(MesPcnExtConstWords.DATA_TYPE); Object dataType = matchResult.get(MesPcnExtConstWords.DATA_TYPE);
MesContainerPackageDetail detail = new MesContainerPackageDetail(); MesContainerPackageDetail detail = new MesContainerPackageDetail();
@ -710,6 +712,14 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
detail.setSnStatus(MesExtEnumUtil.CONTAINER_BARCODE_STATUS.STATUS_10.getValue()); detail.setSnStatus(MesExtEnumUtil.CONTAINER_BARCODE_STATUS.STATUS_10.getValue());
ConvertBean.serviceModelInitialize(detail, model.getUserName()); ConvertBean.serviceModelInitialize(detail, model.getUserName());
if (Objects.equals(containerType.getContainerType(), MesExtEnumUtil.CONTAINER_TYPE.CONTAINER_TYPE_50.getValue())) {
MesRawSnWeightRecord rawSnWeightRecord = rawSnWeightRecordRDao.getByProperty(new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, "barCode"},
new Object[]{containerPackage.getOrganizeCode(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), model.getBarCode()});
if (rawSnWeightRecord != null) {
detail.setCreateDatetime(rawSnWeightRecord.getCreateDatetime());
}
}
return detail; return detail;
} }

@ -10,11 +10,9 @@ import cn.estsh.i3plus.platform.common.convert.ConvertBean;
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.MesPart; import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.MesRawMixCfgDetail;
import cn.estsh.i3plus.pojo.mes.bean.MesRawSnWeightRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesRawWeightCfg;
import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawSnWeightRecordLogRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawSnWeightRecordRepository; import cn.estsh.i3plus.pojo.mes.repository.MesRawSnWeightRecordRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawWeightCfgRepository; import cn.estsh.i3plus.pojo.mes.repository.MesRawWeightCfgRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -34,9 +32,11 @@ public class MesRawSnWeightRecordServiceImpl implements IMesRawSnWeightRecordSer
private MesRawMixCfgDetailRepository rawMixCfgDetailRDao; private MesRawMixCfgDetailRepository rawMixCfgDetailRDao;
@Autowired @Autowired
private IMesPartService partService; private IMesPartService partService;
@Autowired
private MesRawSnWeightRecordLogRepository rawSnWeightRecordLogRDao;
@Override @Override
public void insertRawRemainWeightRecord(MesProductionAssemblyContext context, String organizeCode, String username) { public void insertRawRemainWeightRecord(String productSn, MesProductionAssemblyContext context, String organizeCode, String username) {
MesRawMixCfgDetail detail = rawMixCfgDetailRDao.getByProperty( MesRawMixCfgDetail detail = rawMixCfgDetailRDao.getByProperty(
new String[]{"organizeCode", "isValid", "isDeleted", "outPartNo", "partNo"}, new String[]{"organizeCode", "isValid", "isDeleted", "outPartNo", "partNo"},
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), context.getPartNo(), context.getAssemblyPartNo()}); new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.IS_DEAL.NO.getValue(), context.getPartNo(), context.getAssemblyPartNo()});
@ -61,6 +61,16 @@ public class MesRawSnWeightRecordServiceImpl implements IMesRawSnWeightRecordSer
record.setRawType(detail.getRawType()); record.setRawType(detail.getRawType());
ConvertBean.serviceModelInitialize(record, username); ConvertBean.serviceModelInitialize(record, username);
rawSnWeightRecordRDao.insert(record); rawSnWeightRecordRDao.insert(record);
MesRawSnWeightRecordLog recordLog = new MesRawSnWeightRecordLog();
recordLog.setOrganizeCode(organizeCode);
recordLog.setProductSn(productSn);
recordLog.setAssemblySn(context.getAssemblySn());
recordLog.setOriginWeight(remainQty);
recordLog.setDeductionWeight(context.getQty());
recordLog.setRemainWeight(record.getNetWeight());
ConvertBean.serviceModelInitialize(recordLog, username);
rawSnWeightRecordLogRDao.insert(recordLog);
} }
@Override @Override

@ -3,18 +3,25 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.step;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService; import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNumberRuleMatchDispatchService;
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;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesTimeEfficientCfgMatchService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException; import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
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.tool.TimeTool;
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.enumutil.MesPcnEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn; import cn.estsh.i3plus.pojo.mes.bean.MesProduceSn;
import cn.estsh.i3plus.pojo.mes.bean.MesRawSnWeightRecord;
import cn.estsh.i3plus.pojo.mes.bean.MesShift;
import cn.estsh.i3plus.pojo.mes.bean.MesWorkCenter; 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.MesProduceSnRepository; import cn.estsh.i3plus.pojo.mes.repository.MesProduceSnRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawSnWeightRecordRepository;
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.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -25,7 +32,7 @@ import org.springframework.util.StringUtils;
import java.util.*; import java.util.*;
/** /**
* @Description : * @Description :
* @Author : jason.niu * @Author : jason.niu
**/ **/
@Slf4j @Slf4j
@ -41,6 +48,10 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
private MesAssemblyShowNosortStepService assemblyShowNosortStepService; private MesAssemblyShowNosortStepService assemblyShowNosortStepService;
@Autowired @Autowired
private MesProduceSnRepository produceSnRDao; private MesProduceSnRepository produceSnRDao;
@Autowired
private IMesTimeEfficientCfgMatchService timeEfficientCfgMatchService;
@Autowired
private MesRawSnWeightRecordRepository rawSnWeightRecordRDao;
@Override @Override
public StepResult execute(StationRequestBean reqBean) { public StepResult execute(StationRequestBean reqBean) {
@ -72,6 +83,7 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
} }
MesWorkCenter workCenter = productionProcessContext.getWorkCenter(); MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
// 是否所有装配件均已扫描过
if (isAllAssemblyMatchRawMix(workCenter, prodRuleContextList)) { if (isAllAssemblyMatchRawMix(workCenter, prodRuleContextList)) {
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "调配原料装配成功!"); return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "调配原料装配成功!");
} }
@ -148,6 +160,20 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
continue; continue;
} }
MesContainerPackageDetailContext containerPackageDetailContext = new MesContainerPackageDetailContext();
containerPackageDetailContext.setPartNo(productionAssemblyNosortContext.getAssemblyPartNo());
containerPackageDetailContext.setBarCode(barcode);
String firstOpenTime = getRawSnWeightRecordFirstOpenTime(reqBean.getOrganizeCode(), barcode);
containerPackageDetailContext.setCreateDatetime(firstOpenTime);
//验证时效性
Map<String, Object> timeEfficientResult = timeEfficientCfgMatchService.checkSnTimelinessContainerMatch(reqBean.getOrganizeCode(), containerPackageDetailContext, productionAssemblyNosortContext.getSourceId());
if (!(Boolean)timeEfficientResult.get(MesPcnExtConstWords.RESULT)) {
String msg = (String) timeEfficientResult.get(MesPcnExtConstWords.MESSAGE);
stepResult.setMsg(msg);
return false;
}
//验证返回result里面是否存在assemblySn,存在特殊的规则会转换成新的条码 //验证返回result里面是否存在assemblySn,存在特殊的规则会转换成新的条码
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? barcode : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN); String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? barcode : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
MesProductionAssemblyNosortContext filter = (MesProductionAssemblyNosortContext) result.get(MesPcnExtConstWords.DATA); MesProductionAssemblyNosortContext filter = (MesProductionAssemblyNosortContext) result.get(MesPcnExtConstWords.DATA);
@ -170,6 +196,20 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
return false; return false;
} }
/**
*
* @param organizeCode
* @param barCode
* @return
*/
private String getRawSnWeightRecordFirstOpenTime(String organizeCode, String barCode) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getStringEqualPack(barCode, "barCode", packBean);
DdlPreparedPack.getOrderBy("createDatetime", CommonEnumUtil.ASC_OR_DESC.ASC.getValue(), packBean);
MesRawSnWeightRecord record = rawSnWeightRecordRDao.getByProperty(packBean);
return record != null ? record.getCreateDatetime() : TimeTool.getNowTime(true);
}
private Map<String, Object> checkProductSnRule(String organizeCode, String barcode) { private Map<String, Object> checkProductSnRule(String organizeCode, String barcode) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
result.put(MesPcnExtConstWords.RESULT, false); result.put(MesPcnExtConstWords.RESULT, false);

@ -229,6 +229,6 @@ public class MesAssemblySaveStepService extends BaseStepService {
//保存装配件绑定记录 //保存装配件绑定记录
insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList); insertProductionAssembly(reqBean, productionProcessContext, cellEquipContext, prodRuleContext, productionPsOutContext, productionAssemblyNosortContext, scanMonitorContext, productSnIdList);
//写入调配原料剩余数量 //写入调配原料剩余数量
rawSnWeightRecordService.insertRawRemainWeightRecord(productionAssemblyNosortContext, reqBean.getOrganizeCode(), reqBean.getUserInfo()); rawSnWeightRecordService.insertRawRemainWeightRecord(productionPsOutContext.getProductSn(), productionAssemblyNosortContext, reqBean.getOrganizeCode(), reqBean.getUserInfo());
} }
} }

@ -21,6 +21,7 @@ import cn.estsh.i3plus.pojo.mes.repository.MesEquipmentVariableParamRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository; import cn.estsh.i3plus.pojo.mes.repository.MesPartRepository;
import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository; import cn.estsh.i3plus.pojo.mes.repository.MesRawMixCfgDetailRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil; import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -74,11 +75,14 @@ public class MesGlueSprayedAmountStepService extends BaseStepService {
//当前工位使用的设备 //当前工位使用的设备
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip(); MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
List<Long> equipVariableIds = getEquipmentVariable(organizeCode, cellEquipContext.getEquipId()); Map<Long, String> equipVariableIds = getEquipmentVariable(organizeCode, cellEquipContext.getEquipId());
List<MesEquipVariableCollectContext> variableContexts = equipmentLogExtService.getEquipmentLogCollectList(organizeCode, cellEquipContext.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), equipVariableIds); List<MesEquipVariableCollectContext> variableContexts = equipmentLogExtService.getEquipmentLogCollectList(organizeCode, cellEquipContext.getEquipId(), MesExtEnumUtil.EQUIP_VARIABLE_NEED_NEW_VALUE.FALSE.getValue(), MesExtEnumUtil.EQUIP_VARIABLE_TYPE.PROCESS_FINISH.getValue(), new ArrayList<>(equipVariableIds.keySet()));
Map<String, String> variableMap = new HashMap<>(); Map<String, String> variableMap = new HashMap<>();
for (MesEquipVariableCollectContext context : variableContexts) { for (MesEquipVariableCollectContext context : variableContexts) {
variableMap.put(context.(), context.getEquipVariableValue()); String variableParamType = equipVariableIds.get(context.getEquipVariableId());
if (!StringUtils.isEmpty(variableParamType)) {
variableMap.put(variableParamType, context.getEquipVariableValue());
}
} }
//遍历产品加工规则 //遍历产品加工规则
@ -127,25 +131,24 @@ public class MesGlueSprayedAmountStepService extends BaseStepService {
paramLog.setDiluentPartNo(assemblyPartNo); paramLog.setDiluentPartNo(assemblyPartNo);
} }
} }
paramLog.setParamValue(JSONUtil.toJsonStr(variableMap));
equipVarParamLogRDao.insert(paramLog); equipVarParamLogRDao.insert(paramLog);
} }
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "统计每摸模自动喷胶量!"); return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "统计每摸模自动喷胶量!");
} }
private List<Long> getEquipmentVariable(String organizeCode, Integer equipId) { // 获取设备变量ID对应的变量参数类型
List<Long> result = new ArrayList<>(); private Map<Long, String> getEquipmentVariable(String organizeCode, Integer equipId) {
if (equipId == null) { Map<Long, String> result = new HashMap<>();
return result; if (equipId != null) {
} DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(equipId, "equipId", packBean);
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode); List<MesEquipmentVariableParam> variableParams = equipVarParamRDao.findByHqlWhere(packBean);
DdlPreparedPack.getNumEqualPack(equipId, "equipId", packBean); for (MesEquipmentVariableParam param : variableParams) {
List<MesEquipmentVariableParam> variableParams = equipVarParamRDao.findByHqlWhere(packBean); result.put(param.getEquipVariableId().longValue(), param.getParamType());
for (MesEquipmentVariableParam param : variableParams) { }
result.add(param.getEquipVariableId().longValue());
} }
return null; return result;
} }
} }

Loading…
Cancel
Save