|
@@ -24,10 +24,7 @@ import com.github.zuihou.business.operationManagementCenter.entity.OrderProduct;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.OrderProductService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.OrderService;
|
|
|
import com.github.zuihou.business.operationManagementCenter.service.PlanService;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.BBom;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.BomVersionInfo;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.MMeterial;
|
|
|
-import com.github.zuihou.business.productionReadyCenter.entity.MMeterialReceiveLog;
|
|
|
+import com.github.zuihou.business.productionReadyCenter.entity.*;
|
|
|
import com.github.zuihou.business.productionReadyCenter.service.*;
|
|
|
import com.github.zuihou.business.productionResourceCenter.entity.ZZone;
|
|
|
import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
|
|
@@ -59,6 +56,9 @@ import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
import java.net.URL;
|
|
|
import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+import java.util.stream.IntStream;
|
|
|
+import java.util.stream.Stream;
|
|
|
|
|
|
@Slf4j
|
|
|
@Validated
|
|
@@ -144,11 +144,11 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
log.info("==============接受质检任务下发通知接口开始================={}", data);
|
|
|
ThreeCoordinateDto threeCoordinateDto = JSONObject.parseObject(data, ThreeCoordinateDto.class);
|
|
|
|
|
|
- MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getOrderNumber()).
|
|
|
+ MesNotice mesNotice = MesNotice.builder().orderNo(threeCoordinateDto.getAuidnr()).
|
|
|
buType("TASKDISTRIBUTE").
|
|
|
apiType("QUALITYTASK").
|
|
|
- lineCode("11111").
|
|
|
- status("0").
|
|
|
+ lineCode("407109").
|
|
|
+ status("1").
|
|
|
source("数字化检测系统").
|
|
|
targetSource("产线管控单元").
|
|
|
acceptPar(data).build();
|
|
@@ -227,8 +227,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
// JSONObject jsonObject = JSONObject.parseObject(data);
|
|
|
|
|
|
MesNotice mesNotice = MesNotice.builder().orderNo(System.currentTimeMillis()+"").
|
|
|
- buType("TASKDISTRIBUTE").lineCode("11111").status("1").source("QUALITY").apiType("TASKDISTRIBUTE")
|
|
|
- .targetSource("PRODUCTION_LINE").acceptPar(data).build();
|
|
|
+ buType("TASKDISTRIBUTE").lineCode("407109").status("1").source("智能总控系统").apiType("MESTASK")
|
|
|
+ .targetSource("产线管控单元").acceptPar(data).build();
|
|
|
boolean b = baseService.addNotice(mesNotice);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
@@ -705,7 +705,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
JSONObject queryWorkSources = new JSONObject();
|
|
|
JSONObject queryConsumMaterial = new JSONObject();
|
|
|
JSONObject queryQualityTask = new JSONObject();
|
|
|
- JSONObject queryCutterTask = new JSONObject();
|
|
|
+ JSONObject queryMesTask = new JSONObject();
|
|
|
|
|
|
for (MesNotice item : mesNoticeList) {
|
|
|
//String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
|
|
@@ -729,8 +729,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
case "QUALITYTASK":
|
|
|
queryQualityTask = (JSONObject) JSONObject.parseObject(returnData);
|
|
|
break;
|
|
|
- case "CUTTERNEED":
|
|
|
- queryCutterTask = (JSONObject) JSONObject.parseObject(returnData);
|
|
|
+ case "MESTASK":
|
|
|
+ queryMesTask = (JSONObject) JSONObject.parseObject(returnData);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
@@ -742,8 +742,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
JSONObject workOrder = queryWorkOrder.getJSONArray("respBody") != null ? (JSONObject) queryWorkOrder.getJSONArray("respBody").get(0) : null;
|
|
|
JSONObject workFiles = queryWorkSources.getJSONArray("respBody") != null && queryWorkSources.getJSONArray("respBody").size() > 0 ? (JSONObject) queryWorkSources.getJSONArray("respBody").get(0) : null;
|
|
|
JSONObject consumMaterial = queryConsumMaterial.getJSONArray("respBody") != null ? (JSONObject) queryConsumMaterial.getJSONArray("respBody").get(0) : null;
|
|
|
- JSONObject qualityInfo = queryQualityTask.getObject("TaskCode", String.class)!=null ? queryQualityTask : null;
|
|
|
- JSONObject cutterInfo = queryCutterTask.getObject("AUFNR", String.class)!=null ? queryQualityTask : null;
|
|
|
+ JSONObject qualityInfo = queryQualityTask.getObject("auidnr", String.class)!=null ? queryQualityTask : null;
|
|
|
+ JSONObject mesInfo = queryMesTask.getObject("auidnr", String.class)!=null ? queryMesTask : null;
|
|
|
|
|
|
MMeterial mMeterial = null;
|
|
|
String processNo = null;
|
|
@@ -756,57 +756,67 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
List<Object> taskList = null;
|
|
|
List<Object> workPieceList = null;
|
|
|
|
|
|
- if (null != qualityInfo || null!= cutterInfo) {
|
|
|
+ if (null != qualityInfo || null!=mesInfo) {
|
|
|
//处理质检任务信息
|
|
|
- if(qualityInfo!=null){
|
|
|
- processNo = qualityInfo.getString("ProcessCode");
|
|
|
- workOrderNo = qualityInfo.getString("TaskCode");
|
|
|
- drawingNo = qualityInfo.getString("DrawNumber");
|
|
|
- String batchNo = qualityInfo.getString("BatchNo");
|
|
|
- String serialNo = qualityInfo.getString("PartOrder");
|
|
|
- String userCode = qualityInfo.getString("UserCode");
|
|
|
- partsNo = drawingNo+ "_" + processNo;
|
|
|
-
|
|
|
- //获取默认虚拟原材料
|
|
|
- mMeterial = materialService.getById(1L);
|
|
|
- if(mMeterial==null){
|
|
|
- throw new BizException("没有获取到原材料,或虚拟原材料");
|
|
|
- }
|
|
|
- MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
|
|
|
- materialCode = mMeterial.getMeterialCode();
|
|
|
- BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getDrawingNo, drawingNo).eq(BBom::getNo, processNo).eq(BBom::getSynFlag, "1"));
|
|
|
- if(bom==null){
|
|
|
- if(zone==null){
|
|
|
- throw new BizException("产线信息为空");
|
|
|
- }
|
|
|
- bom = BBom.builder().synFlag("1").name(mMeterial.getTradeMark()+"V"+processNo).batchNo(batchNo).
|
|
|
- partsNo(partsNo).partsAlias(partsNo).no(workOrderNo).brand(processNo).status("1").importantFlag("1").keyFlag("1").zoneId(zone.getId()).drawingNo(drawingNo).build();
|
|
|
- bom.setMeterialId(1L);
|
|
|
- bom.setBomAlias(partsNo);
|
|
|
- bBomService.save(bom);
|
|
|
- }
|
|
|
+ JSONObject dataInfo = (qualityInfo!=null)? qualityInfo : mesInfo;
|
|
|
+ processNo = dataInfo.getString("afonr");
|
|
|
+ workOrderNo = dataInfo.getString("auidnr");
|
|
|
+ String batchNo = dataInfo.getString("batchno");
|
|
|
+ String serialNo = dataInfo.getString("sno");
|
|
|
+ String drawingNo = dataInfo.getString("graphno");
|
|
|
+ String idnr = dataInfo.getString("idnr");
|
|
|
+
|
|
|
+
|
|
|
+ //获取默认虚拟原材料
|
|
|
+ mMeterial = materialService.getById(1L);
|
|
|
+ MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
|
|
|
+ materialCode = StringUtil.isNotEmpty(idnr)? idnr: mMeterial.getMeterialCode();
|
|
|
+ BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getDrawingNo, drawingNo).eq(BBom::getSynFlag, "1"));
|
|
|
+ if(bom==null){
|
|
|
+ materialName = mMeterial.getTradeMark();
|
|
|
+ bom = BBom.builder().synFlag("1").name(materialName+"V"+processNo).batchNo(batchNo).partsNo(materialCode).partsAlias(materialCode).no(workOrderNo).brand(processNo).status("1").importantFlag("1").keyFlag("1").zoneId(zone.getId()).drawingNo(drawingNo).build();
|
|
|
+ bom.setMeterialId(1L);
|
|
|
+ bBomService.save(bom);
|
|
|
+ }else {
|
|
|
materialName = bom.getName();
|
|
|
- version = "V" + processNo;
|
|
|
-
|
|
|
- //初始化业务订单数据
|
|
|
- workOrder = new JSONObject();
|
|
|
- workOrder.put("workOrderNo", workOrderNo);
|
|
|
- workOrder.put("materialCode", materialCode);
|
|
|
- workOrder.put("planSecretLevel", "FM");
|
|
|
- workOrder.put("processRouteVersion", version);
|
|
|
- workOrder.put("batchNo", batchNo);
|
|
|
- List<Object> orderProductSeqList = Lists.newArrayList();
|
|
|
+ }
|
|
|
+ version = "V" + processNo;
|
|
|
+
|
|
|
+ //初始化业务订单数据
|
|
|
+ workOrder = new JSONObject();
|
|
|
+ workOrder.put("workOrderNo", workOrderNo);
|
|
|
+ workOrder.put("materialCode", materialCode);
|
|
|
+ workOrder.put("planSecretLevel", "FM");
|
|
|
+ workOrder.put("processRouteVersion", version);
|
|
|
+ workOrder.put("batchNo", batchNo);
|
|
|
+ List<Object> orderProductSeqList = Lists.newArrayList();
|
|
|
+ if(null != qualityInfo) {
|
|
|
JSONObject data = new JSONObject();
|
|
|
data.put("serialNo", serialNo);
|
|
|
orderProductSeqList.add(data);
|
|
|
- workOrder.put("orderProductSeqList", orderProductSeqList);
|
|
|
- workPieceList = orderProductSeqList;
|
|
|
- }
|
|
|
- if(null!= cutterInfo){
|
|
|
+ }else{
|
|
|
+ String plmenge = dataInfo.getString("plmenge");
|
|
|
+ if(StringUtil.isEmpty(plmenge)) {
|
|
|
+ msgUtil.createWarnLog("Mes订单加工零件个数不允许为空","MESException");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<JSONObject> dataList = IntStream.range(0, (int)Float.parseFloat(plmenge)).mapToObj(i-> {
|
|
|
+ JSONObject obj = new JSONObject();
|
|
|
+ obj.put("serialNo", String.valueOf(i));
|
|
|
+ return obj;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ orderProductSeqList.addAll(dataList);
|
|
|
+ String pstart = dataInfo.getString("pstart");
|
|
|
+ String pend = dataInfo.getString("pend");
|
|
|
+ String bez = dataInfo.getString("bez");
|
|
|
+ workOrder.put("plannedStartTime", pstart);
|
|
|
+ workOrder.put("plannedEndTime", pend);
|
|
|
+ workOrder.put("bez", bez);
|
|
|
|
|
|
}
|
|
|
- }
|
|
|
- else {
|
|
|
+ workOrder.put("orderProductSeqList", orderProductSeqList);
|
|
|
+ workPieceList = orderProductSeqList;
|
|
|
+ }else {
|
|
|
if (null != consumMaterial) {
|
|
|
//处理原材料信息
|
|
|
//判断原材料是否存在
|
|
@@ -909,21 +919,18 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- String bomName = materialName + "V" + processNo;
|
|
|
- BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getMeterialId, mMeterial.getId()).eq(BBom::getPartsNo, partsNo).eq(BBom::getSynFlag, "1"));
|
|
|
+ String bomName = materialName.contains("V")? materialName : materialName + "V" + processNo;
|
|
|
+ BBom bom = bBomService.getOne(new LambdaQueryWrapper<BBom>().eq(BBom::getMeterialId, mMeterial.getId()).eq(BBom::getPartsNo, mMeterial.getMeterialCode()).eq(BBom::getName, bomName).eq(BBom::getSynFlag, "1"));
|
|
|
if (bom == null) {
|
|
|
bom = BBom.builder().build();
|
|
|
- bom.setPartsNo(mMeterial.getMeterialCode())
|
|
|
- .setBomAlias(mMeterial.getMeterialCode())
|
|
|
- .setPartsAlias(mMeterial.getMeterialCode())
|
|
|
- .setBatchNo(mMeterial.getMeterialCode()).setName(bomName).setStatus("1").setSynFlag("1").setImportantFlag("1").setKeyFlag("1").setNo(processNo);
|
|
|
+ bom.setPartsNo(mMeterial.getMeterialCode()).setBomAlias(mMeterial.getMeterialCode()).setPartsAlias(mMeterial.getMeterialCode()).setBatchNo(mMeterial.getMeterialCode()).setName(bomName).setStatus("1").setSynFlag("1").setImportantFlag("1").setKeyFlag("1").setNo(workOrderNo);
|
|
|
bom.setMeterialId(mMeterial.getId()).setBrand(processNo);
|
|
|
if (zone != null) {
|
|
|
bom.setZoneId(zone.getId());
|
|
|
}
|
|
|
bBomService.save(bom);
|
|
|
} else {
|
|
|
- bom.setNo(processNo);
|
|
|
+ bom.setNo(workOrderNo);
|
|
|
bBomService.updateById(bom);
|
|
|
}
|
|
|
if (StringUtil.isEmpty(version)) {
|
|
@@ -945,46 +952,34 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
} else {
|
|
|
versionId = mesVersionInfo.getId();
|
|
|
}
|
|
|
- /*
|
|
|
+ List<BomProcedure> bomProcedureList = bomProcedureService.list(new LbqWrapper<BomProcedure>().eq(BomProcedure::getVersionId, versionId).eq(BomProcedure::getBomId, bom.getId()));
|
|
|
+
|
|
|
//节点处理
|
|
|
- if (taskList.size() >= 4) {
|
|
|
- String[] noArr = new String[] {"OP05","OP10", "OP11", "OP15"};
|
|
|
- String[] typeArr = new String[] {"上料","设备序", "设备序","下料"};
|
|
|
+ if (bomProcedureList.size()== 0 && workOrder.containsKey("bez")) {
|
|
|
+ List<String> noArr = Stream.of("OP05","OP10", "OP11", "OP15").collect(Collectors.toList());
|
|
|
+ List<String> nameArr = Stream.of("上料", workOrder.getString("bez"), "清洗","下料").collect(Collectors.toList());
|
|
|
+ List<String> typeArr = Stream.of("上料","设备序", "设备序","下料").collect(Collectors.toList());
|
|
|
|
|
|
List<BomProcedureVersion> bomProcedureVersionsList = Lists.newArrayList();
|
|
|
- List<BomProcedure> bomProcedureList = Lists.newArrayList();
|
|
|
- Long finalVersionId = versionId;
|
|
|
- BBom finalBom = bom;
|
|
|
- taskList.stream().forEach(item -> {
|
|
|
- JSONObject jsonObject = (JSONObject) item;
|
|
|
- BomProcedureVersion bomProcedureVersion = BomProcedureVersion.builder().build();
|
|
|
- int stepNo = Integer.parseInt(jsonObject.getString("stepNo")) - 1;
|
|
|
- bomProcedureVersion.setVersionId(finalVersionId).setBomId(finalBom.getId()).setAuditStatus("0")
|
|
|
- .setName(jsonObject.getString("stepName")).setRemark(jsonObject.getString("stepDesc")!="null"?jsonObject.getString("stepDesc"):"").setSort(99-stepNo).setRatedWorkhours(10f);
|
|
|
- int index = stepNo < 4 ? stepNo : stepNo % 4;
|
|
|
- bomProcedureVersion.setNo(noArr[index]).setType(typeArr[index]);
|
|
|
+ for(int i=0; i<noArr.size();i++){
|
|
|
+ BomProcedureVersion bomProcedureVersion = BomProcedureVersion.builder().versionId(versionId).bomId(bom.getId()).auditStatus("0").name(nameArr.get(i)).type(typeArr.get(i)).content(nameArr.get(i)).sort(100-i).ratedWorkhours(10f).no(noArr.get(i))
|
|
|
+ .build();
|
|
|
bomProcedureVersionsList.add(bomProcedureVersion);
|
|
|
BomProcedure bomProcedure = BeanUtil.toBean(bomProcedureVersion, BomProcedure.class);
|
|
|
bomProcedure.setRatedWorkhours(10f);
|
|
|
bomProcedureList.add(bomProcedure);
|
|
|
- });
|
|
|
+ }
|
|
|
bomProcedureVersionService.saveBatch(bomProcedureVersionsList);
|
|
|
bomProcedureService.saveBatch(bomProcedureList);
|
|
|
}
|
|
|
- */
|
|
|
|
|
|
//处理工单信息
|
|
|
Order order = Order.builder().build();
|
|
|
order.setOrderNo(workOrder.getString("workOrderNo")).setOrderTime(StringUtil.isNotEmpty(workOrder.getString("plannedStartTime")) ? DateUtil.stringToDate3(workOrder.getString("plannedStartTime")) : new Date()).setDeliveryTime(StringUtil.isNotEmpty(workOrder.getString("plannedEndTime")) ? DateUtil.stringToDate3(workOrder.getString("plannedEndTime")) : new Date()).setSource("2").setProductNum(workPieceList.size())
|
|
|
- .setStatus("1").setSingleTaskFlag(0).setOrderStatus("1").setAuditStatus("0").setBatchNo(workOrder.getString("batchNo"));
|
|
|
+ .setStatus("1").setSingleTaskFlag(0).setOrderStatus("1").setBatchNo(workOrder.getString("batchNo"));
|
|
|
//产品编码+ 密级编码 + 批次号 + 工艺版本
|
|
|
String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
|
|
|
order.setCustId(0L).setOrderName(orderName).setZoneId(zone.getId());
|
|
|
- // 检查订单是否已经创建
|
|
|
- int count = orderService.count(Wraps.<Order>lbQ().eq(Order::getBatchNo, order.getBatchNo()).eq(Order::getSource, "2"));
|
|
|
- if(count>0){
|
|
|
- throw new BizException("订单已存在,相同批次号已经存在");
|
|
|
- }
|
|
|
orderService.save(order);
|
|
|
|
|
|
OrderProduct orderProduct = OrderProduct.builder().build();
|