|
@@ -34,6 +34,7 @@ import com.github.zuihou.business.productionResourceCenter.service.ZZoneService;
|
|
|
import com.github.zuihou.business.util.MsgUtil;
|
|
|
import com.github.zuihou.common.util.DateUtil;
|
|
|
import com.github.zuihou.common.util.StringUtil;
|
|
|
+import com.github.zuihou.context.BaseContextHandler;
|
|
|
import com.github.zuihou.database.mybatis.conditions.Wraps;
|
|
|
import com.github.zuihou.database.mybatis.conditions.query.LbqWrapper;
|
|
|
import com.github.zuihou.database.mybatis.conditions.query.QueryWrap;
|
|
@@ -47,6 +48,7 @@ import io.swagger.annotations.ApiParam;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.compress.utils.Lists;
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
+import org.joda.time.LocalDate;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
@@ -308,6 +310,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
@ApiOperation(value = "更新状态", notes = "更新状态")
|
|
|
@PostMapping("/updateStatus")
|
|
|
public R<MesNotice> updateStatus(@RequestBody MesNoticeUpdateDTO model) {
|
|
|
+ BaseContextHandler.setTenant("0000");
|
|
|
MesNotice mesNotice = baseService.updateStatus(model);
|
|
|
JSONObject ret = null;
|
|
|
if (StringUtil.isNotEmpty(mesNotice.getApiAddress())) {
|
|
@@ -699,7 +702,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
JSONObject queryCutterTask = new JSONObject();
|
|
|
|
|
|
for (MesNotice item : mesNoticeList) {
|
|
|
- String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
|
|
|
+ //String returnData = msgUtil.httpForPost(item.getApiAddress(), jsonParam.toJSONString());
|
|
|
+ String returnData = item.getAcceptPar();
|
|
|
switch (item.getApiType()) {
|
|
|
case "QUERYWORKORDER":
|
|
|
queryWorkOrder = (JSONObject) JSONObject.parseObject(returnData);
|
|
@@ -732,111 +736,160 @@ 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;
|
|
|
|
|
|
MMeterial mMeterial = null;
|
|
|
-
|
|
|
- if (null != material) {
|
|
|
- //处理物料信息
|
|
|
- }
|
|
|
- if (null != consumMaterial) {
|
|
|
- //处理原材料信息
|
|
|
- //判断原材料是否存在
|
|
|
- String materialCode = consumMaterial.containsKey("materialCode") && consumMaterial.getString("materialCode") != "null" ? consumMaterial.getString("materialCode") : consumMaterial.getString("proMaterialCode");
|
|
|
- String materialName = consumMaterial.containsKey("materialName") && consumMaterial.getString("materialName") != "null" ? consumMaterial.getString("materialName") : consumMaterial.getString("proMaterialName");
|
|
|
- mMeterial = materialService.getOne(new LbqWrapper<MMeterial>().eq(MMeterial::getTradeMark, consumMaterial.getString("materialName")).eq(MMeterial::getMeterialCode, materialCode).last("limit 1"));
|
|
|
- if (null == mMeterial) {
|
|
|
- MMeterial instance = MMeterial.builder().build();
|
|
|
- instance.setStatus("1").setSpecification(materialCode).setMeterialCode(materialCode).setEquipmentName(materialName).setTradeMark(materialName).setHandleStatus("");
|
|
|
- if (zone != null) {
|
|
|
- instance.setZoneId(zone.getId());
|
|
|
- }
|
|
|
- materialService.save(instance);
|
|
|
- mMeterial = instance;
|
|
|
- MMeterialReceiveLog mMeterialReceiveLog = MMeterialReceiveLog.builder().meterialId(mMeterial.getId()).meterialBatchNo(consumMaterial.getString("furnaceBatchNo")).bomBatchNo(consumMaterial.getString("batchNo")).furnaceBatchNo(consumMaterial.getString("furnaceBatchNo")).factoryDate(new Date()).batchStand(100).usedNum(0).build();
|
|
|
- meterialReceiveLogService.save(mMeterialReceiveLog);
|
|
|
- } else {
|
|
|
- Integer num = consumMaterial.getInteger("quantity");
|
|
|
- MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()).last("limit 1"));
|
|
|
- Integer surplus = mMeterialReceiveLog.getUsedNum() == null ? mMeterialReceiveLog.getBatchStand() : mMeterialReceiveLog.getBatchStand() - mMeterialReceiveLog.getUsedNum();
|
|
|
- if (null != surplus && surplus < num) {
|
|
|
- msgUtil.createWarnLog(mMeterial.getTradeMark() + "毛坯不够", "MesNoticeWarn");
|
|
|
+ String processNo = null;
|
|
|
+ String materialName = null;
|
|
|
+ String materialCode = null;
|
|
|
+ String workOrderNo = null;
|
|
|
+ String version = null;
|
|
|
+ List<Object> taskList = null;
|
|
|
+ List<Object> workPieceList = null;
|
|
|
+
|
|
|
+ if (null != qualityInfo || null!= cutterInfo) {
|
|
|
+ //处理质检任务信息
|
|
|
+ if(qualityInfo!=null){
|
|
|
+ processNo = qualityInfo.getString("ProcessCode");
|
|
|
+ workOrderNo = qualityInfo.getString("TaskCode");
|
|
|
+ String batchNo = qualityInfo.getString("BatchNo");
|
|
|
+ String serialNo = qualityInfo.getString("PartOrder");
|
|
|
+ String drawingNo = qualityInfo.getString("DrawNumber");
|
|
|
+
|
|
|
+ //获取默认虚拟原材料
|
|
|
+ mMeterial = materialService.getById(1L);
|
|
|
+ MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getById(1L);
|
|
|
+ materialCode = 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(mMeterial.getMeterialCode()).partsAlias(mMeterial.getMeterialCode()).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();
|
|
|
+ JSONObject data = new JSONObject();
|
|
|
+ data.put("serialNo", serialNo);
|
|
|
+ orderProductSeqList.add(data);
|
|
|
+ workOrder.put("orderProductSeqList", orderProductSeqList);
|
|
|
+ workPieceList = orderProductSeqList;
|
|
|
}
|
|
|
+ if(null!= cutterInfo){
|
|
|
|
|
|
- }
|
|
|
- //处理附件信息
|
|
|
- if (null != workFiles) {
|
|
|
- //图片
|
|
|
- List<Object> workOrderFileList = workFiles.getJSONArray("wrkOrderFileList");
|
|
|
- //加工设备
|
|
|
- List<Object> workOrderDeviceList = workFiles.getJSONArray("workOrderDeviceList");
|
|
|
- //加工程序
|
|
|
- List<Object> workOrderDNCList = workFiles.getJSONArray("workOrderDNCList");
|
|
|
- //刀具信息
|
|
|
- List<Object> workOrderToolList = workFiles.getJSONArray("workOrderToolList");
|
|
|
- //工装工具信息
|
|
|
- List<Object> workOrderToolingDtoList = workFiles.getJSONArray("workOrderToolingDtoList");
|
|
|
-
|
|
|
- List<MesAttachment> dataList = Lists.newArrayList();
|
|
|
- //本地保存附件
|
|
|
- if (workOrderFileList.size() > 0) {
|
|
|
- workOrderFileList.stream().forEach(item -> {
|
|
|
- JSONObject jsonObject = (JSONObject) item;
|
|
|
- if (null != jsonObject.getString("attachmentAddress") && jsonObject.getString("attachmentAddress") != "null") {
|
|
|
- MesAttachment mesAttachment = MesAttachment.builder().build();
|
|
|
- mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
|
|
|
- .setUrl(jsonObject.getString("attachmentAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
|
|
|
- dataList.add(mesAttachment);
|
|
|
- }
|
|
|
- });
|
|
|
}
|
|
|
- if (workOrderDNCList.size() > 0) {
|
|
|
- workOrderDNCList.stream().forEach(item -> {
|
|
|
- JSONObject jsonObject = (JSONObject) item;
|
|
|
- if (null != jsonObject.getString("programAddress") && jsonObject.getString("programAddress") != "null") {
|
|
|
- MesAttachment mesAttachment = MesAttachment.builder().build();
|
|
|
- mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
|
|
|
- .setUrl(jsonObject.getString("programAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
|
|
|
- dataList.add(mesAttachment);
|
|
|
+ }else {
|
|
|
+ if (null != consumMaterial) {
|
|
|
+ //处理原材料信息
|
|
|
+ //判断原材料是否存在
|
|
|
+ materialCode = consumMaterial.containsKey("materialCode") && consumMaterial.getString("materialCode") != "null" ? consumMaterial.getString("materialCode") : consumMaterial.getString("proMaterialCode");
|
|
|
+ materialName = consumMaterial.containsKey("materialName") && consumMaterial.getString("materialName") != "null" ? consumMaterial.getString("materialName") : consumMaterial.getString("proMaterialName");
|
|
|
+ mMeterial = materialService.getOne(new LbqWrapper<MMeterial>().eq(MMeterial::getTradeMark, consumMaterial.getString("materialName")).eq(MMeterial::getMeterialCode, materialCode).last("limit 1"));
|
|
|
+ if (null == mMeterial) {
|
|
|
+ MMeterial instance = MMeterial.builder().build();
|
|
|
+ instance.setStatus("1").setSpecification(materialCode).setMeterialCode(materialCode).setEquipmentName(materialName).setTradeMark(materialName).setHandleStatus("");
|
|
|
+ if (zone != null) {
|
|
|
+ instance.setZoneId(zone.getId());
|
|
|
}
|
|
|
- });
|
|
|
- }
|
|
|
- //工装托盘资源处理
|
|
|
- if (workOrderToolingDtoList.size() > 0) {
|
|
|
+ materialService.save(instance);
|
|
|
+ mMeterial = instance;
|
|
|
+ MMeterialReceiveLog mMeterialReceiveLog = MMeterialReceiveLog.builder().meterialId(mMeterial.getId()).meterialBatchNo(consumMaterial.getString("furnaceBatchNo")).bomBatchNo(consumMaterial.getString("batchNo")).furnaceBatchNo(consumMaterial.getString("furnaceBatchNo")).factoryDate(new Date()).batchStand(100).usedNum(0).build();
|
|
|
+ meterialReceiveLogService.save(mMeterialReceiveLog);
|
|
|
+ } else {
|
|
|
+ Integer num = consumMaterial.getInteger("quantity");
|
|
|
+ MMeterialReceiveLog mMeterialReceiveLog = meterialReceiveLogService.getOne(new LambdaQueryWrapper<MMeterialReceiveLog>().eq(MMeterialReceiveLog::getMeterialId, mMeterial.getId()).last("limit 1"));
|
|
|
+ Integer surplus = mMeterialReceiveLog.getUsedNum() == null ? mMeterialReceiveLog.getBatchStand() : mMeterialReceiveLog.getBatchStand() - mMeterialReceiveLog.getUsedNum();
|
|
|
+ if (null != surplus && surplus < num) {
|
|
|
+ msgUtil.createWarnLog(mMeterial.getTradeMark() + "毛坯不够", "MesNoticeWarn");
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
- //刀具和设备资源处理
|
|
|
- if (workOrderToolList.size() > 0 && workOrderDeviceList.size() > 0) {
|
|
|
+ //处理附件信息
|
|
|
+ if (null != workFiles) {
|
|
|
+ //图片
|
|
|
+ List<Object> workOrderFileList = workFiles.getJSONArray("wrkOrderFileList");
|
|
|
+ //加工设备
|
|
|
+ List<Object> workOrderDeviceList = workFiles.getJSONArray("workOrderDeviceList");
|
|
|
+ //加工程序
|
|
|
+ List<Object> workOrderDNCList = workFiles.getJSONArray("workOrderDNCList");
|
|
|
+ //刀具信息
|
|
|
+ List<Object> workOrderToolList = workFiles.getJSONArray("workOrderToolList");
|
|
|
+ //工装工具信息
|
|
|
+ List<Object> workOrderToolingDtoList = workFiles.getJSONArray("workOrderToolingDtoList");
|
|
|
+
|
|
|
+ List<MesAttachment> dataList = Lists.newArrayList();
|
|
|
+ //本地保存附件
|
|
|
+ if (workOrderFileList.size() > 0) {
|
|
|
+ workOrderFileList.stream().forEach(item -> {
|
|
|
+ JSONObject jsonObject = (JSONObject) item;
|
|
|
+ if (null != jsonObject.getString("attachmentAddress") && jsonObject.getString("attachmentAddress") != "null") {
|
|
|
+ MesAttachment mesAttachment = MesAttachment.builder().build();
|
|
|
+ mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
|
|
|
+ .setUrl(jsonObject.getString("attachmentAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
|
|
|
+ dataList.add(mesAttachment);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (workOrderDNCList.size() > 0) {
|
|
|
+ workOrderDNCList.stream().forEach(item -> {
|
|
|
+ JSONObject jsonObject = (JSONObject) item;
|
|
|
+ if (null != jsonObject.getString("programAddress") && jsonObject.getString("programAddress") != "null") {
|
|
|
+ MesAttachment mesAttachment = MesAttachment.builder().build();
|
|
|
+ mesAttachment.setOrderNo(jsonObject.getString("orderNo")).setProcedureNo(jsonObject.getString("workOrderNo")).setVersion(jsonObject.getString("version")).setType(jsonObject.getString("refType"))
|
|
|
+ .setUrl(jsonObject.getString("programAddress")).setName(jsonObject.getString("attachmentName")).setStatus(1);
|
|
|
+ dataList.add(mesAttachment);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ //工装托盘资源处理
|
|
|
+ if (workOrderToolingDtoList.size() > 0) {
|
|
|
|
|
|
+ }
|
|
|
+ //刀具和设备资源处理
|
|
|
+ if (workOrderToolList.size() > 0 && workOrderDeviceList.size() > 0) {
|
|
|
+
|
|
|
+ }
|
|
|
+ if (dataList.size() > 0) {
|
|
|
+ mesAttachmentService.saveBatch(dataList);
|
|
|
+ }
|
|
|
}
|
|
|
- if (dataList.size() > 0) {
|
|
|
- mesAttachmentService.saveBatch(dataList);
|
|
|
+ if (workProcess == null || workOrder == null) {
|
|
|
+ msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "数据推送有误", "MesNoticeWarn");
|
|
|
+ return;
|
|
|
}
|
|
|
- }
|
|
|
- if (workProcess == null || workOrder == null) {
|
|
|
- msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "数据推送有误", "MesNoticeWarn");
|
|
|
- return;
|
|
|
- }
|
|
|
|
|
|
- List<Object> taskList = workProcess.getJSONArray("workOrderProcessStepList");
|
|
|
- List<Object> workPieceList = workOrder.getJSONArray("orderProductSeqList");
|
|
|
+ taskList = workProcess.getJSONArray("workOrderProcessStepList");
|
|
|
+ workPieceList = workOrder.getJSONArray("orderProductSeqList");
|
|
|
|
|
|
- //处理工艺信息
|
|
|
- String version = workProcess.getString("version");
|
|
|
- String productCode = workProcess.getString("productCode");
|
|
|
- String workOrderNo = workProcess.getString("workOrderNo");
|
|
|
- String processNo = workProcess.getString("processNo");
|
|
|
+ //处理工艺信息
|
|
|
+ version = workProcess.getString("version");
|
|
|
+ String productCode = workProcess.getString("productCode");
|
|
|
+ workOrderNo = workProcess.getString("workOrderNo");
|
|
|
+ processNo = workProcess.getString("processNo");
|
|
|
|
|
|
- String materialName = workOrder.getString("materialName");
|
|
|
- String materialCode = workOrder.getString("materialCode");
|
|
|
+ materialName = workOrder.getString("materialName");
|
|
|
+ materialCode = workOrder.getString("materialCode");
|
|
|
|
|
|
- if (!materialCode.equals(productCode)) {
|
|
|
- msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "零件与工艺数据不匹配", "MesNoticeWarn");
|
|
|
- return;
|
|
|
- }
|
|
|
- if (mMeterial == null) {
|
|
|
- msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "原材料信息数据为空", "MesNoticeWarn");
|
|
|
- return;
|
|
|
+ if (!materialCode.equals(productCode)) {
|
|
|
+ msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "零件与工艺数据不匹配", "MesNoticeWarn");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (mMeterial == null) {
|
|
|
+ msgUtil.createWarnLog("产线" + lineCode + "推送工单" + orderNo + "原材料信息数据为空", "MesNoticeWarn");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
String bomName = materialName + "V" + processNo;
|
|
@@ -862,7 +915,7 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
if (null == mesVersionInfo) {
|
|
|
BomVersionInfo bomVersionInfo = BomVersionInfo.builder().build();
|
|
|
bomVersionInfo.setVersion(version).setUseStatus("0").setAuditStatus("2");
|
|
|
- bomVersionInfo.setNo(workOrderNo).setSource("2");
|
|
|
+ bomVersionInfo.setNo(workOrderNo).setSource("2").setModelNo("331");
|
|
|
if (zone != null) {
|
|
|
bomVersionInfo.setZoneId(zone.getId());
|
|
|
}
|
|
@@ -904,8 +957,8 @@ public class MesController extends SuperController<MesNoticeService, Long, MesNo
|
|
|
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").setBatchNo(workOrder.getString("batchNo"));
|
|
|
- //产品编码+生产类型编码(P/B P:按序列生产 B:按批次生产)+ 密级编码 + 批次号 + 工艺版本
|
|
|
- String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("productPhase").toUpperCase() + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
|
|
|
+ //产品编码+ 密级编码 + 批次号 + 工艺版本
|
|
|
+ String orderName = "MES_" + workOrder.getString("materialCode") + "_" + workOrder.getString("planSecretLevel").toUpperCase() + "_" + workOrder.getString("batchNo") + "_" + workOrder.getString("processRouteVersion");
|
|
|
order.setCustId(0L).setOrderName(orderName).setZoneId(zone.getId());
|
|
|
orderService.save(order);
|
|
|
|