|
|
|
@ -1219,16 +1219,16 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
return mesProduceSnRao.findByHqlWhere(snPackBean);
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
public List<MesWorkOrder> insertMesWorkOrder(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList, String organizeCode, String userName) {
|
|
|
|
|
public List<MesWorkOrder> insertMesWorkOrder(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList, String organizeCode, String userName) {
|
|
|
|
|
List<MesWorkOrder> mesWorkOrderList=new ArrayList<>();
|
|
|
|
|
Map<String, List<MesProduceSn>> snListMap = mesProduceSns.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
|
|
|
|
|
for (Map.Entry<String, List<MesProduceSn>> stringListEntry : snListMap.entrySet()) {
|
|
|
|
|
List<MesProduceSn> value = stringListEntry.getValue();
|
|
|
|
|
MesProduceSn mesProduceSn = value.get(0);
|
|
|
|
|
Map<String, List<MesProductionRecord>> mesProductionRecordListMap = mesProductionRecordList.stream().collect(Collectors.groupingBy(sn -> sn.getWorkCenterCode() +"="+ sn.getPartNo()));
|
|
|
|
|
for (Map.Entry<String, List<MesProductionRecord>> stringListEntry : mesProductionRecordListMap.entrySet()) {
|
|
|
|
|
List<MesProductionRecord> value = stringListEntry.getValue();
|
|
|
|
|
MesProductionRecord mesProductionRecord = value.get(0);
|
|
|
|
|
String[] split = stringListEntry.getKey().split("=");
|
|
|
|
|
String workCenterCode = split[0];
|
|
|
|
|
String partNo = split[1];
|
|
|
|
|
|
|
|
|
|
//查询工作中心
|
|
|
|
|
DdlPackBean ddlPackBean = DdlPackBean.getDdlPackBean(organizeCode);
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(workCenterCode, "workCenterCode", ddlPackBean);
|
|
|
|
|
MesWorkCenter mesWorkCenter = mesWorkCenterRDao.getByProperty(ddlPackBean);
|
|
|
|
@ -1254,20 +1254,24 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
List<String> orderList=new ArrayList<>();
|
|
|
|
|
GenSerialNoModel genSerialNoModel = new GenSerialNoModel("MES_WORK_CENTER_ORDER_NO");
|
|
|
|
|
genSerialNoModel.setPartNo(workCenterCode);
|
|
|
|
|
// orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList();
|
|
|
|
|
orderList = syncFuncService.syncSerialNo(genSerialNoModel,userName, organizeCode, 1).getResultList();
|
|
|
|
|
|
|
|
|
|
String orderNo = workCenterCode+TimeTool.getNowTime(true);
|
|
|
|
|
String orderNo = orderList.get(0);
|
|
|
|
|
DdlPackBean orderPackBean = DdlPackBean.getDdlPackBean(item.getOrganizeCode());
|
|
|
|
|
DdlPreparedPack.getStringEqualPack(orderNo, "workOrderNo", orderPackBean);
|
|
|
|
|
if (mesWorkOrderRDao.isExitByHql(orderPackBean)) {
|
|
|
|
|
MesException.throwMesBusiException("单号流水码生成重复");
|
|
|
|
|
}
|
|
|
|
|
item.setWorkOrderNo(orderNo);
|
|
|
|
|
item.setPartName(mesProduceSn.getPartName());
|
|
|
|
|
item.setPartName(mesProductionRecord.getPartName());
|
|
|
|
|
//生产时间新增取当天
|
|
|
|
|
item.setProduceTime(TimeTool.getToday());
|
|
|
|
|
item.setUnCompleteQty(0d);
|
|
|
|
|
item.setQty(value.stream().mapToDouble(MesProduceSn::getQty).sum());
|
|
|
|
|
item.setQty(value.stream().mapToDouble(MesProductionRecord::getQty).sum());
|
|
|
|
|
item.setReportedQty(item.getQty());
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//校验标识
|
|
|
|
|
//若工单类型为排序
|
|
|
|
|
List<MesWorkOrderToWms> saveMesWorkOrderToWms = new ArrayList<>();
|
|
|
|
@ -1283,7 +1287,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
item.setProductVersion(mesProductVersion.getProductVersion());
|
|
|
|
|
//获取bom信息
|
|
|
|
|
List<MesBom> bomList = findMesBomByPartNoAndBomVersion(item.getPartNo(), item.getOrganizeCode(), mesProductVersion.getAlternativePartList());
|
|
|
|
|
item.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.RELEASE.getValue());
|
|
|
|
|
|
|
|
|
|
//发送工单信息给WMS
|
|
|
|
|
saveMesWorkOrderToWms.addAll(saveMesWorkOrderToWms(item, bomList));
|
|
|
|
|
}
|
|
|
|
@ -1320,7 +1324,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
return mesWorkOrderToWmsList;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void doPcnJobProductReport(List<MesProduceSn> mesProduceSns,List<MesShift> mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) {
|
|
|
|
|
public void doPcnJobProductReport(List<MesProductionRecord> mesProductionRecordList,List<MesShift> mesShiftList,String organizeCode, String userName ,MesWorkOrder mesWorkOrderDb) {
|
|
|
|
|
|
|
|
|
|
//查询物料信息
|
|
|
|
|
DdlPackBean ddlPackBeanPart = DdlPackBean.getDdlPackBean(mesWorkOrderDb.getOrganizeCode());
|
|
|
|
@ -1341,33 +1345,6 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
MesProductVersion mesProductVersion = getMesProductVersion(mesWorkOrderDb);
|
|
|
|
|
//物料+生产版本获取bom信息
|
|
|
|
|
List<MesBom> mesBoms = findBomList(mesPart.getOrganizeCode(), mesPart, mesProductVersion.getAlternativePartList());
|
|
|
|
|
//报工类型
|
|
|
|
|
if (MesExtEnumUtil.REPORT_TYPE.REPORT.getValue() == mesWorkOrderDb.getReportType()) {
|
|
|
|
|
mesWorkOrderDb.setReportedQty(MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getReportedQty()));
|
|
|
|
|
//更新工单状态
|
|
|
|
|
double unCompleteQty = MathOperation.sub(mesWorkOrderDb.getQty(), mesWorkOrderDb.getReportedQty());
|
|
|
|
|
mesWorkOrderDb.setUnCompleteQty(unCompleteQty > 0 ? unCompleteQty : 0);
|
|
|
|
|
if (mesWorkOrderDb.getReportedQty() > mesWorkOrderDb.getQty()) {
|
|
|
|
|
MesException.throwMesBusiException("工单报工数量【%s】大于工单数量【%s】,不允许报工",
|
|
|
|
|
mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty());
|
|
|
|
|
} else if (Objects.equals(mesWorkOrderDb.getReportedQty(), mesWorkOrderDb.getQty())) {
|
|
|
|
|
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.COMPLETE.getValue());
|
|
|
|
|
} else {
|
|
|
|
|
mesWorkOrderDb.setWorkOrderStatus(MesExtEnumUtil.ORDER_STATUS.PROCESS.getValue());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
//报工调整数量加-
|
|
|
|
|
mesWorkOrderDb.setAdjustQty((MathOperation.add(mesWorkOrderDb.getNum(), mesWorkOrderDb.getAdjustQty())));
|
|
|
|
|
//冲销数量大于工单完成数量报错
|
|
|
|
|
if (mesWorkOrderDb.getAdjustQty() > mesWorkOrderDb.getReportedQty()) {
|
|
|
|
|
MesException.throwMesBusiException("冲销数量【%s】大于工单完成数量【%s】,不允许冲销",
|
|
|
|
|
mesWorkOrderDb.getAdjustQty(), mesWorkOrderDb.getReportedQty());
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//更新工单
|
|
|
|
|
updateMesWorkOrder(mesWorkOrderDb, userName );
|
|
|
|
|
|
|
|
|
|
//生成条码 todo 有条码 不生成
|
|
|
|
|
|
|
|
|
|
//保存数据
|
|
|
|
|
// List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
@ -1379,7 +1356,7 @@ public class MesWorkOrderService extends BaseMesService<MesWorkOrder> implements
|
|
|
|
|
//保存数据
|
|
|
|
|
List<MesProductOffLine> mesProductOffLineList = new ArrayList<>();
|
|
|
|
|
MesProductOffLine newMesProductOffLine;
|
|
|
|
|
for (MesProduceSn produceSn : mesProduceSns) {
|
|
|
|
|
for (MesProductionRecord produceSn : mesProductionRecordList) {
|
|
|
|
|
for (MesBom mesBom : mesBoms) {
|
|
|
|
|
newMesProductOffLine = new MesProductOffLine();
|
|
|
|
|
newMesProductOffLine.setReportPartNo(mesWorkOrderDb.getPartNo());
|
|
|
|
|