返工拆解逻辑调整

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

@ -130,6 +130,9 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
@Autowired
private IMesProductVersionService mesProductVersionService;
@Autowired
private MesQmsScrapRepository mesQmsScrapRepository;
@Override
public ListPager<MesReworkTask> queryReworkTask(MesReworkTask mesReworkTask, Pager pager) {
String organizeCode = !StringUtils.isEmpty(mesReworkTask.getOrganizeCode())?mesReworkTask.getOrganizeCode():AuthUtil.getOrganizeCode();
@ -262,13 +265,27 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
if (!CollectionUtils.isEmpty(reworkTaskDetails)) {
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()) {
mesReworkTask.setReworkedQty(requestModel.getReworkedQty());
mesReworkTask.setScrapQty(requestModel.getScrapQty());
} else {
//拆解
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()) {
@ -284,19 +301,6 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesReworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.FINISH.getValue());
ConvertBean.serviceModelUpdate(mesReworkTask,requestModel.getUserName());
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
@ -608,14 +612,16 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
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);
produceSnDb.setSnStatus(MesExtEnumUtil.PRODUCE_SN_STATUS.ASSEMBLY_DISASSEMBLY.getValue());
@ -637,7 +643,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
mesWorkOrderService.doProductReportReversal(mesWorkOrderDb,productVersion, requestModel.getUserName());
//移库
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) {
@ -648,7 +654,7 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
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) {
//勾选
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());
}
//对于已勾选报废的子件,对于有零件号的项,产生移库(产线的材料库位->报废库(系统参数配置))。移库数量为报废时的明细数量;
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())){
doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate);
doRecursionCheck(assemblyModel.getChildren(),organizeCode,userName,destLocate,responsibleParty);
}
} else if (assemblyModel.getFlag() == CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue()) {
//装配解绑
@ -853,6 +865,22 @@ public class MesReworkTaskServiceImpl implements IMesReworkTaskService {
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) {
MesMove move = new MesMove();
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 DISASSEMBLY_DEST_LOCATE = "DISASSEMBLY_DEST_LOCATE";
}

Loading…
Cancel
Save