|
|
|
@ -204,117 +204,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
return packBean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doProductReport(List<MesProduceSn> mesProduceSnList, String organizeCode, String userName) {
|
|
|
|
|
//新增初始化 todo
|
|
|
|
|
Map<String, List<MesProduceSn>> mesWorkOrderMap = mesProduceSnList.stream().collect(Collectors.groupingBy(MesProduceSn::getPartNo));
|
|
|
|
|
Map<String, MesPart> mesPartMap = new HashMap<>();
|
|
|
|
|
MesPart mesPart;
|
|
|
|
|
//查询工单状态
|
|
|
|
|
Integer[] orderStatus = new Integer[]{MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue(), MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue()};
|
|
|
|
|
for (Map.Entry<String, List<MesProduceSn>> mesProduceSn : mesWorkOrderMap.entrySet()) {
|
|
|
|
|
List<MesProduceSn> mesWorkOrderList = mesProduceSn.getValue();
|
|
|
|
|
//获取物料信息
|
|
|
|
|
if (mesPartMap.containsKey(mesProduceSn.getKey())) {
|
|
|
|
|
mesPart = mesPartMap.get(mesProduceSn.getKey());
|
|
|
|
|
} else {
|
|
|
|
|
//查询物料信息
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProduceSn.getKey(), "partNo", ddlPackBean);
|
|
|
|
|
mesPart = mesPartRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (Objects.isNull(mesPart)) {
|
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】信息不存在", mesProduceSn.getKey()));
|
|
|
|
|
}
|
|
|
|
|
mesPartMap.put(mesProduceSn.getKey(), mesPart);
|
|
|
|
|
}
|
|
|
|
|
//根据物料获取已发布的工单
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getInPackArray(orderStatus, "workOrderStatus", ddlPackBean);
|
|
|
|
|
MesWorkOrder oldMesWorkOrder = workOrderRepository.getByProperty(ddlPackBean);
|
|
|
|
|
if (Objects.isNull(oldMesWorkOrder)) {
|
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】状态未已发布的工单信息不存在", mesPart.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
//查询工作中心
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(oldMesWorkOrder.getWorkCenterCode(), "workCenterCode", ddlPackBean);
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (Objects.isNull(mesWorkCenter)) {
|
|
|
|
|
throw new ImppBusiException(String.format("产线【%s】不存在", oldMesWorkOrder.getWorkCenterCode()));
|
|
|
|
|
}
|
|
|
|
|
//获取生产版本
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesWorkCenter.getErpWorkCenter(), "workCenterCode", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(oldMesWorkOrder.getProductVersion(), "productVersion", ddlPackBean);
|
|
|
|
|
MesProductVersion mesProductVersion = mesProductVersionRDao.getByProperty(ddlPackBean);
|
|
|
|
|
if (null == mesProductVersion) {
|
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】生产版本信息不存在", mesPart.getPartNo()));
|
|
|
|
|
}
|
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
|
ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesPart.getPartNo(), "partNo", ddlPackBean);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(mesProductVersion.getAlternativePartList(), "bomVersion", ddlPackBean);
|
|
|
|
|
List<MesBom> mesBoms = mesBomRDao.findByHqlWhere(ddlPackBean);
|
|
|
|
|
if (CollectionUtils.isEmpty(mesBoms)) {
|
|
|
|
|
throw new ImppBusiException(String.format("物料【%s】生产版本【%s】对应bom信息不存在",
|
|
|
|
|
mesPart.getPartNo(), mesProductVersion.getProductVersion()));
|
|
|
|
|
}
|
|
|
|
|
oldMesWorkOrder.setNum(mesWorkOrderList.size());
|
|
|
|
|
oldMesWorkOrder.setReportedQty(MathOperation.add(oldMesWorkOrder.getNum(), oldMesWorkOrder.getReportedQty()));
|
|
|
|
|
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(oldMesWorkOrder.getQty(), oldMesWorkOrder.getReportedQty());
|
|
|
|
|
oldMesWorkOrder.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (oldMesWorkOrder.getReportedQty() > oldMesWorkOrder.getQty()) {
|
|
|
|
|
throw new ImppBusiException(String.format("工单报工数量【%s】大于工单数量【%s】,不允许报工",
|
|
|
|
|
oldMesWorkOrder.getReportedQty(), oldMesWorkOrder.getQty()));
|
|
|
|
|
} else if (Objects.equals(oldMesWorkOrder.getReportedQty(), oldMesWorkOrder.getQty())) {
|
|
|
|
|
oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
oldMesWorkOrder.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
ConvertBean.serviceModelUpdate(oldMesWorkOrder, userName);
|
|
|
|
|
oldMesWorkOrder.setModifyDatetime((new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS")).format(new Date()));
|
|
|
|
|
workOrderExtService.update(oldMesWorkOrder);
|
|
|
|
|
//保存数据
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
for (MesProduceSn produceSn : mesWorkOrderList) {
|
|
|
|
|
String nowTime = TimeTool.getNowTime(true);
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
newMesProductOffLine.setReportPartNo(oldMesWorkOrder.getPartNo());
|
|
|
|
|
newMesProductOffLine.setReportPartNameRdd(oldMesWorkOrder.getPartName());
|
|
|
|
|
newMesProductOffLine.setItemPartNo(mesBom.getItemPartNo());
|
|
|
|
|
newMesProductOffLine.setItemPartName(mesBom.getItemPartName());
|
|
|
|
|
newMesProductOffLine.setItemQty(mesBom.getItemQty());
|
|
|
|
|
newMesProductOffLine.setAlort(mesProductVersion.getReceiveInventoryPoint());
|
|
|
|
|
newMesProductOffLine.setStgeLoc(mesProductVersion.getShipInventoryPoint());
|
|
|
|
|
newMesProductOffLine.setQty(1d);
|
|
|
|
|
newMesProductOffLine.setReportSn(produceSn.getProductSn());
|
|
|
|
|
newMesProductOffLine.setBomVersion(oldMesWorkOrder.getProductVersion());
|
|
|
|
|
newMesProductOffLine.setSerialNumber(produceSn.getSerialNumber());
|
|
|
|
|
newMesProductOffLine.setUnit(mesBom.getUnit());
|
|
|
|
|
newMesProductOffLine.setItemUnit(mesBom.getItemUnit());
|
|
|
|
|
newMesProductOffLine.setWorkOrderNo(oldMesWorkOrder.getWorkOrderNo());
|
|
|
|
|
newMesProductOffLine.setWorkOrderType(oldMesWorkOrder.getWorkOrderType());
|
|
|
|
|
newMesProductOffLine.setWorkCenterCode(oldMesWorkOrder.getWorkCenterCode());
|
|
|
|
|
newMesProductOffLine.setWorkCellCode(oldMesWorkOrder.getWorkCellCode());
|
|
|
|
|
newMesProductOffLine.setReportType(oldMesWorkOrder.getReportType());
|
|
|
|
|
newMesProductOffLine.setSapWorkCenter(oldMesWorkOrder.getErpWorkCenter());
|
|
|
|
|
newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
|
|
|
|
|
newMesProductOffLine.setDescription(nowTime);
|
|
|
|
|
newMesProductOffLine.setBomTotalSize(mesBoms.size());
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
|
|
|
|
|
mesProductOffLineList.add(newMesProductOffLine);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
mesProductOffLineRDao.saveAll(mesProductOffLineList);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void doPcnJobProductReport(List<MesProductionRecord> mesProductionRecordList, List<MesShift> mesShiftList, String organizeCode, String userName, MesWorkOrder mesWorkOrderDb) {
|
|
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
@ -749,6 +639,7 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
newMesProductOffLine.setSapWorkCenter(mesProductVersion.getWorkCenterCode());
|
|
|
|
|
newMesProductOffLine.setOrganizeCode(oldMesWorkOrder.getOrganizeCode());
|
|
|
|
|
newMesProductOffLine.setDescription(productionRecord.getCompleteDateTime());
|
|
|
|
|
newMesProductOffLine.setProductionRecordId(productionRecord.getId().toString());
|
|
|
|
|
ConvertBean.serviceModelInitialize(newMesProductOffLine, userName);
|
|
|
|
|
return newMesProductOffLine;
|
|
|
|
|
}
|
|
|
|
@ -1024,15 +915,6 @@ public class MesWorkOrderService implements IMesWorkOrderService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesProduceSn> getPreDayReportMesProduceSn(String organizeCode, List<MesProductionRecord> mesProductionRecordList) {
|
|
|
|
|
DdlPackBean snPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getInPackList(mesProductionRecordList.stream().map(MesProductionRecord::getProductSn).collect(Collectors.toList()),
|
|
|
|
|
"productSn", snPackBean);
|
|
|
|
|
DdlPreparedPack.getIsNotNull("workCenterCode", snPackBean);
|
|
|
|
|
return mesProduceSnRao.findByHqlWhere(snPackBean);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public void doProductReport(MesWorkOrder mesWorkOrder, String userName) {
|
|
|
|
|
DdlPackBean packBean = DdlPackBean.getDdlPackBean(mesWorkOrder.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getNumEqualPack(mesWorkOrder.getId(),"id",packBean);
|
|
|
|
|