返工拆解逻辑调整

tags/yfai-pcn-ext-v2.0
jun 8 months ago
parent 59c44cb199
commit 96f6e5cdd6

@ -130,6 +130,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
@Autowired @Autowired
private IMesProductVersionService mesProductVersionService; private IMesProductVersionService mesProductVersionService;
@Autowired
private MesQmsScrapRepository mesQmsScrapRepository;
@Override @Override
public ListPager<MesReworkTask> queryReworkTask(MesReworkTask mesReworkTask, Pager pager) { public ListPager<MesReworkTask> queryReworkTask(MesReworkTask mesReworkTask, Pager pager) {
String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode(); String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode();
@ -262,13 +265,27 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
if (!CollectionUtils.isEmpty(reworkTaskDetails)) { if (!CollectionUtils.isEmpty(reworkTaskDetails)) {
MesPcnException.throwFlowException("还有位置未返工完成,请检查"); MesPcnException.throwFlowException("还有位置未返工完成,请检查");
} }
MesPartInspection mesPartInspection = null;
if (!StringUtils.isEmpty(mesReworkTask.getId())){
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesReworkTask.getId(), "reworkTaskId", packBean);
mesPartInspection = mesPartInspectionRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(mesReworkTask.getId())){
if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){
mesPartInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue());
}
mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelUpdate(mesPartInspection, requestModel.getUserName());
mesPartInspectionRepository.update(mesPartInspection);
}
}
if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue() == mesReworkTask.getType()) { if (MesExtEnumUtil.PART_INSPECTION_SOURCE_TYPE.LOT.getValue() == mesReworkTask.getType()) {
mesReworkTask.setReworkedQty(requestModel.getReworkedQty()); mesReworkTask.setReworkedQty(requestModel.getReworkedQty());
mesReworkTask.setScrapQty(requestModel.getScrapQty()); mesReworkTask.setScrapQty(requestModel.getScrapQty());
} else { } else {
//拆解 //拆解
if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){ if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){
doAssemblyDisassembly(requestModel, mesReworkTask.getSn()); doAssemblyDisassembly(requestModel, mesReworkTask.getSn(),Objects.isNull(mesPartInspection)?"":mesPartInspection.getResponsibleParty());
} }
if (MesExtEnumUtil.NC_TYPE.REWORK.getValue() == requestModel.getType()) { if (MesExtEnumUtil.NC_TYPE.REWORK.getValue() == requestModel.getType()) {
@ -284,19 +301,6 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesReworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue()); mesReworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue());
ConvertBean.serviceModelUpdate(mesReworkTask,requestModel.getUserName()); ConvertBean.serviceModelUpdate(mesReworkTask,requestModel.getUserName());
mesReworkTaskRepository.save(mesReworkTask); mesReworkTaskRepository.save(mesReworkTask);
if (!StringUtils.isEmpty(mesReworkTask.getId())){
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesReworkTask.getOrganizeCode());
DdlPreparedPack.getNumEqualPack(mesReworkTask.getId(), "reworkTaskId", packBean);
MesPartInspection mesPartInspection = mesPartInspectionRepository.getByProperty(packBean);
if (!StringUtils.isEmpty(mesReworkTask.getId())){
if(!CollectionUtils.isEmpty(requestModel.getAssemblyModelList())){
mesPartInspection.setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.DISASSEMBLY.getValue());
}
mesPartInspection.setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
ConvertBean.serviceModelUpdate(mesPartInspection, requestModel.getUserName());
mesPartInspectionRepository.update(mesPartInspection);
}
}
} }
@Override @Override
@ -608,14 +612,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesProduceSnRepository.update(oldProduceSn); mesProduceSnRepository.update(oldProduceSn);
} }
private void doAssemblyDisassembly(MesReworkTaskRequestModel requestModel, String productSn) { private void doAssemblyDisassembly(MesReworkTaskRequestModel requestModel, String productSn,String responsibleParty) {
//报废目标库位
String destLocateNo = getDestLocateNo(requestModel.getOrganizeCode(), productSn);
//总成拆解 //总成拆解
doProductReportReversal(requestModel,productSn); doProductReportReversal(requestModel,productSn,destLocateNo);
//装配件数据处理 //装配件数据处理
doRecursionCheck(requestModel.getAssemblyModelList(), requestModel.getOrganizeCode(), requestModel.getUserName(),mesConfigService.getCfgValue(requestModel.getOrganizeCode(), MesPcnExtConstWords.DISASSEMBLY_DEST_LOCATE)); doRecursionCheck(requestModel.getAssemblyModelList(), requestModel.getOrganizeCode(), requestModel.getUserName(),destLocateNo,responsibleParty);
} }
private void doProductReportReversal(MesReworkTaskRequestModel requestModel, String productSn) { private void doProductReportReversal(MesReworkTaskRequestModel requestModel, String productSn,String locateNo) {
//更新条码状态为总成拆解 //更新条码状态为总成拆解
MesProduceSn produceSnDb = getMesProduceSn(requestModel.getOrganizeCode(), productSn); MesProduceSn produceSnDb = getMesProduceSn(requestModel.getOrganizeCode(), productSn);
produceSnDb.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue()); produceSnDb.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue());
@ -637,7 +643,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName()); mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName());
//移库 //移库
requestModel.setSn(produceSnDb.getProductSn()); requestModel.setSn(produceSnDb.getProductSn());
doCreateMove(requestModel,getDestLocateNo(requestModel.getOrganizeCode(), produceSnDb.getProductSn()),productVersion.getReceiveInventoryPoint(),mesWorkOrderDb.getErpWorkCenter(),mesWorkOrderDb.getPartNo()); doCreateMove(requestModel,locateNo,productVersion.getReceiveInventoryPoint(),mesWorkOrderDb.getErpWorkCenter(),mesWorkOrderDb.getPartNo());
} }
private MesProductVersion getProductVersion(MesWorkOrder mesWorkOrderDb) { private MesProductVersion getProductVersion(MesWorkOrder mesWorkOrderDb) {
@ -648,7 +654,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
return mesProductVersion; return mesProductVersion;
} }
public void doRecursionCheck(List<MesProductionAssemblyModel> assemblyModelList,String organizeCode,String userName,String destLocate){ public void doRecursionCheck(List<MesProductionAssemblyModel> assemblyModelList,String organizeCode,String userName,String destLocate,String responsibleParty){
for (MesProductionAssemblyModel assemblyModel : assemblyModelList) { for (MesProductionAssemblyModel assemblyModel : assemblyModelList) {
//勾选 //勾选
if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) { if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()) {
@ -657,10 +663,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
updateOldSn(organizeCode,assemblyModel.getAssemblySn(), userName, MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue()); updateOldSn(organizeCode,assemblyModel.getAssemblySn(), userName, MesExtEnumUtil.PRODUCE_QC_STATUS.SCRAP.getValue());
} }
//对于已勾选报废的子件,对于有零件号的项,产生移库(产线的材料库位->报废库(系统参数配置))。移库数量为报废时的明细数量; //对于已勾选报废的子件,对于有零件号的项,产生移库(产线的材料库位->报废库(系统参数配置))。移库数量为报废时的明细数量;
doCreateMove(getMesWorkCenter(organizeCode, assemblyModel.getWorkCenterCode()),destLocate, assemblyModel,userName); if(!StringUtils.isEmpty(assemblyModel.getAssemblyPartNo())){
//移库
doCreateMove(getMesWorkCenter(organizeCode, assemblyModel.getWorkCenterCode()),destLocate, assemblyModel,userName);
//报废
doCreateScrap(assemblyModel,userName,responsibleParty,organizeCode);
}
//循环处理数据 //循环处理数据
if(!CollectionUtils.isEmpty(assemblyModel.getChildren())){ if(!CollectionUtils.isEmpty(assemblyModel.getChildren())){
doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate); doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate,responsibleParty);
} }
} else if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) { } else if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) {
//装配解绑 //装配解绑
@ -853,6 +865,22 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
return moveRepository.insert(move); return moveRepository.insert(move);
} }
private void doCreateScrap(MesProductionAssemblyModel assemblyModel,String userName,String responsibleParty,String organizeCode) {
//新增一条数据到报废表中
MesQmsScrap mesQmsScrap = new MesQmsScrap();
mesQmsScrap.setOrganizeCode(organizeCode);
mesQmsScrap.setAsnNo("");
mesQmsScrap.setSource("MES");
mesQmsScrap.setRejectQty(assemblyModel.getScrapQty().intValue());
mesQmsScrap.setPartNo(assemblyModel.getAssemblyPartNo());
mesQmsScrap.setPartName(assemblyModel.getAssemblyPartName());
mesQmsScrap.setDefectTypeName("拆解报废");
mesQmsScrap.setReponsibilityId(responsibleParty);
mesQmsScrap.setNcJudger(userName);
ConvertBean.serviceModelInitialize(mesQmsScrap, userName);
mesQmsScrapRepository.insert(mesQmsScrap);
}
private void doCreateMove(MesWorkCenter mesWorkCenter, String destLocate, MesProductionAssemblyModel assemblyModel,String userName) { private void doCreateMove(MesWorkCenter mesWorkCenter, String destLocate, MesProductionAssemblyModel assemblyModel,String userName) {
MesMove move = new MesMove(); MesMove move = new MesMove();
move.setMatnr(assemblyModel.getAssemblyPartNo()); move.setMatnr(assemblyModel.getAssemblyPartNo());

@ -416,7 +416,4 @@ public class MesPcnExtConstWords {
//发运解析条码最大长度 //发运解析条码最大长度
public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH"; public static final String MAX_SHIPPING_BARCODE_LENGTH = "MAX_SHIPPING_BARCODE_LENGTH";
//拆解目标库位
public static final String DISASSEMBLY_DEST_LOCATE = "DISASSEMBLY_DEST_LOCATE";
} }

Loading…
Cancel
Save