|
|
|
@ -1,6 +1,7 @@
|
|
|
|
|
package cn.estsh.i3plus.ext.mes.pcn.apiservice.serviceimpl.base;
|
|
|
|
|
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.base.*;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IProduceSnExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.api.busi.IWorkOrderLogExtService;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.bean.*;
|
|
|
|
|
import cn.estsh.i3plus.ext.mes.pcn.pojo.model.*;
|
|
|
|
@ -137,6 +138,9 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
@Autowired
|
|
|
|
|
private MesBomPendingPartRepository bomPendingPartRepository;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IProduceSnExtService produceSnExtService;
|
|
|
|
|
|
|
|
|
|
@Resource(name = MesPcnExtConstWords.REDIS_RES_PCN)
|
|
|
|
|
private ImppRedis redisMesPcn;
|
|
|
|
|
|
|
|
|
@ -443,6 +447,7 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(workOrderQueryDto.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workOrderQueryDto.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(workOrderQueryDto.getWorkOrderStatus(), "workOrderStatus", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackArray(workOrderQueryDto.getWorkOrderStatusArray(), "workOrderStatus", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(workOrderQueryDto.getWorkOrderType(), "workOrderType", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringLikerPack(workOrderQueryDto.getCreateUser(), "createUser", ddlPackBean);
|
|
|
|
|
|
|
|
|
@ -1536,11 +1541,13 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
|
|
|
|
|
double sumQty = getSumQty(qty, workOrder);
|
|
|
|
|
|
|
|
|
|
List<MesPackageExt> packageExtList = produceSnExtService.doWorkOrderHandCreatePackage(workOrder.getId(), organizeCode, userName, 2, qty.intValue());
|
|
|
|
|
|
|
|
|
|
saveWorkOrderExt(userName, workOrder, sumQty);
|
|
|
|
|
|
|
|
|
|
insertManualReportTravel(organizeCode, userName, workOrder, qty, workCenterExt, shiftName);
|
|
|
|
|
|
|
|
|
|
insertSxProductOffLine(workOrderNo, qty, organizeCode, userName, workOrder, partExt);
|
|
|
|
|
insertSxProductOffLine(workOrderNo, qty, organizeCode, userName, workOrder, partExt, packageExtList);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1554,6 +1561,15 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
.setErrorDetail("报工数量[%s]与当前完工数量[%s]之和[%s]大于工单计划数量[%s]", workOrder.getCompleteQty(), qty, sumQty, workOrder.getQty())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//if (qty % partExt.getQty2() != 0) {
|
|
|
|
|
// throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
// .setErrorDetail("报工数量[%s]与物料包装数量", workOrder.getCompleteQty(), qty, sumQty, workOrder.getQty())
|
|
|
|
|
// .build();
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
return sumQty;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1617,13 +1633,13 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
.setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
.setErrorDetail("产线[%s]未启动班次", workOrder.getWorkCenterCode())
|
|
|
|
|
.build();
|
|
|
|
|
}
|
|
|
|
|
//if (StringUtils.isEmpty(workCenterExt.getWorkTime())) {
|
|
|
|
|
// throw ImppExceptionBuilder.newInstance()
|
|
|
|
|
// .setSystemID(CommonEnumUtil.SOFT_TYPE.MES_PCN.getCode())
|
|
|
|
|
// .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode())
|
|
|
|
|
// .setErrorDetail("产线[%s]未启动班次", workOrder.getWorkCenterCode())
|
|
|
|
|
// .build();
|
|
|
|
|
//}
|
|
|
|
|
return workCenterExt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1682,40 +1698,49 @@ public class SxWorkOrderExtService implements ISxWorkOrderExtService {
|
|
|
|
|
mesManualReportTravelRepository.save(manualReportTravel);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void insertSxProductOffLine(String workOrderNo, Double qty, String organizeCode, String userName, MesWorkOrderExt workOrder, MesPartExt partExt) {
|
|
|
|
|
private void insertSxProductOffLine(String workOrderNo, Double qty, String organizeCode, String userName, MesWorkOrderExt workOrder, MesPartExt partExt, List<MesPackageExt> packageExtList) {
|
|
|
|
|
|
|
|
|
|
List<SxProductOffLine> productOffLineList = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
for (MesPackageExt mesPackageExt : packageExtList) {
|
|
|
|
|
SxProductOffLine productOffLine = new SxProductOffLine();
|
|
|
|
|
productOffLine.setWorkOrderNo(workOrderNo);
|
|
|
|
|
productOffLine.setPartNo(workOrder.getPartNo());
|
|
|
|
|
productOffLine.setPartName(workOrder.getPartNameRdd());
|
|
|
|
|
productOffLine.setQty(mesPackageExt.getQty());
|
|
|
|
|
productOffLine.setWorkCenterCode(workOrder.getWorkCenterCode());
|
|
|
|
|
productOffLine.setErpWarehouse(workOrder.getErpWarehouse());
|
|
|
|
|
productOffLine.setPackageNo(mesPackageExt.getPackageNo());
|
|
|
|
|
//取物料信息中的类型
|
|
|
|
|
|
|
|
|
|
if (null != partExt) {
|
|
|
|
|
productOffLine.setUnit(partExt.getUnit());
|
|
|
|
|
productOffLine.setProdType(getProdType(partExt.getCategoryCode1()));
|
|
|
|
|
productOffLine.setProdType(Integer.parseInt(partExt.getCategoryCode1()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrder.getWorkOrderType()) {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue());
|
|
|
|
|
} else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrder.getWorkOrderType() ) {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.STANDARD_SN.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.ATTEMPT_SN.getValue());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
SxProductOffLine productOffLine = new SxProductOffLine();
|
|
|
|
|
productOffLine.setWorkOrderNo(workOrderNo);
|
|
|
|
|
productOffLine.setPartNo(workOrder.getPartNo());
|
|
|
|
|
productOffLine.setPartName(workOrder.getPartNameRdd());
|
|
|
|
|
productOffLine.setQty(qty);
|
|
|
|
|
productOffLine.setWorkCenterCode(workOrder.getWorkCenterCode());
|
|
|
|
|
productOffLine.setErpWarehouse(workOrder.getErpWarehouse());
|
|
|
|
|
//取物料信息中的类型
|
|
|
|
|
productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
MesWorkCenterExt workCenterExt = getWorkCenterExtByWorkCenterCode(workOrder.getWorkCenterCode(), organizeCode);
|
|
|
|
|
productOffLine.setShiftCode(workCenterExt.getShiftCode());
|
|
|
|
|
productOffLine.setLotNo(workCenterExt.getWorkTime());
|
|
|
|
|
productOffLine.setIsWaterPurifier(MesPcnExtEnumUtil.IS_WATER_PURIFIER.NO.getValue());
|
|
|
|
|
productOffLine.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.serviceModelUpdate(productOffLine, userName);
|
|
|
|
|
productOffLineList.add(productOffLine);
|
|
|
|
|
|
|
|
|
|
if (null != partExt) {
|
|
|
|
|
productOffLine.setUnit(partExt.getUnit());
|
|
|
|
|
productOffLine.setProdType(getProdType(partExt.getCategoryCode1()));
|
|
|
|
|
productOffLine.setProdType(Integer.parseInt(partExt.getCategoryCode1()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.REWORK_ORDER.getValue() == workOrder.getWorkOrderType()) {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.REWORK_SN.getValue());
|
|
|
|
|
} else if (MesPcnExtEnumUtil.WORK_ORDER_TYPE.STANDARD_ORDER.getValue() == workOrder.getWorkOrderType() ) {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.STANDARD_SN.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
productOffLine.setSnType(MesPcnExtEnumUtil.PRODUCE_SN_TYPE.ATTEMPT_SN.getValue());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
productOffLine.setSyncStatus(MesPcnExtEnumUtil.IF_SYNC_STATUS.NO_SYNC.getValue());
|
|
|
|
|
MesWorkCenterExt workCenterExt = getWorkCenterExtByWorkCenterCode(workOrder.getWorkCenterCode(), organizeCode);
|
|
|
|
|
productOffLine.setShiftCode(workCenterExt.getShiftCode());
|
|
|
|
|
productOffLine.setLotNo(workCenterExt.getWorkTime());
|
|
|
|
|
productOffLine.setPartNo(partExt.getPartNo());
|
|
|
|
|
productOffLine.setIsWaterPurifier(MesPcnExtEnumUtil.IS_WATER_PURIFIER.NO.getValue());
|
|
|
|
|
productOffLine.setOrganizeCode(organizeCode);
|
|
|
|
|
ConvertBean.serviceModelUpdate(productOffLine, userName);
|
|
|
|
|
productOffLineRepository.insert(productOffLine);
|
|
|
|
|
productOffLineRepository.saveAll(productOffLineList);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private MesWorkCenterExt getWorkCenterExtByWorkCenterCode(String workCenterCode, String organizeCode) {
|
|
|
|
|