调配原料演示问题修复

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;
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);
}

@ -58,6 +58,8 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
private SnowflakeIdMaker snowflakeIdMaker;
@Autowired
protected MesContainerPackageDetailFeedingRepository packageDetailFeedingRDao;
@Autowired
private MesRawSnWeightRecordRepository rawSnWeightRecordRDao;
private MesContainerPackage getContainerPackage(MesContainerSnBindModel model, String containerSn) {
MesContainerPackage containerPackage = containerPackageRDao.getByProperty(
@ -467,7 +469,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
containerPart.setContainerType(containerType.getContainerType());
containerPart.setContainerPackage(containerPackage);
MesContainerPackageDetail packageDetail = createContainerPackageDetail(model, containerPackage, containerPart, matchResult);
MesContainerPackageDetail packageDetail = createContainerPackageDetail(containerType, model, containerPackage, containerPart, matchResult);
List<MesContainerPackageDetail> combPackageDetails = new ArrayList<>(oldPackageDetails);
if (CollectionUtils.isEmpty(bottomPackageDetails)) {
combPackageDetails.add(packageDetail);
@ -692,7 +694,7 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
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 dataType = matchResult.get(MesPcnExtConstWords.DATA_TYPE);
MesContainerPackageDetail detail = new MesContainerPackageDetail();
@ -710,6 +712,14 @@ public class MesContainerSnBindServiceImpl implements IMesContainerSnBindService
detail.setSnStatus(MesExtEnumUtil.CONTAINER_BARCODE_STATUS.STATUS_10.getValue());
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;
}

@ -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.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
import cn.estsh.i3plus.pojo.mes.bean.MesPart;
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.bean.*;
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.MesRawWeightCfgRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
@ -34,9 +32,11 @@ public class MesRawSnWeightRecordServiceImpl implements IMesRawSnWeightRecordSer
private MesRawMixCfgDetailRepository rawMixCfgDetailRDao;
@Autowired
private IMesPartService partService;
@Autowired
private MesRawSnWeightRecordLogRepository rawSnWeightRecordLogRDao;
@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(
new String[]{"organizeCode", "isValid", "isDeleted", "outPartNo", "partNo"},
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());
ConvertBean.serviceModelInitialize(record, username);
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

@ -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.IMesProductionDispatchContextStepService;
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.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.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.MesPcnEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.DdlPreparedPack;
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.model.StationRequestBean;
import cn.estsh.i3plus.pojo.mes.model.StationResultBean;
import cn.estsh.i3plus.pojo.mes.model.StepResult;
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 lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
@ -25,7 +32,7 @@ import org.springframework.util.StringUtils;
import java.util.*;
/**
* @Description :
* @Description :
* @Author : jason.niu
**/
@Slf4j
@ -41,6 +48,10 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
private MesAssemblyShowNosortStepService assemblyShowNosortStepService;
@Autowired
private MesProduceSnRepository produceSnRDao;
@Autowired
private IMesTimeEfficientCfgMatchService timeEfficientCfgMatchService;
@Autowired
private MesRawSnWeightRecordRepository rawSnWeightRecordRDao;
@Override
public StepResult execute(StationRequestBean reqBean) {
@ -72,6 +83,7 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
}
MesWorkCenter workCenter = productionProcessContext.getWorkCenter();
// 是否所有装配件均已扫描过
if (isAllAssemblyMatchRawMix(workCenter, prodRuleContextList)) {
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "调配原料装配成功!");
}
@ -148,6 +160,20 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
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,存在特殊的规则会转换成新的条码
String assemblySn = !result.containsKey(MesPcnExtConstWords.ASSEMBLY_SN) ? barcode : (String) result.get(MesPcnExtConstWords.ASSEMBLY_SN);
MesProductionAssemblyNosortContext filter = (MesProductionAssemblyNosortContext) result.get(MesPcnExtConstWords.DATA);
@ -170,6 +196,20 @@ public class MesAssemblyMatchRawMixStepService extends BaseStepService {
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) {
Map<String, Object> result = new HashMap<>();
result.put(MesPcnExtConstWords.RESULT, false);

@ -229,6 +229,6 @@ public class MesAssemblySaveStepService extends BaseStepService {
//保存装配件绑定记录
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.MesRawMixCfgDetailRepository;
import cn.estsh.i3plus.pojo.mes.util.MesExtEnumUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -74,11 +75,14 @@ public class MesGlueSprayedAmountStepService extends BaseStepService {
//当前工位使用的设备
MesCellEquipContext cellEquipContext = productionProcessContext.getCurCellEquip();
List<Long> 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);
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(), new ArrayList<>(equipVariableIds.keySet()));
Map<String, String> variableMap = new HashMap<>();
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.setParamValue(JSONUtil.toJsonStr(variableMap));
equipVarParamLogRDao.insert(paramLog);
}
return stepSuccessCompleteAndSendMsgReturn(reqBean, resultBean.writeDbLog(), stepResult, "统计每摸模自动喷胶量!");
}
private List<Long> getEquipmentVariable(String organizeCode, Integer equipId) {
List<Long> result = new ArrayList<>();
if (equipId == null) {
return result;
}
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(equipId, "equipId", packBean);
List<MesEquipmentVariableParam> variableParams = equipVarParamRDao.findByHqlWhere(packBean);
for (MesEquipmentVariableParam param : variableParams) {
result.add(param.getEquipVariableId().longValue());
// 获取设备变量ID对应的变量参数类型
private Map<Long, String> getEquipmentVariable(String organizeCode, Integer equipId) {
Map<Long, String> result = new HashMap<>();
if (equipId != null) {
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
DdlPreparedPack.getNumEqualPack(equipId, "equipId", packBean);
List<MesEquipmentVariableParam> variableParams = equipVarParamRDao.findByHqlWhere(packBean);
for (MesEquipmentVariableParam param : variableParams) {
result.put(param.getEquipVariableId().longValue(), param.getParamType());
}
}
return null;
return result;
}
}

Loading…
Cancel
Save