45858 MES:电子化检验初判和终判批量导入

dev_temp_xw_202503260000_45858
xiangwei.zhang 3 months ago
parent 541ce42f21
commit 690b21b224

@ -3,6 +3,7 @@ package cn.estsh.i3plus.ext.mes.pcn.apiservice.controller.busi;
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IMesNcProcessingService;
import cn.estsh.i3plus.ext.mes.pcn.pojo.constant.MesCommonConstant;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcPersonModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
@ -110,6 +111,36 @@ public class MesNcProcessingController {
}
}
@PostMapping("/save-nc-lt")
@ApiOperation(value = "NC处理")
public ResultBean lotSaveNc(@RequestBody MesNcProcessingInputModel model) {
try {
ValidatorBean.checkNotNull(model.getOrganizeCode(), "工厂不能为空");
ValidatorBean.checkNotNull(model.getUserName(), "操作人不能为空");
ValidatorBean.checkNotNull(model.getPartInspection(), "单据不能为空");
ValidatorBean.checkNotNull(model.getPartInspectionDetailList(), "单据明细不能为空");
if (CollectionUtils.isEmpty(model.getPersonModelList())) {
throw new ImppBusiException("责任人信息不能为空");
}
for (MesNcPersonModel mesNcPersonModel : model.getPersonModelList()) {
if (mesNcPersonModel.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue()
|| mesNcPersonModel.getNcStatus() == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue()) {
ValidatorBean.checkNotNull(mesNcPersonModel.getOnlyPerson(), "责任人不能为空");
}
}
if (CollectionUtils.isEmpty(model.getPartInspectionDetailList())) {
throw new ImppBusiException("不存在可疑信息,请检查数据");
}
ncProcessingService.saveNc(model, model.getOrganizeCode(), false);
return ResultBean.success("NC处理成功");
} catch (ImppBusiException imppException) {
return ResultBean.fail(imppException);
} catch (Exception e) {
return ImppExceptionBuilder.newInstance().buildExceptionResult(e);
}
}
@GetMapping("/query-part-inspection-create-user")
@ApiOperation(value = "查询检验人NC-零件检测-单据 表的createUser")
public ResultBean queryPartInspectionCreateUser(String organizeCode) {

@ -4,10 +4,7 @@ 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.busi.*;
import cn.estsh.i3plus.ext.mes.pcn.apiservice.dao.IMesNcProcessingDao;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingInputModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesNcProcessingPartAndLotModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.MesPartModel;
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.*;
import cn.estsh.i3plus.ext.mes.pcn.pojo.util.MesPcnExtConstWords;
import cn.estsh.i3plus.mes.pcn.api.iservice.busi.ISyncFuncService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
@ -22,6 +19,7 @@ import cn.estsh.i3plus.pojo.base.util.StringUtil;
import cn.estsh.i3plus.pojo.mes.bean.*;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionPerson;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTask;
import cn.estsh.i3plus.pojo.mes.bean.rework.MesReworkTaskDetail;
import cn.estsh.i3plus.pojo.mes.model.GenSerialNoModel;
@ -124,6 +122,10 @@ public class MesNcProcessingService implements IMesNcProcessingService {
@Autowired
private IMesMoveRuleRepository mesMoveRuleRepository;
@Autowired
private MesPartInspectionPersonRepository mesPartInspectionPersonRepository;
@Override
public ListPager<MesPartInspection> queryPartInspectionByPager(MesPartInspection partInspection, Pager pager) {
@ -204,11 +206,8 @@ public class MesNcProcessingService implements IMesNcProcessingService {
//保存数据
saveDate(model, model.getPart(), type, person, org,model.getInventoryLocationCode(),isOrder);
} else {
Integer type = model.getType();
MesDefectType person = StringUtil.isEmpty(model.getPerson())?new MesDefectType():model.getPerson();
//保存数据
saveDate(model, model.getPart(), type, person, org,model.getInventoryLocationCode(), isOrder);
saveLotDate(model, model.getPart(), org, isOrder);
}
}
@ -698,6 +697,194 @@ public class MesNcProcessingService implements IMesNcProcessingService {
}
}
}
/**
*
*
* @param part
* @param model
* @param org
*/
private void saveLotDate(MesNcProcessingInputModel model, MesPartSap part,String org, boolean isOrder) {
String workCenterCode = null == model.getPartInspection() ? null : model.getPartInspection().getWorkCenterCode();
assert model.getPartInspection() != null;
model.getPartInspection().setQmsSync(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue());
String refundSource = configService.getCfgValue(org, "REFUND");
List<MesPartInspectionPerson> personList = new ArrayList<>();
for (MesNcPersonModel mesNcPersonModel : model.getPersonModelList()) {
Integer type = mesNcPersonModel.getNcStatus();
if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.NORMAL.getValue()) {
model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.NORMAL.getValue());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
partInspectionRepository.save(model.getPartInspection());
String target = configService.getCfgValue(org, "LGORT");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getReceiveInventoryPoint();
}
//移库 转正常、放行8000移至2000
MesMove move = createMove(model, sourceValue, target, org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
}
else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue()) {
//生成返工单 根据责任方库区对应关系选择哪个责任方就移动到哪个库区8000移至8002/8003
GenSerialNoModel serialNoModel = new GenSerialNoModel("NC_REWORK");
serialNoModel.setPartNo(part.getPartNo());
ResultBean rb = syncFuncService.syncSerialNo(serialNoModel, model.getPartInspection().getModifyUser(), org, 1);
String rework = "";
if (null != rb && !CollectionUtils.isEmpty(rb.getResultList())) {
rework = (rb.getResultList().get(0)).toString();
}
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
MesReworkTask reworkTask = new MesReworkTask();
reworkTask.setQty(model.getPartInspection().getQty());
reworkTask.setSn(model.getPartInspection().getSn());
reworkTask.setReworkOrder(rework);
reworkTask.setStatus(MesExtEnumUtil.REWORK_TASK_STATUS.CREATE.getValue());
reworkTask.setPartNo(model.getPartInspection().getPartNo());
reworkTask.setPartName(model.getPartInspection().getPartName());
reworkTask.setPartInspectionId(model.getPartInspection().getId());
reworkTask.setOrganizeCode(org);
reworkTask.setResponsibleParty(model.getOnlyPerson());
reworkTask.setDisassembleType(MesPcnExtConstWords.ZERO);
reworkTask.setLotNo(model.getPartInspection().getLotNo());
reworkTask.setType(model.getPartInspection().getSourceType());
ConvertBean.serviceModelInitialize(reworkTask, model.getUserName());
reworkTaskRepository.insert(reworkTask);
//生成返工单明细
List<MesReworkTaskDetail> taskDetailList = new ArrayList<>();
for (MesPartInspectionDetail detail : model.getPartInspectionDetailList()) {
MesReworkTaskDetail taskDetail = new MesReworkTaskDetail();
taskDetail.setPid(reworkTask.getId());
taskDetail.setStatus(MesExtEnumUtil.REWORK_TASK_DETAIL_STATUS.REWORK_TASK_DETAIL_STATUS_10.getValue());
taskDetail.setPartInspectionDetailId(detail.getId());
taskDetail.setOrganizeCode(org);
ConvertBean.serviceModelInitialize(taskDetail, model.getUserName());
taskDetailList.add(taskDetail);
}
reworkTaskDetailRepository.saveAll(taskDetailList);
//model.getPartInspection().setDefectTypeId(person.getId());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.REWORK.getValue());
model.getPartInspection().setReworkTaskId(reworkTask.getId());
ConvertBean.serviceModelUpdate(model.getPartInspection(),model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
partInspectionRepository.save(model.getPartInspection());
MesMove move = createMove(model, sourceValue, mesNcPersonModel.getInventoryLocationCode(), org,workCenterCode, MesExtEnumUtil.MOVE_TYPE.RETURN_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
} else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue()) {
//报废时设置责任人
model.getPartInspection().setResponsibleParty(model.getOnlyPerson());
//model.getPartInspection().setDefectTypeId(person.getId());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.SCRAP.getValue());
model.getPartInspection().setRejectQty(model.getPartInspection().getQty());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
if (model.getOptType() == 2) {
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
partInspectionRepository.save(model.getPartInspection());
MesPartInspectionPerson mesPartInspectionPerson = new MesPartInspectionPerson();
mesPartInspectionPerson.setQty(Double.valueOf(mesNcPersonModel.getQty()));
mesPartInspectionPerson.setNcStatus(mesNcPersonModel.getNcStatus());
mesPartInspectionPerson.setSn(model.getPartInspection().getSn());
DdlPackBean partyPackBean = DdlPackBean.getDdlPackBean(org);
DdlPreparedPack.getStringEqualPack(mesNcPersonModel.getOnlyPerson(), "responsibleParty", partyPackBean);
MesOrg mesOrg = mesOrgRDao.getByProperty(partyPackBean);
mesPartInspectionPerson.setResponsibleParty(mesOrg.getResponsibleParty());
ConvertBean.serviceModelInitialize(mesPartInspectionPerson, model.getUserName());
personList.add(mesPartInspectionPerson);
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
}
//移库 转报废 根据责任方库区对应关系的主数据选择哪个责任方就移动到哪个库区8000移至8002/8003
MesMove move = createMove(model, sourceValue, mesNcPersonModel.getInventoryLocationCode(), org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.SCRAP_MOVE);
ConvertBean.serviceModelInitialize(move,model.getUserName());
moveRepository.save(move);
} else if (type == MesExtEnumUtil.PART_INSPECTION_NC_STATUS.RELEASE.getValue()) {
//更新检验单
/* if (model.getType() != 10 && model.getType() != 40) {
model.getPartInspection().setDefectTypeId(person.getId());
}*/
model.getPartInspection().setInspectionStatus(MesExtEnumUtil.PART_INSPECTION_STATUS.QUALIFIED.getValue());
model.getPartInspection().setNcStatus(MesExtEnumUtil.PART_INSPECTION_NC_STATUS.RELEASE.getValue());
ConvertBean.serviceModelUpdate(model.getPartInspection(), model.getUserName());
String sourceValue = configService.getCfgValue(org, "UMLGO");
if (model.getOptType() == 2) {
sourceValue = refundSource;
model.getPartInspection().setRefundFlag(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
}
partInspectionRepository.save(model.getPartInspection());
String target = configService.getCfgValue(org, "LGORT");
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getStringEqualPack(model.getPart().getPartNo(), "partNo", ddlPackBean);
MesProductVersion version = productVersionRepository.getByProperty(ddlPackBean);
if (version != null) {
target = version.getReceiveInventoryPoint();
}
//移库 转正常、放行8000移至2000
MesMove move = createMove(model, sourceValue, target, org, workCenterCode, MesExtEnumUtil.MOVE_TYPE.NORMAL_MOVE);
ConvertBean.serviceModelInitialize(move, model.getUserName());
moveRepository.save(move);
}
}
mesPartInspectionPersonRepository.saveAll(personList);
}
public MesWorkOrder getWorkOrder(String organizeCode, String workOrderNo) {
if (StringUtils.isEmpty(organizeCode) || StringUtils.isEmpty(workOrderNo)) return null;
return workOrderRepository.getByProperty(

@ -0,0 +1,37 @@
package cn.estsh.i3plus.ext.mes.pcn.pojo.model;
import cn.estsh.i3plus.pojo.mes.bean.MesDefectType;
import cn.estsh.i3plus.pojo.mes.bean.MesPartSap;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspection;
import cn.estsh.i3plus.pojo.mes.bean.nc.MesPartInspectionDetail;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiParam;
import lombok.Data;
import org.hibernate.annotations.ColumnDefault;
import javax.persistence.Column;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author :
* @CreateDate : 2024-05-09 18:08
* @Modify:
**/
@Data
public class MesNcPersonModel {
@ApiParam("责任人")
private String onlyPerson;
@ApiParam("区域代码")
private String inventoryLocationCode;
@ApiParam("数量")
private Double qty;
@ApiParam("nc状态-转正常等等 枚举")
private Integer ncStatus;
}

@ -58,4 +58,7 @@ public class MesNcProcessingInputModel {
@ApiModelProperty("操作人")
private String userName;
@ApiParam("批次责任人信息")
private List<MesNcPersonModel> personModelList;
}

Loading…
Cancel
Save