From 34879a8187885e9d6fac8642e72d0327b2191454 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Mon, 25 Dec 2023 11:03:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=9C=8B=E6=9D=BF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/dao/MonthlyWorkOrderVo.java | 6 +- .../service/impl/CockpitServiceImpl.java | 23 +++--- .../cockpit/service/mapper/CockPitMapper.xml | 10 +-- .../dao/mapper/MdBaseBrickInfoMapper.java | 9 ++- .../ext/acs/autotask/AutoCallMaterials.java | 1 + .../acs/service/impl/AcsToWmsServiceImpl.java | 37 +++++---- .../ext/mes/autotask/AutoSaveWaitGdyInfo.java | 1 - .../service/dao/mapper/MesRequestMapper.xml | 1 + .../mes/service/dto/MesGdyInfoWaitDto.java | 2 +- .../mms/service/impl/WmsToMmsServiceImpl.java | 9 ++- .../pda/service/dao/vo/DropdownListVo.java | 2 +- .../IPdmBdRequestMaterialRecordService.java | 8 ++ .../PdmBdRequestMaterialRecordMapper.java | 3 + .../PdmBdRequestMaterialRecordMapper.xml | 11 +++ ...PdmBdRequestMaterialRecordServiceImpl.java | 6 ++ .../workorder/service/dao/PdmBdWorkorder.java | 1 - .../sch/point/service/dao/SchBasePoint.java | 2 + .../task/tasks/fj/mapper/FJMapper.xml | 2 +- .../task_manage/task/tasks/hn/HNMLTask.java | 28 ++++--- .../nl/wms/util/GracefulShutdownConfig.java | 60 +++++++++++++++ .../org/nl/wms/util/LogbackQueueMonitor.java | 54 +++++++++++++ .../nlsso-server/src/main/resources/ext.dic | 1 + .../src/test/java/org/nl/ext/TestDemo.java | 36 ++++++++- .../src/views/wms/basedata/material/index.vue | 4 +- .../src/views/wms/sch/task/editTaskDialog.vue | 75 +++++++++++++++++++ 25 files changed, 328 insertions(+), 64 deletions(-) create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/GracefulShutdownConfig.java create mode 100644 lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/LogbackQueueMonitor.java create mode 100644 lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/MonthlyWorkOrderVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/MonthlyWorkOrderVo.java index 1136d7e..ab65708 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/MonthlyWorkOrderVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/dao/MonthlyWorkOrderVo.java @@ -10,8 +10,8 @@ import lombok.Data; @Data public class MonthlyWorkOrderVo { private String name; - private Long order_num; - private Long guada_num; - private Long residue_num; + private String order_num; + private String guada_num; + private String residue_num; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java index 4ffd795..a941918 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/impl/CockpitServiceImpl.java @@ -53,15 +53,15 @@ public class CockpitServiceImpl implements CockpitService { return null; }); // 3、人员月生产 - CompletableFuture> listPersonnelMonthlyProductionFuture = CompletableFuture.supplyAsync( - () -> cockPitMapper.getPersonnelMonthlyProductionList(dayShift), pool); - listPersonnelMonthlyProductionFuture.thenAccept(result -> { - map.put("PersonnelMonthlyProduction", result); - }).exceptionally((e) -> { - log.error("人员月生产: {}", e.getMessage(), e); - map.put("PersonnelMonthlyProduction", null); - return null; - }); +// CompletableFuture> listPersonnelMonthlyProductionFuture = CompletableFuture.supplyAsync( +// () -> cockPitMapper.getPersonnelMonthlyProductionList(dayShift), pool); +// listPersonnelMonthlyProductionFuture.thenAccept(result -> { +// map.put("PersonnelMonthlyProduction", result); +// }).exceptionally((e) -> { +// log.error("人员月生产: {}", e.getMessage(), e); +// map.put("PersonnelMonthlyProduction", null); +// return null; +// }); // 4、生产任务 CompletableFuture> listProductionTaskFuture = CompletableFuture.supplyAsync( () -> cockPitMapper.getProductionTaskList(), pool); @@ -69,7 +69,7 @@ public class CockpitServiceImpl implements CockpitService { map.put("ProductionTask", result); }).exceptionally((e) -> { log.error("生产任务: {}", e.getMessage(), e); - map.put("ProductionTask", null); + map.put("ProductionTask", e); return null; }); // 5、当月工单 @@ -79,14 +79,13 @@ public class CockpitServiceImpl implements CockpitService { map.put("MonthlyWorkOrder", result); }).exceptionally((e) -> { log.error("当月工单: {}", e.getMessage(), e); - map.put("MonthlyWorkOrder", null); + map.put("MonthlyWorkOrder", e); return null; }); // 提交 CompletableFuture allQuery = CompletableFuture.allOf( listCompletableFuture, listShiftProductionFuture, - listPersonnelMonthlyProductionFuture, listProductionTaskFuture, monthlyWorkOrderFuture); CompletableFuture> future diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml index 34b03e7..a7db1b2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/cockpit/service/mapper/CockPitMapper.xml @@ -68,12 +68,12 @@ ORDER BY w.team DESC, w.workorder_status diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java index 1407cca..4b9addb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/database/brick/service/dao/mapper/MdBaseBrickInfoMapper.java @@ -11,10 +11,15 @@ public interface MdBaseBrickInfoMapper extends BaseMapper { /** * 合格数 - * @param workorderCode - * @return + * @param workorderCode 工单号 + * @return 数字 */ int getCountQualifiedQty(String workorderCode); + /** + * 不合格数 + * @param workorderCode 工单号 + * @return 数字 + */ int getCountUnqualifiedQty(String workorderCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoCallMaterials.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoCallMaterials.java index 702c5a3..50c2f22 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoCallMaterials.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/autotask/AutoCallMaterials.java @@ -36,6 +36,7 @@ public class AutoCallMaterials { List workorderList = workorderService.getNeedCallMaterial(); // 判断是否可以叫料,可以就下发给混碾系统 workorderList.forEach(workorder -> { + // 达到工单的数量 if (workorder.getReal_weight().compareTo(workorder.getPlan_weight()) >= 0) { // 不需要请求,等待工单完工 return; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 0c39c67..0b949cf 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -139,7 +139,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String requestMethodName = param.getString("request_medthod_name"); BaseResponse result = BaseResponse.build(requestNo); try { - String requestMethodCode = param.getString("request_medthod_code"); // 获取请求方法名 + String requestMethodCode = param.getString("request_medthod_code"); Method method = methodCache.get(StrUtil.toCamelCase(requestMethodCode)); if (method == null) { throw new BadRequestException("请求方法不存在"); @@ -318,8 +318,10 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { // mark: 特殊处理 protected int specialHandling(String regionCode, JSONObject param) { - int torus = 0; // 无业务:0,分拣剩余0托:1 - if (regionCode.equals("FJ")) { // 判断是否够码满 + // 无业务:0,分拣剩余0托:1 + int torus = 0; + // 判断是否够码满 + if (regionCode.equals("FJ")) { // 分拣需要在这设置特殊值 // 校验是否够码满一托 boolean enoughCallEmpty = workorderService.isEnoughCallEmpty(param.getString("device_code")); @@ -425,8 +427,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { @Override public BaseResponse applyGetPutStation(JSONObject param) { FeedBackSplitPalletStationRequest request = param.toJavaObject(FeedBackSplitPalletStationRequest.class); - String getStation = request.getGet_station(); // 取货点 - String putStation = request.getPut_station(); // 放货点 + String getStation = request.getGet_station(); + String putStation = request.getPut_station(); // 查找当前点位中的信息,如果acs没有提供,就获取点位上的数据,如果点位没有,则数据失效 SchBasePoint pickupPoint = pointService.getById(getStation); SchBasePoint putPoint = pointService.getById(putStation); @@ -442,10 +444,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { PdmBdVehicleBinding vehicleBinding = new PdmBdVehicleBinding(); vehicleBinding.setOrigin_vehicle_code(request.getGet_station_vehicle_code()); vehicleBinding.setOrigin_vehicle_type(GeneralDefinition.STEEL_TRAY); - vehicleBinding.setOrigin_qty(request.getGet_station_qty()); // 当前码垛位的数量 + // 当前码垛位的数量 + vehicleBinding.setOrigin_qty(request.getGet_station_qty()); vehicleBinding.setTarget_vehicle_code(request.getPut_station_vehicle_code()); vehicleBinding.setTarget_vehicle_type(putPoint.getVehicle_type()); - vehicleBinding.setTarget_qty(request.getPut_station_qty()); // 当前拆垛位的数量 + // 当前拆垛位的数量 + vehicleBinding.setTarget_qty(request.getPut_station_qty()); vehicleBinding.setGet_station(request.getGet_station()); vehicleBinding.setPut_station(request.getPut_station()); if (productionTask != null) { @@ -495,6 +499,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String custerNo = object.getString("custer_no"); String orderNo = object.getString("order_no"); CusterDo custer; + // 都是数据就是id,否则就是名称 if (custerNo.matches("\\d+")) { custer = wmsToMesService.getCusterByNo(custerNo); } else { @@ -692,16 +697,6 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { mesMudConsumptionDto.setCREATE_TM(DateUtil.now()); mesMudConsumptionDto.setOP_FLAG(GeneralDefinition.NO); log.info("泥料消耗上报参数:{}", mesMudConsumptionDto); - // 不在维护lms数据表 -// PdmBdMudConsumption mudConsumption = new PdmBdMudConsumption(); -// mudConsumption.setDevice_code(productionTask.getPoint_code()); -// mudConsumption.setGroup_id(one.getGroup_id()); -// mudConsumption.setMaterial_id(one.getMaterial_id()); -// mudConsumption.setWeight(one.getMaterial_weight()); -// mudConsumption.setCurrent_point(basePoint.getPoint_code()); -// mudConsumption.setWorkorder_code(productionTask.getWorkorder_code()); -// mudConsumption.setRaw_material_code(rawMaterialCode); -// String id = mudConsumptionService.create(mudConsumption); // 反馈数据给acs taskResponse.setMix_number(one.getMix_times()); taskResponse.setIs_standing_finish(GeneralDefinition.YES); @@ -713,6 +708,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .eq(PdmBdRequestMaterialRecord::getDevice_code, productionTask.getPoint_code()) .eq(PdmBdRequestMaterialRecord::getWorkorder_id, productionTask.getWorkorder_code()) // 工单编码 .eq(PdmBdRequestMaterialRecord::getIs_delete, false) + .eq(PdmBdRequestMaterialRecord::getIs_finish, true) .orderByAsc(PdmBdRequestMaterialRecord::getCreate_time)); if (list.size() > 0) { PdmBdRequestMaterialRecord record = list.get(0); @@ -817,10 +813,11 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { */ @Deprecated @Transactional(rollbackFor = Exception.class) - public BaseResponse pressRequestMaterial2(JSONObject param) { // (公共接口进来)只是给我一个下料位(中间位置) + public BaseResponse pressRequestMaterial2(JSONObject param) { String requestNo = param.getString("requestNo"); // 压机、原材料物料(混碾)、压机工单、叫料时间 - String deviceCode = param.getString("device_code");// 几号压机下料位 + // 几号压机下料位 + String deviceCode = param.getString("device_code"); SchBasePoint basePoint = pointService.getById(deviceCode); if (ObjectUtil.isEmpty(basePoint)) { return BaseResponse.responseError(requestNo, "设备号[" + deviceCode + "]不正确!"); @@ -910,7 +907,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { vehicleType, GroupBindMaterialStatusEnum.BOUND.getValue()); String extData = baseVehiclematerialgroup.getExt_data(); PalletizeDto palletizeDto = new PalletizeDto(); - if (extData != null && !extData.equals("null")) { + if (extData != null && !"null".equals(extData)) { // 转成实体 palletizeDto = CommonUtils.toJavaObject(extData, PalletizeDto.class); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java index 4eb8e7f..64558f0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/autotask/AutoSaveWaitGdyInfo.java @@ -43,7 +43,6 @@ public class AutoSaveWaitGdyInfo { // 存入表中 list.forEach(mesGdyInfoWaitDto -> { mesGdyInfoWaitDto.setMSGID(IdUtil.getSnowflake(1,1).nextIdStr()); - mesGdyInfoWaitDto.setSEND_TM(DateUtil.now()); mesGdyInfoWaitDto.setPRO_SUBUNIT("块"); mesGdyInfoWaitDto.setCREATE_TM(DateUtil.now()); mesGdyInfoWaitDto.setOP_FLAG(GeneralDefinition.NO); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml index ecfcba9..0f399ea 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dao/mapper/MesRequestMapper.xml @@ -254,6 +254,7 @@ mm.material_code AS FPRODUCT_MATERIAL_ID, mm.material_name AS FPRODUCT_MATERIAL_NAME, mm.material_spec AS FMATSPEC, + vg.instorage_time AS SEND_TM, mm.material_model AS FMATMODEL, IF(LENGTH(pw.batch_no) > 0,pw.batch_no,'-') AS BATCHNO, p2.ext_point_code AS PRESSUNIT, diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java index a0f67a0..5f22bf3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mes/service/dto/MesGdyInfoWaitDto.java @@ -7,7 +7,7 @@ import lombok.Data; * @Description: 带入窑实体 * @Date: 2023/9/22 * 二维码 - * 发送时间 + * 发送时间: 组盘入库时间 * 托盘编号 * 物料编码 * 物料名称 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java index 16a68a9..d6746de 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/mms/service/impl/WmsToMmsServiceImpl.java @@ -5,6 +5,8 @@ import org.nl.wms.ext.mms.service.WmsToMmsService; import org.nl.wms.ext.mms.service.dao.dto.RequestMaterialDto; import org.nl.wms.ext.mms.service.dao.mapper.MmsRequestMapper; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; +import org.nl.wms.sch.point.service.ISchBasePointService; +import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -20,6 +22,8 @@ import java.util.Date; public class WmsToMmsServiceImpl implements WmsToMmsService { @Autowired public MmsRequestMapper mmsRequestMapper; + @Autowired + private ISchBasePointService pointService; @Override public void addRequestMaterial(PdmBdWorkorder workorder) { // 插入:压机、原材料、生产订单号、插入时间 @@ -30,11 +34,12 @@ public class WmsToMmsServiceImpl implements WmsToMmsService { } public RequestMaterialDto toRequestMaterialMapper(PdmBdWorkorder workorder) { + SchBasePoint device = pointService.getById(workorder.getPoint_code()); RequestMaterialDto requestMaterialDto = new RequestMaterialDto(); - requestMaterialDto.setDevice_code(workorder.getPoint_code().charAt(workorder.getPoint_code().length() - 1) + ""); + requestMaterialDto.setDevice_code(device.getExt_point_code().split("#")[0]); requestMaterialDto.setMaterial_code(workorder.getRaw_material_code()); requestMaterialDto.setRequest_date(new Date()); - requestMaterialDto.setProduction_order(workorder.getProduction_order()); + requestMaterialDto.setProduction_order(workorder.getWorkorder_code()); requestMaterialDto.set_used(false); return requestMaterialDto; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java index 89093a8..e4efdcb 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/service/dao/vo/DropdownListVo.java @@ -6,7 +6,7 @@ import java.io.Serializable; /** * @Author: lyd - * @Description: 下拉框数据 + * @Description: 反馈前端下拉框数据 * @Date: 2023/8/1 */ @Data diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java index dcf4820..2f9c62f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/IPdmBdRequestMaterialRecordService.java @@ -7,6 +7,7 @@ import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; import org.nl.wms.pdm.workorder.service.dao.PdmBdWorkorder; import java.math.BigDecimal; +import java.util.List; import java.util.Map; import java.util.Set; @@ -56,4 +57,11 @@ public interface IPdmBdRequestMaterialRecordService extends IService getLeftJoinWorkOrderList(String materialCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java index c60826d..7b32900 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.java @@ -3,10 +3,13 @@ package org.nl.wms.pdm.record.service.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.nl.wms.pdm.record.service.dao.PdmBdRequestMaterialRecord; +import java.util.List; + /** * @author lyd * @date 2023-07-05 **/ public interface PdmBdRequestMaterialRecordMapper extends BaseMapper { + List getLeftJoinWorkOrderList(String materialCode); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml index 95bc6cf..69c8802 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/dao/mapper/PdmBdRequestMaterialRecordMapper.xml @@ -2,4 +2,15 @@ + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java index 583a904..71d3511 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/record/service/impl/PdmBdRequestMaterialRecordServiceImpl.java @@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.List; import java.util.Map; import java.util.Set; @@ -98,4 +99,9 @@ public class PdmBdRequestMaterialRecordServiceImpl extends ServiceImpl getLeftJoinWorkOrderList(String materialCode) { + return pdmBdRequestMaterialRecordMapper.getLeftJoinWorkOrderList(materialCode); + } + } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java index 4af314e..ced9ca4 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/workorder/service/dao/PdmBdWorkorder.java @@ -95,7 +95,6 @@ public class PdmBdWorkorder implements Serializable { @ApiModelProperty(value = "工单类型") private String workorder_type; - // todo: 字段未放开 @ApiModelProperty(value = "生产订单号") @TableField(exist = false) private String production_order; diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java index 6fbe1c0..f7b992f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/SchBasePoint.java @@ -158,4 +158,6 @@ public class SchBasePoint implements Serializable { private String material_model; @TableField(exist = false) private String raw_material_code; + @TableField(exist = false) + private String task_warn; } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml index 3b0369f..1d81f90 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/fj/mapper/FJMapper.xml @@ -14,7 +14,7 @@ AND p.point_status = '3' AND vg.is_firing = true AND vg.material_id = #{materialId} - AND TIMESTAMPDIFF(MINUTE, vg.instorage_time, NOW()) >= ma.cooling_time + AND TIMESTAMPDIFF(HOUR, vg.instorage_time, NOW()) >= ma.cooling_time AND p.region_code IN #{code} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java index 8af28ba..5ea9bc0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/hn/HNMLTask.java @@ -7,6 +7,7 @@ import cn.hutool.core.util.ObjectUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.system.service.notice.ISysNoticeService; import org.nl.wms.database.material.service.IMdBaseMaterialService; @@ -49,6 +50,7 @@ import java.util.stream.Collectors; */ @Component(value = "HLMLTask") @TaskType("HLMLTask") +@Slf4j public class HNMLTask extends AbstractTask { private static final String TASK_CONFIG_CODE = "HLMLTask"; @Autowired @@ -120,6 +122,14 @@ public class HNMLTask extends AbstractTask { noticeService.createNotice(task.getRemark(), TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); continue; } + if (ObjectUtil.isNotEmpty(point.getTask_warn())) { + task.setRemark(point.getTask_warn()); + taskService.updateById(task); + // 消息通知 + noticeService.createNotice("找不到困料点", TASK_CONFIG_CODE + task.getTask_code(), NoticeTypeEnum.WARN.getCode()); + continue; + } + log.info("任务【" + task.getTask_code() + "】叫料标识:{}", point.getRecord_id()); // 叫料完成 requestMaterialRecordService.callMaterialFinish(point.getRecord_id(), jsonObject.getBigDecimal("weight")); // 要料记录 @@ -162,15 +172,12 @@ public class HNMLTask extends AbstractTask { String materialCode = requestParam.getString("material_code"); Assert.notNull(materialCode, "物料编码不能为空!"); materialCode = materialCode.substring(0, 12); - // 获取要料表中的数据,获取对应物料(要料表存的是泥料) - List list = requestMaterialRecordService.list( - new LambdaQueryWrapper() - .eq(PdmBdRequestMaterialRecord::getMaterial_id, materialCode) - .eq(PdmBdRequestMaterialRecord::getIs_delete, false) - .eq(PdmBdRequestMaterialRecord::getIs_finish, false) - .orderByAsc(PdmBdRequestMaterialRecord::getCreate_time)); + // 获取要料表中的数据,获取对应物料(要料表存的是泥料) update: 先工单优先级后时间 + List list = requestMaterialRecordService.getLeftJoinWorkOrderList(materialCode); if (list.size() == 0) { - throw new BadRequestException("压机要料表找不到数据,请排查泥料号:[" + materialCode + "]"); + SchBasePoint point = new SchBasePoint(); + point.setTask_warn("压机要料表找不到数据,请排查泥料号:[" + materialCode + "]"); + return point; } // 要料数据 PdmBdRequestMaterialRecord requestMaterialRecord = list.get(0); @@ -212,8 +219,10 @@ public class HNMLTask extends AbstractTask { String endPoint = taskObj.getPoint_code2(); SchBasePoint endPointObj = pointService.getById(endPoint); String responseParam = taskObj.getResponse_param(); + String requestParam = taskObj.getRequest_param(); JSONObject responseObj = JSONObject.parseObject(responseParam); - String recordId = responseObj.getString("record_id"); + JSONObject requestObj = JSONObject.parseObject(requestParam); + String recordId = requestObj.getString("record_id"); // 要把数据存到组盘表。压制工单放进去, SchBaseVehiclematerialgroup groupEntity = vehiclematerialgroupService.getOne( new LambdaQueryWrapper() @@ -302,6 +311,7 @@ public class HNMLTask extends AbstractTask { // 泥料编码: 吨袋号,泥料前 String packNo = param.getString("material_code"); String materialCode = packNo.substring(0, 12); + // todo: 如果没找到就报错,就不创建组盘信息 // 碾次 String mixTimes = packNo.substring(18, packNo.length()); // 载具类型默认料盅 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/GracefulShutdownConfig.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/GracefulShutdownConfig.java new file mode 100644 index 0000000..2130cdf --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/GracefulShutdownConfig.java @@ -0,0 +1,60 @@ +//package org.nl.wms.util; +// +//import org.apache.catalina.connector.Connector; +//import org.springframework.boot.web.embedded.tomcat.TomcatConnectorCustomizer; +//import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +//import org.springframework.context.ApplicationListener; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.context.event.ContextClosedEvent; +// +//import java.util.concurrent.Executor; +//import java.util.concurrent.ThreadPoolExecutor; +//import java.util.concurrent.TimeUnit; +// +///** +// * @Author: lyd +// * @Description: 优雅停机 +// * @Date: 2023/12/21 +// */ +//@Configuration +//public class GracefulShutdownConfig { +// @Bean +// public GracefulShutdown gracefulShutdown() { +// return new GracefulShutdown(); +// } +// +// @Bean +// public TomcatServletWebServerFactory webServerFactory(final GracefulShutdown gracefulShutdown) { +// TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory(); +// factory.addConnectorCustomizers(gracefulShutdown); +// return factory; +// } +// +// private static class GracefulShutdown implements TomcatConnectorCustomizer, ApplicationListener { +// private volatile Connector connector; +// +// @Override +// public void customize(Connector connector) { +// this.connector = connector; +// } +// +// @Override +// public void onApplicationEvent(ContextClosedEvent event) { +// this.connector.pause(); +// Executor executor = this.connector.getProtocolHandler().getExecutor(); +// if (executor instanceof ThreadPoolExecutor) { +// ThreadPoolExecutor threadPoolExecutor = null; +// try { +// threadPoolExecutor = (ThreadPoolExecutor) executor; +// threadPoolExecutor.shutdown(); +// if (!threadPoolExecutor.awaitTermination(30, TimeUnit.SECONDS)) { +// threadPoolExecutor.shutdownNow(); +// } +// } catch (InterruptedException ex) { +// threadPoolExecutor.shutdownNow(); +// } +// } +// } +// } +//} diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/LogbackQueueMonitor.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/LogbackQueueMonitor.java new file mode 100644 index 0000000..a31ce68 --- /dev/null +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/LogbackQueueMonitor.java @@ -0,0 +1,54 @@ +package org.nl.wms.util; + +import ch.qos.logback.classic.AsyncAppender; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.core.Appender; +import org.slf4j.LoggerFactory; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/12/22 + */ +public class LogbackQueueMonitor { + + public static void main(String[] args) { + // 获取 LoggerContext + LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); + + // 获取 AsyncAppender + AsyncAppender asyncAppender = getAsyncAppender(loggerContext); + + // 监控队列大小 + monitorQueueSize(asyncAppender); + } + + private static AsyncAppender getAsyncAppender(LoggerContext loggerContext) { + Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); + // 替换为你实际的 Appender 名称 + Appender appender = rootLogger.getAppender("asyncFileAppender"); + if (appender instanceof AsyncAppender) { + return (AsyncAppender) appender; + } else { + throw new IllegalStateException("AsyncAppender not found"); + } + } + + private static void monitorQueueSize(AsyncAppender asyncAppender) { + new Thread(() -> { + while (true) { + try { + // 每隔5秒监控一次 + Thread.sleep(5000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + + int queueSize = asyncAppender.getQueueSize(); + System.out.println("AsyncAppender Queue Size: " + queueSize); + } + }).start(); + } +} + diff --git a/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic b/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic index 85a5d87..43a61b3 100644 --- a/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic +++ b/lms/nladmin-system/nlsso-server/src/main/resources/ext.dic @@ -28,3 +28,4 @@ 记录自动要料信息 自动下发混碾 下发混碾失败 +看板【当月工单】日志 diff --git a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java index e9c64e1..3e4cd90 100644 --- a/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java +++ b/lms/nladmin-system/nlsso-server/src/test/java/org/nl/ext/TestDemo.java @@ -1,5 +1,9 @@ package org.nl.ext; +import ch.qos.logback.classic.AsyncAppender; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.core.Appender; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.NumberUtil; import com.alibaba.fastjson.JSONArray; @@ -9,6 +13,7 @@ import org.nl.common.utils.CodeUtil; import org.nl.wms.ext.acs.service.dto.to.wms.ApplyDeviceDto; import org.nl.wms.ext.mes.service.WmsToMesService; import org.nl.wms.ext.mes.service.dao.mapper.MesRequestMapper; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -151,9 +156,32 @@ public class TestDemo { } @Test void testNumberStr() { - System.out.println("1234564".matches("\\d+")); - System.out.println("1234你好564".matches("\\d+")); - System.out.println(DateUtil.format(DateUtil.date(), "yyMMdd")); - System.out.println(String.format("%03d", 12)); + // 获取 LoggerContext + ch.qos.logback.classic.LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); + + // 获取 AsyncAppender + AsyncAppender asyncAppender = getAsyncAppender(loggerContext); + + // 监控队列大小 + monitorQueueSize(asyncAppender); + } + + private static AsyncAppender getAsyncAppender(LoggerContext loggerContext) { + Logger rootLogger = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); + // 替换为你实际的 Appender 名称 + Appender appender = rootLogger.getAppender("asyncFileAppender"); + if (appender instanceof AsyncAppender) { + return (AsyncAppender) appender; + } else { + throw new IllegalStateException("AsyncAppender not found"); + } } + + private static void monitorQueueSize(AsyncAppender asyncAppender) { + while (true) { + int queueSize = asyncAppender.getQueueSize(); + System.out.println("AsyncAppender Queue Size: " + queueSize); + } + } + } diff --git a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue index 6c9b4db..a2cca8f 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/material/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/material/index.vue @@ -122,7 +122,7 @@ style="width: 240px;" /> - + - + diff --git a/lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue b/lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue new file mode 100644 index 0000000..2662073 --- /dev/null +++ b/lms/nladmin-ui/src/views/wms/sch/task/editTaskDialog.vue @@ -0,0 +1,75 @@ + + + + +