|
|
|
@ -6,6 +6,7 @@ import cn.estsh.i3plus.ext.mes.pcn.api.base.ISxWorkOrderExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.IWorkCenterExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnRepairService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.jx.IJxProduceSnMcRecordService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.ProduceSnExtModel;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.RepairRequestModel;
|
|
|
|
@ -100,6 +101,9 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
private ISxWorkOrderExtService workOrderExtService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IJxProduceSnMcRecordService produceSnMcRecordService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private ISyncFuncService syncFuncService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@ -117,107 +121,250 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesReplacementTravelRepository replacementTravelRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesProduceSnMcRecordRepository produceSnMcRecordRepository;
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public ProduceSnExtModel getProduceSnFrozenBySn(String serialNumber, String organizeCode) {
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, serialNumber);
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(cn.estsh.i3plus.platform.common.exception.ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]在系统中不存在", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (produceSnExt.getQcStatus() != MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("条码质量状态为[%s],不是不合格或报废状态",
|
|
|
|
|
MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExt.getQcStatus()))
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
ProduceSnExtModel produceSnExtModel = new ProduceSnExtModel();
|
|
|
|
|
BeanUtils.copyProperties(produceSnExt, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
MesProduceSnRepair produceSnRepair;
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt != null) {
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnExt, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
produceSnExtModel.setManageCode(produceSnMcRecordDb.getManageCode());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", serialNumber, produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("扫描条码[%s]不存在,", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
produceSnExtModel.setWorkOrderNo(produceSnRepair.getWorkOrderNo());
|
|
|
|
|
produceSnExtModel.setWorkTime(produceSnRepair.getWorkTime());
|
|
|
|
|
produceSnExtModel.setShiftCode(produceSnRepair.getShiftCode());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt.getQcStatus() != MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("条码质量状态为[%s],不是不合格或报废状态",
|
|
|
|
|
MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExt.getQcStatus()))
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnExt, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
|
|
|
|
|
if (!produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
|
|
|
|
|
MesProduceSnRepair produceSnRepair = produceSnRepairService.getProduceSnRepairBySnAndOrderNo(organizeCode, serialNumber, produceSnExt.getLastWorkOrderNo());
|
|
|
|
|
produceSnExtModel.setWorkOrderNo(produceSnRepair.getWorkOrderNo());
|
|
|
|
|
produceSnExtModel.setWorkTime(produceSnRepair.getWorkTime());
|
|
|
|
|
produceSnExtModel.setShiftCode(produceSnRepair.getShiftCode());
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if (produceSnExt.getQcStatus() != MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.DEFECTED.getValue()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("条码质量状态为[%s],不是不合格或报废状态",
|
|
|
|
|
MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExt.getQcStatus()))
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 先查询条码信息,判断最终工单号字段与工单号字段是否一致
|
|
|
|
|
if (!produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
MesProduceSnRepair produceSnRepair = produceSnRepairService.getProduceSnRepairBySnAndOrderNo(organizeCode, serialNumber, produceSnExt.getLastWorkOrderNo());
|
|
|
|
|
|
|
|
|
|
if (produceSnRepair == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
produceSnExtModel.setWorkOrderNo(produceSnRepair.getWorkOrderNo());
|
|
|
|
|
produceSnExtModel.setWorkTime(produceSnRepair.getWorkTime());
|
|
|
|
|
produceSnExtModel.setShiftCode(produceSnRepair.getShiftCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (produceSnExtModel.getQcStatus() != null) produceSnExtModel.setQcStatusName(MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.valueOfDescription(produceSnExtModel.getQcStatus()));
|
|
|
|
|
if (produceSnExtModel.getSnStatus() != null) produceSnExtModel.setSnStatusName(MesPcnExtEnumUtil.PRODUCE_SN_STATUS.valueOfDescription(produceSnExtModel.getSnStatus()));
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExtModel.getManageCode())) {
|
|
|
|
|
produceSnExtModel.setSerialNumber(produceSnExtModel.getManageCode());
|
|
|
|
|
} else if(!StringUtils.isEmpty(produceSnExtModel.getProductSn())) {
|
|
|
|
|
produceSnExtModel.setSerialNumber(produceSnExtModel.getProductSn());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return produceSnExtModel;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesBadCellDetail> getMesBadCellDetailBySerialNumber(String serialNumber, String organizeCode) {
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]不存在", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
MesProduceSnRepair produceSnRepair = null;
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
// 是否为已过终检条码
|
|
|
|
|
boolean isFinalCheckAfterSn = false;
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = new MesProduceSnExt();
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExt, MesPcnExtConstWords.ID, MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", serialNumber, produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isFinalCheckAfterSn = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(serialNumber, MesPcnExtConstWords.SERIAL_NUMBER, packBean);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
// lastWorkOrderNo 为空 代表为试制上线管理码
|
|
|
|
|
if (StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo())) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(String.valueOf(produceSnMcRecordDb.getId()), MesPcnExtConstWords.THIRD_PARTY_PID, packBean);
|
|
|
|
|
} else if (produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())){
|
|
|
|
|
if (isFinalCheckAfterSn) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getLastWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, packBean);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnRepair.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getLastWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
}
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.IS_UNFREEZE.NO.getValue(), MesPcnExtConstWords.IS_UNFREEZE, packBean);
|
|
|
|
|
packBean.setOrderByStr(" order by createDatetime desc ");
|
|
|
|
|
return badCellDetailRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesRepairRecordExt> getMesRepairRecordBySerialNumber(String serialNumber, String organizeCode) {
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]不存在", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
MesProduceSnRepair produceSnRepair = null;
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
// 是否为已过终检条码
|
|
|
|
|
boolean isFinalCheckAfterSn = false;
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = new MesProduceSnExt();
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExt, MesPcnExtConstWords.ID, MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", serialNumber, produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isFinalCheckAfterSn = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(serialNumber, MesPcnExtConstWords.SERIAL_NUMBER, packBean);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
// lastWorkOrderNo 为空 代表为试制上线管理码
|
|
|
|
|
if (StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo())) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(String.valueOf(produceSnMcRecordDb.getId()), MesPcnExtConstWords.THIRD_PARTY_PID, packBean);
|
|
|
|
|
} else if (produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())){
|
|
|
|
|
if (isFinalCheckAfterSn) {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getLastWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getSerialNumber(), MesPcnExtConstWords.SERIAL_NUMBER, packBean);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnRepair.getWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getLastWorkOrderNo(), MesPcnExtConstWords.WORK_ORDER_NO, packBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(produceSnExt.getProductSn(), MesPcnExtConstWords.PRODUCT_SN, packBean);
|
|
|
|
|
}
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(MesPcnExtEnumUtil.IS_UNFREEZE.NO.getValue(), MesPcnExtConstWords.IS_UNFREEZE, packBean);
|
|
|
|
|
packBean.setOrderByStr(" order by createDatetime desc ");
|
|
|
|
|
return repairRecordExtRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
@ -225,7 +372,7 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesWorkCenterExt> queryWorkCenter(String organizeCode) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(String.valueOf(MesPcnExtEnumUtil.LINE_TYPE.COMPONENT_LINE.getValue()), MesPcnExtConstWords.LINE_TYPE, packBean);
|
|
|
|
|
DdlPreparedPack.getNumNOEqualPack(String.valueOf(MesPcnExtEnumUtil.LINE_TYPE.ONTOLOGY_LINE.getValue()), MesPcnExtConstWords.LINE_TYPE, packBean);
|
|
|
|
|
return workCenterExtRepository.findByHqlWhere(packBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -304,55 +451,54 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
@Override
|
|
|
|
|
public void insertMesBadCellDetail(MesBadCellDetail mesBadCellDetail) {
|
|
|
|
|
String workOrderNo = mesBadCellDetail.getOrderNo();
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = null;
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
// 条码不为空则为本体返修
|
|
|
|
|
if (!StringUtils.isEmpty(mesBadCellDetail.getSerialNumber())) {
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
if (null == produceSnExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]不存在", mesBadCellDetail.getSerialNumber())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
MesProduceSnRepair produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(mesBadCellDetail.getOrganizeCode(), produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = new MesProduceSnExt();
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExt, MesPcnExtConstWords.ID, MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", mesBadCellDetail.getSerialNumber(), produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
workOrderNo = produceSnRepair.getWorkOrderNo();
|
|
|
|
|
} else {
|
|
|
|
|
workOrderNo = produceSnExt.getWorkOrderNo();
|
|
|
|
|
}
|
|
|
|
|
mesBadCellDetail.setWorkCenterCode(produceSnExt.getWorkCenterCode());
|
|
|
|
|
} else {
|
|
|
|
|
if (StringUtils.isEmpty(workOrderNo)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("入参缺少生产工单号")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getWorkCenterCode());
|
|
|
|
|
if (null == workCenterExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线代码[%s]无效", mesBadCellDetail.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线[%s]未启动班次", mesBadCellDetail.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
workOrderNo = StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) ? produceSnExt.getWorkOrderNo() : produceSnExt.getLastWorkOrderNo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = getMesWorkCenterExt(mesBadCellDetail.getOrganizeCode(), mesBadCellDetail.getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
List<MesDefect> mesDefectList = mesBadCellDetail.getMesDefectList();
|
|
|
|
|
if (!CollectionUtils.isEmpty(mesDefectList)) {
|
|
|
|
|
MesBadCell badCell = badCellRepository.getByProperty(
|
|
|
|
@ -365,7 +511,7 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("根据产品条码[%s]基于生产日期[%s]班次[%s]上未在工位[%s]执行质量判定作业",
|
|
|
|
|
.setErrorDetail("根据条码[%s]基于生产日期[%s]班次[%s]上未在工位[%s]执行质量判定作业",
|
|
|
|
|
mesBadCellDetail.getSerialNumber(), workCenterExt.getWorkTime(), workCenterExt.getShiftCode(), mesBadCellDetail.getWorkCellCode())
|
|
|
|
|
.build();
|
|
|
|
|
} else {
|
|
|
|
@ -416,7 +562,15 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
badCellDetail.setDefectCode(mesDefect.getDefectCode());
|
|
|
|
|
badCellDetail.setDefectName(mesDefect.getDefectName());
|
|
|
|
|
badCellDetail.setRepairStatus(MesPcnExtEnumUtil.MES_REPAIR_STATUS.NO_REPAIR.getValue());
|
|
|
|
|
badCellDetail.setSerialNumber(mesBadCellDetail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
// 不为空则为本体 为空则为组件
|
|
|
|
|
if (!StringUtils.isEmpty(mesBadCellDetail.getSerialNumber())) {
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getSerialNumber())) badCellDetail.setSerialNumber(produceSnExt.getSerialNumber());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getProductSn())) badCellDetail.setProductSn(produceSnExt.getProductSn());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getTrayNo())) badCellDetail.setManageCode(produceSnExt.getTrayNo());
|
|
|
|
|
if (produceSnMcRecordDb != null) badCellDetail.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
badCellDetail.setApprovalStatus(MesPcnExtEnumUtil.BAD_CELL_DETAIL_APPROVAL_STATUS.UN_APPROVAL.getValue());
|
|
|
|
|
badCellDetail.setOrganizeCode(mesBadCellDetail.getOrganizeCode());
|
|
|
|
|
ConvertBean.serviceModelInitialize(badCellDetail, mesBadCellDetail.getModifyUser());
|
|
|
|
@ -426,6 +580,25 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesWorkCenterExt getMesWorkCenterExt(String organizeCode, String workCenterCode) {
|
|
|
|
|
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(organizeCode, workCenterCode);
|
|
|
|
|
if (null == workCenterExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线代码[%s]无效", workCenterCode)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线[%s]未启动班次", workCenterCode)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
return workCenterExt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void insertMesRepairRecord(MesRepairRecordExt repairRecord) {
|
|
|
|
|
MesRepairRecordExt repairRecordExt = new MesRepairRecordExt();
|
|
|
|
@ -496,54 +669,64 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
Map<String, Long> defectCodeMap = new HashMap<>();
|
|
|
|
|
|
|
|
|
|
String workOrderNo = repairRecordList.get(0).getWorkOrderNo();
|
|
|
|
|
if (!StringUtils.isEmpty(badCellDetailList.get(0).getSerialNumber())) {
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(requestModel.getOrganizeCode(), badCellDetailList.get(0).getSerialNumber());
|
|
|
|
|
if (null == produceSnExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]不存在", badCellDetailList.get(0).getSerialNumber())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
MesProduceSnRepair produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(requestModel.getOrganizeCode(), produceSnExt.getSerialNumber());
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
MesBadCellDetail mesBadCellDetail = badCellDetailList.get(0);
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = null;
|
|
|
|
|
|
|
|
|
|
ProduceSnExtModel produceSnExtModel = new ProduceSnExtModel();
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
// 条码不为空则为本体返修
|
|
|
|
|
if (!StringUtils.isEmpty(mesBadCellDetail.getSerialNumber())) {
|
|
|
|
|
|
|
|
|
|
produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(requestModel.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(requestModel.getOrganizeCode(), produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = new MesProduceSnExt();
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExt, MesPcnExtConstWords.ID, MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnExt, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
produceSnExtModel.setManageCode(produceSnExt.getTrayNo());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(requestModel.getOrganizeCode(), mesBadCellDetail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", produceSnExt.getSerialNumber(), produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
workOrderNo = produceSnRepair.getWorkOrderNo();
|
|
|
|
|
} else {
|
|
|
|
|
workOrderNo = produceSnExt.getWorkOrderNo();
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (StringUtils.isEmpty(workOrderNo)) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("入参缺少生产工单号")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnExt, produceSnExtModel, MesPcnExtConstWords.ID);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(requestModel.getOrganizeCode(), badCellDetailList.get(0).getWorkCenterCode());
|
|
|
|
|
if (null == workCenterExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线代码[%s]无效", badCellDetailList.get(0).getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线[%s]未启动班次", badCellDetailList.get(0).getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
workOrderNo = StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) ? produceSnExt.getWorkOrderNo() : produceSnExt.getLastWorkOrderNo();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = getMesWorkCenterExt(requestModel.getOrganizeCode(), badCellDetailList.get(0).getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
MesBadCell badCell = badCellRepository.getByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID,
|
|
|
|
|
MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.WORK_TIME, MesPcnExtConstWords.SHIFT_CODE, MesPcnExtConstWords.WORK_CELL_CODE},
|
|
|
|
@ -605,7 +788,22 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
badCellDetail.setDefectCode(detail.getDefectCode());
|
|
|
|
|
badCellDetail.setDefectName(detail.getDefectName());
|
|
|
|
|
badCellDetail.setRepairStatus(MesPcnExtEnumUtil.MES_REPAIR_STATUS.REPAIRED.getValue());
|
|
|
|
|
badCellDetail.setSerialNumber(detail.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
// 产品条码为空说明是试制条码
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExtModel.getManageCode())) badCellDetail.setManageCode(produceSnExtModel.getManageCode());
|
|
|
|
|
if (produceSnMcRecordDb != null) badCellDetail.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getSerialNumber())) badCellDetail.setSerialNumber(produceSnExt.getSerialNumber());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getProductSn())) badCellDetail.setProductSn(produceSnExt.getProductSn());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getTrayNo())) badCellDetail.setManageCode(produceSnExt.getTrayNo());
|
|
|
|
|
if (produceSnMcRecordDb != null) badCellDetail.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
badCellDetail.setApprovalStatus(MesPcnExtEnumUtil.BAD_CELL_DETAIL_APPROVAL_STATUS.UN_APPROVAL.getValue());
|
|
|
|
|
badCellDetail.setOrganizeCode(requestModel.getOrganizeCode());
|
|
|
|
|
ConvertBean.serviceModelInitialize(badCellDetail, requestModel.getModifyUser());
|
|
|
|
@ -623,6 +821,22 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
repairRecordExt.setWorkTime(workCenterExt.getWorkTime());
|
|
|
|
|
repairRecordExt.setShiftCode(workCenterExt.getShiftCode());
|
|
|
|
|
repairRecordExt.setWorkOrderNo(workOrderNo);
|
|
|
|
|
|
|
|
|
|
// 产品条码为空说明是试制条码
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExtModel.getManageCode())) repairRecordExt.setManageCode(produceSnExtModel.getManageCode());
|
|
|
|
|
if (produceSnMcRecordDb != null) repairRecordExt.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getSerialNumber())) repairRecordExt.setSerialNumber(produceSnExt.getSerialNumber());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getManageCode())) repairRecordExt.setManageCode(produceSnExt.getManageCode());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getProductSn())) repairRecordExt.setProductSn(produceSnExt.getProductSn());
|
|
|
|
|
if ((produceSnMcRecordDb != null) && (!StringUtils.isEmpty(produceSnMcRecordDb.getId()))) repairRecordExt.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ConvertBean.serviceModelInitialize(repairRecordExt, requestModel.getModifyUser());
|
|
|
|
|
new ConvertBeanExt(repairRecordExt).convertBean(repairRecordExt);
|
|
|
|
|
repairRecordExtRepository.insert(repairRecordExt);
|
|
|
|
@ -631,48 +845,84 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void updateRepairComplete(String serialNumber, String organizeCode, String modifyUser) {
|
|
|
|
|
String workOrderNo;
|
|
|
|
|
MesProduceSnExt produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]无效", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.QUALIFIED.getValue() == produceSnExt.getQcStatus()) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]质量状态为合格,不能执行维修完成操作", serialNumber)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) && !produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())) {
|
|
|
|
|
MesProduceSnRepair produceSnRepair = produceSnRepairService.getProduceSnRepairBySn(organizeCode, serialNumber);
|
|
|
|
|
if (null == produceSnRepair) {
|
|
|
|
|
|
|
|
|
|
// 是否为已过终检条码
|
|
|
|
|
boolean isFinalCheckAfterSn = false;
|
|
|
|
|
|
|
|
|
|
MesProduceSnMcRecord produceSnMcRecordDb = produceSnMcRecordService.getProduceSnMcRecordDb(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
MesProduceSnExt produceSnExt = null;
|
|
|
|
|
|
|
|
|
|
if(produceSnMcRecordDb != null){
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtBySn(organizeCode, produceSnMcRecordDb.getSerialNumber());
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
|
|
|
|
|
produceSnExt = new MesProduceSnExt();
|
|
|
|
|
|
|
|
|
|
BeanUtils.copyProperties(produceSnMcRecordDb, produceSnExt, MesPcnExtConstWords.ID, MesPcnExtConstWords.CREATE_USER, MesPcnExtConstWords.CREATE_DATE_TIME, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
produceSnExt = produceSnExtService.getProduceSnExtByProductSn(organizeCode, serialNumber);
|
|
|
|
|
|
|
|
|
|
if (produceSnExt == null) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]与返工工单[%s]的关联关系不存在", serialNumber, produceSnExt.getLastWorkOrderNo())
|
|
|
|
|
.setErrorDetail("条码信息不存在,请检查")
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
workOrderNo = produceSnRepair.getWorkOrderNo();
|
|
|
|
|
} else {
|
|
|
|
|
workOrderNo = produceSnExt.getWorkOrderNo();
|
|
|
|
|
|
|
|
|
|
if(produceSnExt.getSnStatus() > MesPcnExtEnumUtil.PRODUCE_SN_STATUS.PROCESS.getValue()){
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
|
|
|
|
|
.setErrorDetail("扫描的条码的条码状态为【下线】,不可以操作")
|
|
|
|
|
.build();
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
isFinalCheckAfterSn = true;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
String workOrderNo = StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo()) ? produceSnExt.getWorkOrderNo() : produceSnExt.getWorkOrderNo();
|
|
|
|
|
|
|
|
|
|
MesWorkOrderExt workOrderExt = workOrderExtService.getWorkOrderExtByOrderNo(organizeCode, workOrderNo);
|
|
|
|
|
if (null == workOrderExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("产品条码[%s]关联的工单号[%s]无效", serialNumber, workOrderNo)
|
|
|
|
|
.setErrorDetail("条码[%s]关联的工单号[%s]无效", serialNumber, workOrderNo)
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<MesBadCellDetail> badCellDetailList = badCellDetailRepository.findByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.SERIAL_NUMBER},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, serialNumber});
|
|
|
|
|
List<MesBadCellDetail> badCellDetailList;
|
|
|
|
|
|
|
|
|
|
// lastWorkOrderNo 为空 代表为试制上线管理码
|
|
|
|
|
if (StringUtils.isEmpty(produceSnExt.getLastWorkOrderNo())) {
|
|
|
|
|
badCellDetailList = badCellDetailRepository.findByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.THIRD_PARTY_PID},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, StringUtils.isEmpty(produceSnMcRecordDb.getId())});
|
|
|
|
|
} else if (produceSnExt.getLastWorkOrderNo().equals(produceSnExt.getWorkOrderNo())){
|
|
|
|
|
if (isFinalCheckAfterSn) {
|
|
|
|
|
badCellDetailList = badCellDetailRepository.findByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.PRODUCT_SN},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, produceSnExt.getProductSn()});
|
|
|
|
|
} else {
|
|
|
|
|
badCellDetailList = badCellDetailRepository.findByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.SERIAL_NUMBER},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, produceSnExt.getSerialNumber()});
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
badCellDetailList = badCellDetailRepository.findByProperty(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.WORK_ORDER_NO, MesPcnExtConstWords.PRODUCT_SN},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(), CommonEnumUtil.IS_VAILD.VAILD.getValue(), workOrderNo, produceSnExt.getProductSn()});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
badCellDetailList = CollectionUtils.isEmpty(badCellDetailList) ? null :
|
|
|
|
|
badCellDetailList.stream().filter(o -> (null != o && !StringUtils.isEmpty(o.getRepairStatus()) && MesPcnExtEnumUtil.MES_REPAIR_STATUS.NO_REPAIR.getValue() == o.getRepairStatus())).collect(Collectors.toList());
|
|
|
|
|
if (!CollectionUtils.isEmpty(badCellDetailList)) {
|
|
|
|
@ -683,23 +933,15 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(organizeCode, produceSnExt.getWorkCenterCode());
|
|
|
|
|
if (null == workCenterExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线代码[%s]无效", produceSnExt.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线[%s]未启动班次", produceSnExt.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
MesWorkCenterExt workCenterExt = getMesWorkCenterExt(organizeCode, produceSnExt.getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
if (produceSnMcRecordDb != null) {
|
|
|
|
|
produceSnMcRecordDb.setOperateType(MesPcnExtEnumUtil.SN_OPERATE_TYPE.QUALIFIED.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(produceSnMcRecordDb, modifyUser);
|
|
|
|
|
produceSnMcRecordRepository.save(produceSnMcRecordDb);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
produceSnExt.setQcStatus(MesPcnExtEnumUtil.PRODUCE_SN_QC_STATUS.QUALIFIED.getValue());
|
|
|
|
|
produceSnExt.setOperateType(MesPcnExtEnumUtil.SN_OPERATE_TYPE.QUALIFIED.getValue());
|
|
|
|
|
ConvertBean.serviceModelUpdate(produceSnExt, modifyUser);
|
|
|
|
|
produceSnExt.setSystemSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
new ConvertBeanExt(produceSnExt).convertBean(produceSnExt);
|
|
|
|
@ -716,6 +958,10 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
repairTask.setRepairNo(orderNoList.get(0));
|
|
|
|
|
repairTask.setWorkOrderNo(workOrderNo);
|
|
|
|
|
repairTask.setSerialNumber(serialNumber);
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getManageCode())) repairTask.setManageCode(produceSnExt.getManageCode());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getSerialNumber())) repairTask.setSerialNumber(produceSnExt.getSerialNumber());
|
|
|
|
|
if (!StringUtils.isEmpty(produceSnExt.getProductSn())) repairTask.setProductSn(produceSnExt.getProductSn());
|
|
|
|
|
if (produceSnMcRecordDb != null ) repairTask.setThirdPartyPid(String.valueOf(produceSnMcRecordDb.getId()));
|
|
|
|
|
repairTask.setRepairQty(new Double(1));
|
|
|
|
|
repairTask.setWorkCenterCode(produceSnExt.getWorkCenterCode());
|
|
|
|
|
repairTask.setPartNo(produceSnExt.getPartNo());
|
|
|
|
@ -726,6 +972,35 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
repairTask.setRepairDate(repairTask.getCreateDatetime());
|
|
|
|
|
repairTask.setRepairUser(modifyUser);
|
|
|
|
|
repairTaskRepository.insert(repairTask);
|
|
|
|
|
|
|
|
|
|
// 解绑关键件
|
|
|
|
|
int unbindKeyResult = 0;
|
|
|
|
|
if (isFinalCheckAfterSn) {
|
|
|
|
|
unbindKeyResult = prodBindRecordExtRepository.updateByProperties(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED,
|
|
|
|
|
MesPcnExtConstWords.PRODUCT_SN, MesPcnExtConstWords.IS_BIND_KEY, MesPcnExtConstWords.ACTION_TYPE},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
|
produceSnExt.getProductSn(), MesPcnExtEnumUtil.MES_IS_BIND_KEY.IS_BIND_KEY.getValue(), MesPcnExtEnumUtil.MES_ACTION_TYPE.BIND.getValue()},
|
|
|
|
|
new String[]{MesPcnExtConstWords.ACTION_TYPE, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
|
|
|
|
|
new Object[]{MesPcnExtEnumUtil.MES_ACTION_TYPE.UNTYING.getValue(), modifyUser, TimeTool.getNowTime(true)});
|
|
|
|
|
} else {
|
|
|
|
|
unbindKeyResult = prodBindRecordExtRepository.updateByProperties(
|
|
|
|
|
new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED,
|
|
|
|
|
MesPcnExtConstWords.THIRD_PARTY_PID, MesPcnExtConstWords.IS_BIND_KEY, MesPcnExtConstWords.ACTION_TYPE},
|
|
|
|
|
new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
|
String.valueOf(produceSnMcRecordDb.getId()), MesPcnExtEnumUtil.MES_IS_BIND_KEY.IS_BIND_KEY.getValue(), MesPcnExtEnumUtil.MES_ACTION_TYPE.BIND.getValue()},
|
|
|
|
|
new String[]{MesPcnExtConstWords.ACTION_TYPE, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
|
|
|
|
|
new Object[]{MesPcnExtEnumUtil.MES_ACTION_TYPE.UNTYING.getValue(), modifyUser, TimeTool.getNowTime(true)});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
log.info("updateRepairComplete --- 解绑关键件结果:{}" , unbindKeyResult);
|
|
|
|
|
|
|
|
|
|
// 清空条码履历
|
|
|
|
|
//produceSnTravelExtRepository.updateByProperties(new String[]{MesPcnExtConstWords.ORGANIZE_CODE, MesPcnExtConstWords.IS_VALID, MesPcnExtConstWords.IS_DELETED,
|
|
|
|
|
// MesPcnExtConstWords.SERIAL_NUMBER}, new Object[]{organizeCode, CommonEnumUtil.IS_VAILD.VAILD.getValue(), CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),
|
|
|
|
|
// serialNumber},
|
|
|
|
|
// new String[]{MesPcnExtConstWords.IS_DELETED, MesPcnExtConstWords.MODIFY_USER, MesPcnExtConstWords.MODIFY_DATE_TIME},
|
|
|
|
|
// new Object[]{CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), modifyUser, TimeTool.getNowTime(true)});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
@ -784,21 +1059,7 @@ public class SxRepairWorkService implements ISxRepairWorkService {
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MesWorkCenterExt workCenterExt = workCenterExtService.getWorkCenterExtByWorkCenterCode(organizeCode, workOrderExt.getWorkCenterCode());
|
|
|
|
|
if (null == workCenterExt) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线代码[%s]无效", workOrderExt.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getShiftCode()) || StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("生产线[%s]未启动班次", workOrderExt.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
MesWorkCenterExt workCenterExt = getMesWorkCenterExt(organizeCode, workOrderExt.getWorkCenterCode());
|
|
|
|
|
|
|
|
|
|
workOrderExt.setRepairQty(StringUtils.isEmpty(workOrderExt.getRepairQty()) ? defectQty : MathOperation.add(workOrderExt.getRepairQty(), defectQty));
|
|
|
|
|
ConvertBean.serviceModelUpdate(workOrderExt, modifyUser);
|
|
|
|
|