批次防错:不可用规则 作用于菜单功能中的换件

uat-temp-wj-shenshanorder
王杰 3 months ago
parent 48423a2f67
commit 6948872ca3

@ -51,4 +51,7 @@ public interface IMesEquipmentExtService {
@ApiOperation(value = "根据生产线代码查询加工不可用规则信息")
List<MesProdRuleIgnoreCfg> getProdRuleIgnoreCfgListByCenter(String organizeCode, String workCenterCode);
@ApiOperation(value = "根据设备代码, 来源信息查询加工不可用规则信息")
List<MesProdRuleIgnoreCfg> getProdRuleIgnoreCfgList(String organizeCode, String equipmentCode, Integer dataSource, Long sourceId);
}

@ -66,4 +66,7 @@ public interface IMesAssemblyExtService {
@ApiOperation(value = "根据条件修改工单装配件记录的装配状态")
void saveWorkOrderAssemblyStatusByDdlPackBean(DdlPackBean packBean, String userInfo, Integer assemblyStatus);
@ApiOperation(value = "根据ID查询工单装配件信息")
MesWorkOrderAssembly getWorkOrderAssembly(String organizeCode, Long id);
}

@ -206,6 +206,7 @@ public class MesEquipmentExtService implements IMesEquipmentExtService {
return equipSpotCheckContext.isExistSpot().equipmentSpotCheckJson(equipmentSpotCheckList).equipmentSpotCheckDetailJson(equipmentSpotCheckDetailList).equipmentSpotCheckPartJson(equipmentSpotCheckPartList);
}
//根据设备代码查询加工不可用规则信息
@Override
public List<MesProdRuleIgnoreCfg> getProdRuleIgnoreCfgListByEquip(String organizeCode, String equipmentCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode)) return null;
@ -214,8 +215,10 @@ public class MesEquipmentExtService implements IMesEquipmentExtService {
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode});
}
//根据生产线代码查询加工不可用规则信息
@Override
public List<MesProdRuleIgnoreCfg> getProdRuleIgnoreCfgListByCenter(String organizeCode, String workCenterCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workCenterCode)) return null;
List<MesWcEquipment> wcEquipmentList = wcEquipmentRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_CENTER_CODE},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workCenterCode});
@ -227,4 +230,12 @@ public class MesEquipmentExtService implements IMesEquipmentExtService {
else DdlPreparedPack.getInPackList(equipmentCodeList, MesPcnExtConstWords.EQUIPMENT_CODE, packBean);
return prodRuleIgnoreCfgRepository.findByHqlWhere(packBean);
}
//根据设备代码, 来源信息查询加工不可用规则信息
public List<MesProdRuleIgnoreCfg> getProdRuleIgnoreCfgList(String organizeCode, String equipmentCode, Integer dataSource, Long sourceId) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(equipmentCode) || StringUtils.isEmpty(dataSource) || StringUtils.isEmpty(sourceId)) return null;
return prodRuleIgnoreCfgRepository.findByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.EQUIPMENT_CODE, MesPcnExtConstWords.DATD_SOURCE, MesPcnExtConstWords.SOURCE_ID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), equipmentCode, dataSource, sourceId});
}
}

@ -1,9 +1,6 @@
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesPartService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesProdOrgExtService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesReworkTaskService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.IMesTemplateService;
import cn.estsh.i3plus.ext.mes.pcn.api.base.*;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.print.IPrintTemplateStrategyService;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.util.MesPcnException;
@ -37,6 +34,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
import cn.estsh.impp.framework.boot.util.SpringContextsUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.map.HashedMap;
import org.slf4j.Logger;
@ -69,6 +67,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
@Autowired
private MesReworkTaskRepository mesReworkTaskRepository;
@Autowired
private MesPartTypePictureRepository mesPartTypePictureRepository;
@ -137,11 +136,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
@Autowired
private IMesWorkOrderExtService workOrderExtService;
@Autowired
private MesWorkOrderRepository workOrderRepository;
@Autowired
private MesProductVersionRepository productVersionRepository;
@Autowired
private IMesEquipmentExtService equipmentExtService;
@Override
public ListPager<MesReworkTask> queryReworkTask(MesReworkTask mesReworkTask, Pager pager) {
String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode();
@ -489,7 +493,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
Map<String,MesWorkCenter> mesWorkCenterMap = new HashMap<>();
//匹配装配件
for (MesProductionAssembly assembly : productionAssemblies) {
Object context = getContext(requestModel, assembly,mesWorkCenterMap);
Object context = getContext(requestModel, assembly, mesWorkCenterMap);
//匹配规则
Map<String, Object> result = numberRuleMatchDispatchService.matchNumberRule(requestModel.getOrganizeCode(), requestModel.getSn(), context);
//匹配成功
@ -859,20 +863,38 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesProductionAssemblyUniqueRepository.insert(productionAssemblyUnique);
}
private Object getContext(MesReworkTaskRequestModel requestModel, MesProductionAssembly mesProductionAssembly,Map<String,MesWorkCenter> mesWorkCenterMap) {
private Object getContext(MesReworkTaskRequestModel requestModel, MesProductionAssembly mesProductionAssembly, Map<String,MesWorkCenter> mesWorkCenterMap) {
if(StringUtils.isEmpty(mesProductionAssembly.getWorkCenterCode())) MesPcnException.throwFlowException("产线代码不存在");
Object context = null;
MesWorkCenter workCenterDb = null;
MesWorkCenter workCenterDb;
//产线类型
if(!mesWorkCenterMap.containsKey(mesProductionAssembly.getWorkCenterCode())){
workCenterDb = getMesWorkCenter(requestModel.getOrganizeCode(), mesProductionAssembly.getWorkCenterCode());
mesWorkCenterMap.put(mesProductionAssembly.getWorkCenterCode(),workCenterDb);
}else{
} else{
workCenterDb = mesWorkCenterMap.get(mesProductionAssembly.getWorkCenterCode());
}
if (MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == workCenterDb.getCenterType()) context = new MesProductionAssemblySortContext().copy(mesProductionAssembly);
else context = new MesProductionAssemblyNosortContext().copy(mesProductionAssembly);
return context;
//获取不可用规则
String prodRuleIgnoreCfg = getProdRuleIgnoreCfg(requestModel.getOrganizeCode(), workCenterDb.getCenterType(), mesProductionAssembly.getSourceId(), mesProductionAssembly.getEquipmentCode());
return MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == workCenterDb.getCenterType()
? new MesProductionAssemblySortContext().copy(mesProductionAssembly).prodRuleIgnoreCfg(prodRuleIgnoreCfg)
: new MesProductionAssemblyNosortContext().copy(mesProductionAssembly).prodRuleIgnoreCfg(prodRuleIgnoreCfg);
}
//获取不可用规则
private String getProdRuleIgnoreCfg(String organizeCode, Integer centerType, Long sourceId, String equipmentCode) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(centerType) || StringUtils.isEmpty(sourceId) || StringUtils.isEmpty(equipmentCode)) return null;
Long sourceId2IgnoreCfg = null;
if (MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == centerType) {
MesWorkOrderAssembly workOrderAssembly = mesAssemblyExtService.getWorkOrderAssembly(organizeCode, sourceId);
if (null != workOrderAssembly && !StringUtils.isEmpty(workOrderAssembly.getPid())) sourceId2IgnoreCfg = workOrderAssembly.getPid();
} else sourceId2IgnoreCfg = sourceId;
Integer dataSource = MesExtEnumUtil.WORK_CENTER_TYPE.SORT.getValue() == centerType ? MesExtEnumUtil.PROD_RULE_IGNORE_DATA_SOURCE.DATA_SOURCE10.getValue() : MesExtEnumUtil.PROD_RULE_IGNORE_DATA_SOURCE.DATA_SOURCE30.getValue();
if (StringUtils.isEmpty(sourceId2IgnoreCfg)) return null;
List<MesProdRuleIgnoreCfg> prodRuleIgnoreCfgList = equipmentExtService.getProdRuleIgnoreCfgList(organizeCode, equipmentCode, dataSource, sourceId2IgnoreCfg);
if (CollectionUtils.isEmpty(prodRuleIgnoreCfgList)) return null;
return JSONObject.toJSONString(prodRuleIgnoreCfgList);
}
private MesProduceSn getMesProduceSn(String organizeCode, String productSn) {

@ -359,4 +359,12 @@ public class MesAssemblyExtService implements IMesAssemblyExtService {
packBean);
}
@Override
public MesWorkOrderAssembly getWorkOrderAssembly(String organizeCode, Long id) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(id)) return null;
return workOrderAssemblyRepository.getByProperty(
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.ID},
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), id});
}
}

Loading…
Cancel
Save