From b0e0012939b89a0b88db7af0632865dcb21c6574 Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Sat, 27 May 2023 09:42:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?rev:=E5=B7=A5=E5=8D=95=E4=B8=80=E4=BD=93?= =?UTF-8?q?=E6=9C=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/nl/AppRun.java | 2 - .../java/org/nl/common/enums/AcsTaskEnum.java | 10 +- .../java/org/nl/common/enums/StatusEnum.java | 81 +++---- .../ext/acs/service/impl/AgvInstService.java | 14 +- .../acs/service/impl/WmsToAcsServiceImpl.java | 1 + .../org/nl/wms/product_manage/ReportEnum.java | 39 ++++ .../device/PdmBiDeviceController.java | 4 +- .../PdmProduceWorkorderController.java | 18 +- .../ProduceshiftorderController.java | 30 ++- .../sch/manage/AbstractAcsTask.java | 10 +- .../sch/rest/PointController.java | 114 ---------- .../sch/rest/RegionController.java | 99 -------- .../sch/rest/TaskController.java | 119 ---------- .../sch/service/impl/TaskServiceImpl.java | 8 + .../sch/tasks/SpeMachinery/SpeEmpTask.java | 119 +++++++++- .../sch/tasks/SpeMachinery/SpeFullTask.java | 212 +++++++++++++----- .../sch/tasks/TaskScheduleService.java | 162 +++---------- .../IPdmProduceWorkorderService.java | 15 +- .../IPdmProduceWorkorderrecordService.java | 2 +- .../dao/mapper/PdmProduceWorkorderMapper.java | 2 + .../dao/mapper/PdmProduceWorkorderMapper.xml | 31 +++ .../PdmProduceWorkorderrecordMapper.java | 2 +- .../xml/PdmProduceWorkorderrecordMapper.xml | 11 +- .../service/workorder/dto/ReportQuery.java | 6 +- .../impl/IPdmProduceWorkorderServiceImpl.java | 71 +++++- .../PdmProduceWorkorderrecordServiceImpl.java | 5 +- .../task/SchBaseTaskController.java | 124 +++++++++- .../service/task/ISchBaseTaskService.java | 8 + .../task/impl/SchBaseTaskServiceImpl.java | 72 ++++++ .../resources/config/application-dev3.yml | 25 +-- .../views/wms/scheduler_manage/task/index.vue | 8 + 31 files changed, 801 insertions(+), 623 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/ReportEnum.java delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/PointController.java delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/RegionController.java delete mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/TaskController.java diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/AppRun.java b/mes/hd/nladmin-system/src/main/java/org/nl/AppRun.java index 2203ba94..c5533603 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/AppRun.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/AppRun.java @@ -35,8 +35,6 @@ import org.springframework.web.bind.annotation.RestController; }) @ServletComponentScan @EnableTransactionManagement -@EnableJpaAuditing(auditorAwareRef = "auditorAware") - @EnableMethodCache(basePackages = "org.nl") @EnableCreateCacheAnnotation @MapperScan("org.nl.**.mapper") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java index f1027a42..ece8922b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/AcsTaskEnum.java @@ -24,10 +24,10 @@ public enum AcsTaskEnum { TASK_PRODUCT_MAC("1","专机-专机满料任务"), //3个点,任务编号,缓存线空载具列表 TASK_PRODUCT_CACHE("2","专机-缓存线满料任务"), - //3个点,任务编号,缓存线满料载具列表 - TASK_CACHELINE_OUT("3","缓存线-专机出库任务"), //专机到深坑任务:深坑业务单独处理 - TASK_PRODUCT_WASH("4","专机-深坑任务"), + TASK_PRODUCT_WASH("3","专机-深坑任务"), + //3个点,任务编号,缓存线满料载具列表 + TASK_CACHELINE_OUT("4","缓存线-专机出库任务"), TASK_PLOTTER_MAC("5","刻字机-满料入库"), TASK_PLOTTER_EMPTY("6","刻字机-呼叫空框"), TASK_WARP_MAC("7","包装机-叫料出库"), @@ -56,8 +56,8 @@ public enum AcsTaskEnum { ACS_TASK_TYPE_NOBLE_DOUBLE_TASK("1","诺宝双工任务"), ACS_TASK_TYPE_NOBLE_SINGLE_TASK("2","诺宝单工任务"), - ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("3","诺宝单入-单任务"), - ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("4","诺宝双入-双任务"), + ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK("3","诺宝双入-双任务"), + ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK("4","诺宝单入-单任务"), ACS_TASK_TYPE_NOBLE_POINT_POINT_TASK("5","诺宝点对点任务"), ACS_TASK_TYPE_WEIGHING_TASK_OF_PS20("6","PS20称重任务(刻字-包装)"), ACS_TASK_TYPE_NON_WEIGHING_TASK_OF_PS20("7","PS20不称重任务(刻字-包装)"), diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java index 69e439a3..ca174ce5 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/common/enums/StatusEnum.java @@ -15,65 +15,66 @@ import java.util.Arrays; @AllArgsConstructor public enum StatusEnum { //枚举状态 - STATUS_TRUE("1","是",""), - STATUS_FLASE("0","否",""), + STATUS_TRUE("1","是","",null), + STATUS_FLASE("0","否","",null), //锁状态 - LOCK_OFF("0","否",""), - LOCK_ON("1","是",""), + LOCK_OFF("0","否","",null), + LOCK_ON("1","是","",null), //缓存线点位异常情况 - CACHE_POINT_NORMAL("0","正常",""), - CACHE_POINT_ERROR("1","异常盘点",""), - CACHE_POINT_SCAN_ERROR("2","异常扫码",""), + CACHE_POINT_NORMAL("0","正常","",null), + CACHE_POINT_ERROR("1","异常盘点","",null), + CACHE_POINT_SCAN_ERROR("2","异常扫码","",null), //缓存线载具状态 1-空位、2-绿色空箱、3-黄色满箱、4-红色异常、5不显示 - CACHE_VEL_NORMAL("0","正常",""), - CACHE_VEL_NULL("1","空位",""), - CACHE_VEL_EMT("2","绿色空箱",""), - CACHE_VEL_FULL("3","黄色满箱",""), - CACHE_VEL_ERR("4","红色异常",""), - CACHE_VEL_DIS("5","不显示",""), + CACHE_VEL_NORMAL("0","正常","",null), + CACHE_VEL_NULL("1","空位","",null), + CACHE_VEL_EMT("2","绿色空箱","",null), + CACHE_VEL_FULL("3","黄色满箱","",null), + CACHE_VEL_ERR("4","红色异常","",null), + CACHE_VEL_DIS("5","不显示","",null), //任务状态 - TASK_CREATE("1","生成",""), - TASK_START_ERROR("2","点位确认异常",""), + TASK_CREATE("1","生成","",1), + TASK_START_ERROR("2","点位确认异常","",1<<2), //TASK_END_P("3","确定终点",""), - TASK_START_END_P("4","起点和终点确认",""), - TASK_PUBLISH("5","下发",""), - TASK_RUNNING("6","运行",""), - TASK_FINISH("7","完成",""), - TASK_CANNEL("8","取消",""), + TASK_START_END_P("4","起点和终点确认","",1<<3), + TASK_PUBLISH("5","下发","",1<<4), + TASK_RUNNING("6","运行","",1<<5), + TASK_FINISH("7","完成","",1<<6), + TASK_CANNEL("8","取消","",1<<7), //点位表位置状态 - POINT_LOCATION_EMP("1","空料位",""), - POINT_LOCATION_REC("2","接料位",""), - POINT_LOCATION_FULL("3","满料位",""), - POINT_LOCATION_IN("4","上料位",""), + POINT_LOCATION_EMP("1","空料位","",null), + POINT_LOCATION_REC("2","接料位","",null), + POINT_LOCATION_FULL("3","满料位","",null), + POINT_LOCATION_IN("4","上料位","",null), //出入料箱 - IN_VEHICLE("1","入箱",""), - OUT_VEHICLE("2","出箱",""), + IN_VEHICLE("1","入箱","",null), + OUT_VEHICLE("2","出箱","",null), //出入料箱 - PAUSE_CACHELINE("1","暂停",""), - START_CACHELINE("2","启动",""), + PAUSE_CACHELINE("1","暂停","",null), + START_CACHELINE("2","启动","",null), //设备状态枚举1-关机、2-开机、3-生产中、4-待机、5-故障 - DEVICE_STATUS_OFF("1","关机",""), - DEVICE_STATUS_ON("2","开机",""), - DEVICE_STATUS_RUNING("3","生产中",""), - DEVICE_STATUS_WAITING("4","待机",""), - DEVICE_STATUS_ERROR("5","故障",""), + DEVICE_STATUS_OFF("1","关机","",null), + DEVICE_STATUS_ON("2","开机","",null), + DEVICE_STATUS_RUNING("3","生产中","",null), + DEVICE_STATUS_WAITING("4","待机","",null), + DEVICE_STATUS_ERROR("5","故障","",null), // 点位表点位状态 - POINT_STATUS_EMPTY("1", "空位", ""), - POINT_STATUS_FULL("2", "有料", ""), - POINT_STATUS_EMPTY_VEHICLE("3", "空载具", ""), + POINT_STATUS_EMPTY("1", "空位", "",null), + POINT_STATUS_FULL("2", "有料", "",null), + POINT_STATUS_EMPTY_VEHICLE("3", "空载具", "",null), // 出入库分配明细状态 - IOS_NOCREATE("00","未生成",""), - IOS_CREATE("01","生成",""), - IOS_RUNNING("02","执行中",""), - IOS_FINISH("99","完成",""), + IOS_NOCREATE("00","未生成","",null), + IOS_CREATE("01","生成","",null), + IOS_RUNNING("02","执行中","",null), + IOS_FINISH("99","完成","",null), ; private String code; private String desc; private String ext; + private Integer bit; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index e6f4f214..ab7724df 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -80,10 +80,12 @@ public class AgvInstService { if (next.getName().equals("深坑清洗")){ query.put("material_id",task.getString("material_id")); // query.put("qty",quantity) 深坑物料需要转重量 + task.put("task_type",AcsTaskEnum.TASK_PRODUCT_WASH.getCode()); } List> list = deviceService.workproceduceDevices(query); - + task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); + task.put("is_send","1"); String nextPoint = null; String cacheVehile = ""; if (!CollectionUtils.isEmpty(list)){ @@ -93,7 +95,8 @@ public class AgvInstService { throw new BadRequestException("当前任务下一道工序无可用设备"); } nextPoint = getParamByXml(workprodure, currentFlow, nextPoint); - task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode()); + task.put("task_type",AcsTaskEnum.TASK_PRODUCT_CACHE.getCode()); + task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); cacheVehile = getCacheVehile(nextPoint, null); } @@ -102,8 +105,8 @@ public class AgvInstService { throw new BadRequestException("逻辑非配错误,请检查代码"); } } - basePointService.update(new UpdateWrapper() - .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); +// basePointService.update(new UpdateWrapper() +// .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); schBaseTask.setBarcodeArr(cacheVehile); @@ -168,7 +171,8 @@ public class AgvInstService { SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); schBaseTask.setBarcodeArr(cacheVehile); schBaseTask.setPoint_code1(startPoint); - schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); + schBaseTask.setIs_send(true); + schBaseTask.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); schBaseTask.setPoint_code3(startPoint); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setUpdate_time(new Date()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java index 6d279131..d693c832 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/WmsToAcsServiceImpl.java @@ -34,6 +34,7 @@ public class WmsToAcsServiceImpl implements WmsToAcsService{ , "priority", task.getString("priority") , "is_send", task.getBoolean("is_send")?"1":"0" , "vehicle_code", task.getString("vehicle_code") + , "quantity", task.getString("material_qty") , "barcodeArr", task.getString("barcodeArr") , "proprity_floor", "2" , "agv_system_type", task.getString("agv_system_type") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/ReportEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/ReportEnum.java new file mode 100644 index 00000000..7c204e9c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/ReportEnum.java @@ -0,0 +1,39 @@ +package org.nl.wms.product_manage; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.utils.MapOf; +import org.nl.modules.common.exception.BadRequestException; + +import java.util.Map; + +/* + * @author ZZQ + * @Date 2023/5/4 20:11 + */ +@AllArgsConstructor +@Getter +public enum ReportEnum { + //出入库类型 + REPORT_STATUS(MapOf.of("生成", "1", "报工", "2","报工审核","3")), + ; + private Map code; + + public String code(String desc) { + String code = this.getCode().get(desc); + if (StringUtils.isNotEmpty(code)) { + return code; + } + throw new BadRequestException(this.name() + "对应类型" + desc + "未定义"); + } + + public String check(String code) { + for (Map.Entry entry : this.getCode().entrySet()) { + if (entry.getValue().equals("code")) { + return entry.getValue(); + } + } + throw new BadRequestException(this.name() + "对应类型" + code + "未定义"); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java index 9d288bff..b1c46e2c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/device/PdmBiDeviceController.java @@ -50,11 +50,11 @@ public class PdmBiDeviceController { return new ResponseEntity<>(TableDataInfo.build(result),HttpStatus.OK); } - @GetMapping("/list") + @PostMapping("/list") @Log("查询生产设备列表") @ApiOperation("查询生产设备列表") @SaIgnore - public ResponseEntity queryList(DeviceQuery query){ + public ResponseEntity queryList(@RequestBody DeviceQuery query){ List> list = iDeviceService.listMaps(query.build().select("device_code", "device_name")); return new ResponseEntity<>(TableDataInfo.build(list),HttpStatus.OK); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java index 161f45b8..15867f68 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/PdmProduceWorkorderController.java @@ -1,6 +1,7 @@ package org.nl.wms.product_manage.controller.workorder; +import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -93,9 +94,6 @@ public class PdmProduceWorkorderController { if (ids != null && ids.length > 0){ iPdmProduceWorkorderService.update(new UpdateWrapper() .set("is_delete",true) - .set("update_id", SecurityUtils.getCurrentUserId()) - .set("update_name",SecurityUtils.getCurrentNickName()) - .set("update_time",new Date()) .in("workorder_id", Arrays.asList(ids))); } return new ResponseEntity<>(HttpStatus.OK); @@ -146,14 +144,18 @@ public class PdmProduceWorkorderController { return new ResponseEntity<>(HttpStatus.OK); } - @GetMapping("/reportQuery") - @Log("报工查询") - @ApiOperation("报工查询") - public ResponseEntity reportQuery(ReportQuery query) { - return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.reportQuery(query)),HttpStatus.OK); + + + @PostMapping("/reportQuery") + @Log("报工数修改") + @ApiOperation("报工数修改") + @SaIgnore + public ResponseEntity reportQuery(@RequestBody ReportQuery param) { + return new ResponseEntity<>(TableDataInfo.build(iPdmProduceWorkorderService.reportQuery(param)),HttpStatus.OK); } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java index cb6bbbeb..d17e65f6 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/controller/workorder/ProduceshiftorderController.java @@ -2,9 +2,11 @@ package org.nl.wms.product_manage.controller.workorder; import cn.dev33.satoken.annotation.SaIgnore; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; +import org.nl.common.TableDataInfo; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; import org.nl.common.utils.api.ResultCode; @@ -13,6 +15,9 @@ import org.nl.wms.mps.service.ProduceshiftorderService; import org.nl.wms.mps.service.dto.DeviceDto; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderrecordService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord; +import org.nl.wms.product_manage.service.workorder.impl.PdmProduceWorkorderrecordServiceImpl; import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -33,8 +38,10 @@ import java.util.Map; @Slf4j public class ProduceshiftorderController{ private final ProduceshiftorderService produceshiftorderService; + private final IPdmProduceWorkorderService iPdmProduceWorkorderService; - private final IPdmBiDeviceService pdmBiDeviceService; + + private final IPdmProduceWorkorderrecordService workorderrecordService; @PostMapping("/getDevice") @@ -69,7 +76,8 @@ public class ProduceshiftorderController{ if(null == param) { throw new BizCoreException(ResultCode.VALIDATE_FAILED); } - return new ResponseEntity<>(produceshiftorderService.getOrderList(param, page), HttpStatus.OK); + List list = iPdmProduceWorkorderService.getOrderList(param, page); + return new ResponseEntity<>(TableDataInfo.build(list), HttpStatus.OK); } @PostMapping("/openStart") @@ -93,6 +101,23 @@ public class ProduceshiftorderController{ iPdmProduceWorkorderService.finish(param); return new ResponseEntity<>(HttpStatus.OK); } + @PostMapping("/deleteReport") + @Log("deleteReport") + @ApiOperation("deleteReport") + public ResponseEntity deleteReport(@RequestBody JSONObject param) { + workorderrecordService.removeById(param.getString("macoperate_id")); + return new ResponseEntity<>(HttpStatus.OK); + } + + + @PostMapping("/updateReport") + @Log("报工数修改") + @ApiOperation("报工数修改") + public ResponseEntity updateReport(@RequestBody JSONObject param) { + iPdmProduceWorkorderService.updateReport(param); + return new ResponseEntity<>(HttpStatus.OK); + } + @PostMapping("/getReportWork") @Log("获取当前报工记录") @@ -118,6 +143,7 @@ public class ProduceshiftorderController{ return new ResponseEntity<>(HttpStatus.OK); } + @GetMapping("/getUser") @Log("查询操作人员") @ApiOperation("查询操作人员") diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/manage/AbstractAcsTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/manage/AbstractAcsTask.java index 5544c51f..ce2cdc8f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/manage/AbstractAcsTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/manage/AbstractAcsTask.java @@ -4,6 +4,10 @@ package org.nl.wms.product_manage.sch.manage; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; + +import java.util.ArrayList; +import java.util.List; /** @@ -25,14 +29,16 @@ public abstract class AbstractAcsTask { public abstract String createTask(JSONObject param); - public abstract void cancel(String task_id); - public abstract void pointConfirm(JSONObject param); public void notifyAcs(JSONArray param){}; + public List schedulerTask(List tasks){ + return new ArrayList<>(); + }; + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/PointController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/PointController.java deleted file mode 100644 index 64d156ec..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/PointController.java +++ /dev/null @@ -1,114 +0,0 @@ - -package org.nl.wms.product_manage.sch.rest; - - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.anno.Log; -import org.nl.wms.product_manage.sch.service.PointService; -import org.nl.wms.product_manage.sch.service.dto.PointDto; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @author ldjun - * @date 2021-08-19 - **/ -//@RestController -@RequiredArgsConstructor -//@Api(tags = "点位管理") -//@RequestMapping("/api/point") -//@Slf4j -public class PointController { - - private final PointService pointService; - - @GetMapping - @Log("查询点位") - @ApiOperation("查询点位") - //@SaCheckPermission("point:list") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(pointService.queryAll(whereJson, page), HttpStatus.OK); - } - - @PostMapping - @Log("新增点位") - @ApiOperation("新增点位") - //@SaCheckPermission("point:add") - public ResponseEntity create(@Validated @RequestBody PointDto dto) { - pointService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改点位") - @ApiOperation("修改点位") - //@SaCheckPermission("point:edit") - public ResponseEntity update(@Validated @RequestBody PointDto dto) { - pointService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除点位") - @ApiOperation("删除点位") - //@SaCheckPermission("point:del") - @DeleteMapping - public ResponseEntity delete(@RequestBody Long[] ids) { - pointService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - @PutMapping("/changeActive") - @Log("修改点位启用状态") - @ApiOperation("修改点位启用状态") - //@SaCheckPermission("store:edit") - public ResponseEntity update(@RequestBody JSONObject json) { - pointService.changeActive(json); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @PostMapping("/getPoint") - @Log("查询点位下拉框") - @ApiOperation("查询点位下拉框") - //@SaCheckPermission("materialtype:list") - public ResponseEntity queryPoint(@RequestBody Map whereJson) { - return new ResponseEntity<>(pointService.getPoint(whereJson), HttpStatus.OK); - } - - @GetMapping("/selectPoint") - @Log("查询点位管理") - @ApiOperation("查询点位管理") - //@SaCheckPermission("Point:list") - public ResponseEntity selectPoint(@RequestParam Map whereJson, Pageable page){ - return new ResponseEntity<>(pointService.selectPoint(whereJson,page),HttpStatus.OK); - } - @GetMapping("/getRegion") - @Log("获取区域") - @ApiOperation("获取区域") - public ResponseEntity getRegion(){ - return new ResponseEntity<>(pointService.getRegion(),HttpStatus.OK); - } - - @Log("启动与禁用") - @PostMapping("/changeUsed") - @ApiOperation("启动与禁用") - public ResponseEntity changeUsedOn(@RequestBody JSONObject jsonObject) { - pointService.changeUsed(jsonObject); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("锁定与解锁") - @PostMapping("/changeLock") - @ApiOperation("锁定与解锁") - public ResponseEntity changeLock(@RequestBody JSONObject jsonObject) { - pointService.changeLock(jsonObject); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/RegionController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/RegionController.java deleted file mode 100644 index 663b1cb7..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/RegionController.java +++ /dev/null @@ -1,99 +0,0 @@ -package org.nl.wms.product_manage.sch.rest; - -import com.alibaba.fastjson.JSONObject; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.common.anno.Log; -import org.nl.wms.product_manage.sch.service.RegionService; -import org.nl.wms.product_manage.sch.service.dto.RegionDto; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** -* @author lyd -* @date 2023-03-17 -**/ -//@RestController -@RequiredArgsConstructor -//@Api(tags = "区域管理管理") -//@RequestMapping("/api/region") -//@Slf4j -public class RegionController { - - private final RegionService regionService; - - @GetMapping - @Log("查询区域管理") - @ApiOperation("查询区域管理") - //@SaCheckPermission("region:list") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(regionService.queryAll(whereJson, page), HttpStatus.OK); - } - - @GetMapping("/getPointQuery") - @Log("获取可用点位") - @ApiOperation("获取可用点位") - //@SaCheckPermission("region:list") - public ResponseEntity getPointQuery(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(regionService.getPointQuery(whereJson, page), HttpStatus.OK); - } - - @PostMapping - @Log("新增区域管理") - @ApiOperation("新增区域管理") - //@SaCheckPermission("region:add") - public ResponseEntity create(@Validated @RequestBody RegionDto dto) { - regionService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改区域管理") - @ApiOperation("修改区域管理") - //@SaCheckPermission("region:edit") - public ResponseEntity update(@Validated @RequestBody RegionDto dto) { - regionService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除区域管理") - @ApiOperation("删除区域管理") - //@SaCheckPermission("region:del") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] codes) { - regionService.deleteAll(codes); - return new ResponseEntity<>(HttpStatus.OK); - } - - @PostMapping("/getPointStatusSelectByCode") - @Log("获取点位状态下拉框") - @ApiOperation("获取点位状态下拉框") - //@SaCheckPermission("region:add") - public ResponseEntity getPointStatusSelectByCode(@RequestBody String region_code) { - return new ResponseEntity<>(regionService.getPointStatusSelectByCode(region_code), HttpStatus.CREATED); - } - - @PostMapping("/getPointTypeSelectByCode") - @Log("获取点位类型下拉框") - @ApiOperation("获取点位类型下拉框") - //@SaCheckPermission("region:add") - public ResponseEntity getPointTypeSelectByCode(@RequestBody String region_code) { - return new ResponseEntity<>(regionService.getPointTypeSelectByCode(region_code), HttpStatus.CREATED); - } - - @PostMapping("/getRegionSelect") - @Log("获取区域下拉框") - @ApiOperation("获取区域下拉框") - public ResponseEntity getRegionSelect(@RequestBody JSONObject whereJson) { - return new ResponseEntity<>(regionService.getRegionSelect(whereJson), HttpStatus.CREATED); - } - -} - diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/TaskController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/TaskController.java deleted file mode 100644 index e988fe7b..00000000 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/rest/TaskController.java +++ /dev/null @@ -1,119 +0,0 @@ - -package org.nl.wms.product_manage.sch.rest; - - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; - import lombok.RequiredArgsConstructor; -import org.nl.common.anno.Log; -import lombok.extern.slf4j.Slf4j; -import org.nl.wms.system_manage.service.dict.ISysDictService; -import org.nl.wms.system_manage.service.dict.dao.Dict; -import org.nl.wms.product_manage.sch.manage.FinishTypeEnum; -import org.nl.wms.product_manage.sch.service.TaskService; -import org.nl.wms.product_manage.sch.service.dto.TaskDto; -import org.springframework.data.domain.Pageable; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import java.util.Map; - -/** - * @author ldjun - * @date 2021-08-19 - **/ -@RestController -@RequiredArgsConstructor -@Api(tags = "任务管理") -@RequestMapping("/api/task") -@Slf4j -public class TaskController { - - private final TaskService taskService; - private final ISysDictService dictService; - - @GetMapping - @Log("查询任务") - @ApiOperation("查询任务") - //@PreAuthorize("@el.check('task:list')") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { - return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK); - } - - @PostMapping - @Log("新增任务") - @ApiOperation("新增任务") - //@PreAuthorize("@el.check('task:add')") - public ResponseEntity create(@Validated @RequestBody TaskDto dto) { - taskService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改任务") - @ApiOperation("修改任务") - //@PreAuthorize("@el.check('task:edit')") - public ResponseEntity update(@Validated @RequestBody TaskDto dto) { - taskService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除任务") - @ApiOperation("删除任务") - //@PreAuthorize("@el.check('task:del')") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - taskService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @GetMapping("/taskStatus") - @Log("获取任务状态列表") - @ApiOperation("获取任务状态列表") - public ResponseEntity getTaskStatus() { - return new ResponseEntity<>(dictService.list(new LambdaQueryWrapper() - .eq(Dict::getCode, "task_status")), HttpStatus.OK); - } - - @PostMapping("/taskType") - @Log("获取任务类型列表") - @ApiOperation("获取任务类型列表") - public ResponseEntity getTaskType() { - return new ResponseEntity<>(taskService.getTaskTypes(), HttpStatus.OK); - } - @GetMapping("/acsTaskType") - @Log("获取acs任务类型列表") - @ApiOperation("获取acs任务类型列表") - public ResponseEntity getAcsTaskType() { - return new ResponseEntity<>(taskService.getAcsTaskType(), HttpStatus.OK); - } - - @GetMapping("/finishType") - @Log("获取任务类型列表") - @ApiOperation("获取任务类型列表") - public ResponseEntity getFinishType() { - FinishTypeEnum[] values = FinishTypeEnum.values(); - JSONArray arr = new JSONArray(); - for (FinishTypeEnum value : values) { - JSONObject json = new JSONObject(); - json.put("code", value.getCode()); - json.put("name", value.getName()); - arr.add(json); - } - return new ResponseEntity<>(arr, HttpStatus.OK); - } - - @PutMapping("/operation") - @Log("任务操作") - @ApiOperation("任务操作") - //@PreAuthorize("@el.check('task:edit')") - public ResponseEntity update(@RequestBody Map map) { - taskService.operation(map); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } -} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java index 73754f30..d213bd48 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/service/impl/TaskServiceImpl.java @@ -207,6 +207,14 @@ public class TaskServiceImpl implements TaskService { cancel.add(res2); acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel)); break; + case "delete": + JSONArray delete = new JSONArray(); + JSONObject res3 = new JSONObject(); + res3.put("task_id", task_id); + res3.put("status", AcsTaskEnum.STATUS_CANNEL.getCode()); + delete.add(res3); + acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(delete)); + break; default: break; } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java index 2df27ebd..0f93a11a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -1,5 +1,6 @@ package org.nl.wms.product_manage.sch.tasks.SpeMachinery; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; import cn.hutool.core.util.IdUtil; @@ -17,6 +18,7 @@ import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; @@ -36,9 +38,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 专机任务 @@ -151,7 +152,7 @@ public class SpeEmpTask extends AbstractAcsTask { private JSONObject packageParam(JSONObject form, String task_id) { JSONObject task = new JSONObject(); 参数封装:{ - AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_"); + AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "TASK_"); task.put("task_id", task_id); task.put("task_name", taskEnum.getDesc()); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); @@ -227,4 +228,114 @@ public class SpeEmpTask extends AbstractAcsTask { public void pointConfirm(JSONObject param) { agvInstService.empMatter(param); } + + + @Override + public List schedulerTask(List array) { + ArrayList Merge = new ArrayList<>(); + if (!CollectionUtils.isEmpty(array)){ + String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','")); + JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0); + //区域编号对应point_code + Map> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code"))); + Set mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet()); + //合并下发的任务 + List notMerge = new ArrayList<>();//单独下发的任务 + List waitingTask = new ArrayList<>();//可合并,但是只有单条任务 + Map taskGroupMap = new HashMap<>(); + for (SchBaseTask task : array) { + String taskGroupId = org.nl.common.utils.IdUtil.getStringId(); + String taskId = task.getTask_id(); + task.setIs_send(true); + if (taskGroupMap.get(taskId) != null){ + task.setTask_group_id(taskGroupMap.get(taskId)); + task.setIs_send(false); + Merge.add(task); + continue; + } + String start = task.getPoint_code1(); + String end = task.getPoint_code2(); + taskGroupMap.put(taskId,taskGroupId); + task.setTask_group_id(taskGroupId); + //如果点位不属于查询出来可以合并点位集合:则单独下发集合 + if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){ + notMerge.add(task); + continue; + } + //起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中 + List collect = taskGroupMap.keySet().stream().collect(Collectors.toList()); + collect.add(taskId); + String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect); + if (mergeTargetId == null){ + waitingTask.add(task); + continue; + } + //查询到相同区域可以合并的点位集合 + taskGroupMap.put(mergeTargetId,taskGroupId); + Merge.add(task); + } + //开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发 + if (waitingTask.size()>0){ + List needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >1 ).collect(Collectors.toList()); + notMerge.addAll(needPublish); + } + String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId); + notMerge.forEach(a->{ + a.setIs_send(true); + }); + Merge.addAll(notMerge); + } + Map> collect = Merge.stream().collect(Collectors.groupingBy(SchBaseTask::getTask_group_id)); + ArrayList result = new ArrayList<>(); + for (List value : collect.values()) { + updateAcsTaskType(value); + result.addAll(value); + } + return result; + } + + private void updateAcsTaskType(List value) { + if (value.size() > 1){ + boolean tag = true; + for (SchBaseTask task : value) { + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode()); + } + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode()); + } + if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); } + } + } + } + + + private String getMergePoint(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { + String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); + if (findpoint == null){ + findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); + } + return findpoint; + } + + private String findpoint(Map> pointRegionCollent, String start, List tasks, List taskIds) { + List objects = pointRegionCollent.get(start); + if (CollectionUtils.isEmpty(objects)){ + return null; + } + JSONObject startPointInfo = (JSONObject) objects.get(0); + String startPointCollent = startPointInfo.getString("pointcollent"); + String[] split = startPointCollent.split(","); + for (String s : split) { + Optional any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny(); + if (any.isPresent()){ + return any.get().getTask_id(); + } + } + return null; + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index cb074327..4d2c6e40 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -1,7 +1,9 @@ package org.nl.wms.product_manage.sch.tasks.SpeMachinery; +import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; @@ -19,12 +21,12 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService; import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial; -import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; -import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; @@ -32,9 +34,8 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; /** * 专机任务 @@ -47,7 +48,7 @@ public class SpeFullTask extends AbstractAcsTask { @Autowired private ISchBaseTaskService taskService; @Autowired - private ISchBasePointService pointService; + private IPdmBiDeviceService deviceService; @Autowired private ISchCachelineVehilematerialService cacheLineVechileService; @Autowired @@ -60,6 +61,7 @@ public class SpeFullTask extends AbstractAcsTask { public SpeFullTask() { SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_MAC.name() ,new Spe2Spe()); SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_CACHE.name() ,new Spe2Cache()); + SpeHandles.put(AcsTaskEnum.TASK_PRODUCT_WASH.name() ,new Spe2Wash()); } @Override @@ -69,7 +71,10 @@ public class SpeFullTask extends AbstractAcsTask { // 指令执行中 SchBaseTask task = taskService.getById(param.getString("task_id")); AcsTaskEnum taskType = AcsTaskEnum.getType(task.getTask_type(),"TASK_"); - pointService.update(new UpdateWrapper().set("lock_type","0").in("point_code",task.getPoint_code1(),task.getPoint_code2(),task.getPoint_code3())); + taskService.update(new UpdateWrapper() + .set("task_status",status) + .set("update_name","acs") + .set("update_time",DateUtil.now()).eq("task_id",task.getTask_id())); try { SpeHandles.get(taskType.name()).handle(param,status,task); }catch (Exception ex){ @@ -83,7 +88,6 @@ public class SpeFullTask extends AbstractAcsTask { public String createTask(JSONObject param) { String point_code = param.getString("device_code"); String quantity = param.getString("quantity"); - String type = param.getString("type"); PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() .eq("workorder_code", param.getString("workorder_code")) .eq("is_delete", false) @@ -98,7 +102,7 @@ public class SpeFullTask extends AbstractAcsTask { JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code, "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", - "","product_area",order.getProduct_area(),"quantity", quantity,"type",type,"material_id", order.getMaterial_id())); + "","product_area",order.getProduct_area(),"quantity", quantity,"type",AcsTaskEnum.TASK_PRODUCT_MAC.getCode(),"material_id", order.getMaterial_id())); String taskId = IdUtil.getStringId(); JSONObject task = packageParam(form, taskId); @@ -117,7 +121,7 @@ public class SpeFullTask extends AbstractAcsTask { private JSONObject packageParam(JSONObject form, String task_id) { JSONObject task = new JSONObject(); 参数封装:{ - AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "REQUEST_"); + AcsTaskEnum taskEnum = AcsTaskEnum.getType(form.getString("type"), "TASK_"); task.put("task_id", task_id); task.put("task_name", taskEnum.getDesc()); task.put("task_code", CodeUtil.getNewCode("TASK_CODE")); @@ -145,15 +149,8 @@ public class SpeFullTask extends AbstractAcsTask { } @Override - public void cancel(String taskId) { - log.info(OPT_NAME+"cancel taskID:{}",taskId); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - //专机-专机 - //专机-缓存线 - //缓存线出库 - taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+taskId+"'"); + public void cancel(String taskId) { } - } interface SpeStatusHandler{ void handle(JSONObject param,String status,SchBaseTask task); } @@ -163,30 +160,22 @@ public class SpeFullTask extends AbstractAcsTask { AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); switch (status){ case STATUS_START: - taskService.update(new UpdateWrapper() - .set("task_status",StatusEnum.TASK_RUNNING.getCode()) - .set("update_name","acs") - .set("update_time",DateUtil.now()).eq("task_id",task.getTask_id())); Map extParam = (Map)param.get("ext_param"); - if (extParam.get("put_finish") != null){ - pointService.update(new UpdateWrapper() - .set("vehicle_code",task.getVehicle_code2()) - .eq("point_code",task.getPoint_code3())); - } - if (extParam.get("take_finish") != null){ - pointService.update(new UpdateWrapper() - .set("vehicle_code","") - .eq("point_code",task.getPoint_code3())); - pointService.update(new UpdateWrapper() - .set("vehicle_code",task.getVehicle_code2()) - .eq("point_code",task.getPoint_code1())); - } +// if (extParam.get("put_finish") != null){ +// pointService.update(new UpdateWrapper() +// .set("vehicle_code",task.getVehicle_code2()) +// .eq("point_code",task.getPoint_code3())); +// } +// if (extParam.get("take_finish") != null){ +// pointService.update(new UpdateWrapper() +// .set("vehicle_code","") +// .eq("point_code",task.getPoint_code3())); +// pointService.update(new UpdateWrapper() +// .set("vehicle_code",task.getVehicle_code2()) +// .eq("point_code",task.getPoint_code1())); +// } break; case STATUS_FINISH: - taskService.update(new UpdateWrapper() - .set("task_status",StatusEnum.TASK_FINISH.getCode()) - .set("update_name","acs") - .set("update_time",DateUtil.now()).eq("task_id",task.getTask_id())); break; case STATUS_CANNEL: cancel(param.getString("task_id")); @@ -203,15 +192,8 @@ public class SpeFullTask extends AbstractAcsTask { AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); switch (status){ case STATUS_START: - Map extParam = (Map)param.get("ext_param"); - UpdateWrapper wrapper = new UpdateWrapper() - .set("task_status", StatusEnum.TASK_RUNNING.getCode()) - .set("update_name", "acs") - .set("update_time", DateUtil.now()).eq("task_id", task.getTask_id()); - - if (extParam.get("outboxt")!= null){ wrapper.set("vehicle_code2",extParam.get("outboxt")); } - taskService.update(wrapper); - + Map extParam = (Map)param.get("ext_param");//outboxt inboxt + //outboxt箱子更新到任务表vechile_code2? if (extParam.get("inboxt") != null){ SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial(); vehilematerial.setVehmaterial_id(IdUtil.getStringId()); @@ -222,13 +204,8 @@ public class SpeFullTask extends AbstractAcsTask { vehilematerial.setQuantity(task.getMaterial_qty()); cacheLineVechileService.save(vehilematerial); } - break; case STATUS_FINISH: - taskService.update(new UpdateWrapper() - .set("task_status",StatusEnum.TASK_FINISH.getCode()) - .set("update_name","acs") - .set("update_time",DateUtil.now()).eq("task_id",task.getTask_id())); break; case STATUS_CANNEL: cancel(param.getString("task_id")); @@ -238,9 +215,138 @@ public class SpeFullTask extends AbstractAcsTask { } } } + class Spe2Wash implements SpeStatusHandler{ + @Override + public void handle(JSONObject param, String sta,SchBaseTask task) { + AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); + switch (status){ + case STATUS_START: + Map extParam = (Map)param.get("ext_param"); + log.info("生坑到料完成:"+param.toString()); + if (extParam.get("fall_finish") != null){ + PdmBiDevice one = deviceService.getOne(new QueryWrapper().eq("device_code", task.getPoint_code2())); + deviceService.update(new UpdateWrapper() + .set("material_id", task.getMaterial_id()) + .set("deviceinstor_qty",one.getDeviceinstor_qty().add(task.getMaterial_qty())) + .eq("device_code", task.getPoint_code2())); + } + break; + case STATUS_FINISH: + break; + case STATUS_CANNEL: + break; + default: + throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + } + } + } @Override public void pointConfirm(JSONObject param) { agvInstService.fullMaster(param); } + + @Override + public List schedulerTask(List array) { + ArrayList Merge = new ArrayList<>(); + if (!CollectionUtils.isEmpty(array)){ + String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','")); + JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0); + //区域编号对应point_code + Map> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code"))); + Set mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet()); + //合并下发的任务 + List notMerge = new ArrayList<>();//单独下发的任务 + List waitingTask = new ArrayList<>();//可合并,但是只有单条任务 + Map taskGroupMap = new HashMap<>(); + for (SchBaseTask task : array) { + String taskGroupId = IdUtil.getStringId(); + String taskId = task.getTask_id(); + if (taskGroupMap.get(taskId) != null){ + task.setTask_group_id(taskGroupMap.get(taskId)); + Merge.add(task); + continue; + } + String start = task.getPoint_code1(); + String end = task.getPoint_code2(); + taskGroupMap.put(taskId,taskGroupId); + task.setTask_group_id(taskGroupId); + //如果点位不属于查询出来可以合并点位集合:则单独下发集合 + if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){ + notMerge.add(task); + continue; + } + //起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中 + List collect = taskGroupMap.keySet().stream().collect(Collectors.toList()); + collect.add(taskId); + String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect); + if (mergeTargetId == null){ + waitingTask.add(task); + continue; + } + //查询到相同区域可以合并的点位集合 + taskGroupMap.put(mergeTargetId,taskGroupId); + Merge.add(task); + } + //开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发 + if (waitingTask.size()>0){ + List needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >1 ).collect(Collectors.toList()); + notMerge.addAll(needPublish); + } + String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); + log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId); + Merge.addAll(notMerge); + } + Map> collect = Merge.stream().collect(Collectors.groupingBy(SchBaseTask::getTask_group_id)); + + ArrayList result = new ArrayList<>(); + for (List value : collect.values()) { + updateAcsTaskType(value); + result.addAll(value); + } + return result; + } + + private void updateAcsTaskType(List value) { + if (value.size() > 1){ + boolean tag = true; + for (SchBaseTask task : value) { + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode()); + } + if (task.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode())){ + task.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode()); + } + if (tag){task.setIs_send(true);tag = false;}else {task.setIs_send(false); } + } + } + } + + private String getMergePoint(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { + String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); + if (findpoint == null){ + findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); + } + return findpoint; + } + + private String findpoint(Map> pointRegionCollent, String start, List tasks, List taskIds) { + List objects = pointRegionCollent.get(start); + if (CollectionUtils.isEmpty(objects)){ + return null; + } + JSONObject startPointInfo = (JSONObject) objects.get(0); + String startPointCollent = startPointInfo.getString("pointcollent"); + String[] split = startPointCollent.split(","); + for (String s : split) { + Optional any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny(); + if (any.isPresent()){ + return any.get().getTask_id(); + } + } + return null; + } + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java index 4cbfde32..6b0aa66b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java @@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import lombok.RequiredArgsConstructor; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.nl.common.enums.AcsTaskEnum; @@ -17,6 +18,7 @@ import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.ext.acs.service.WmsToAcsService; +import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.http.HttpStatus; @@ -43,120 +45,52 @@ public class TaskScheduleService { private final WmsToAcsService wmsToAcsService; private final ISchBaseTaskService taskService; + @SneakyThrows @Scheduled(cron = "0/30 * * * * ?") public void taskPublish(){ boolean islock = lock.tryLock(); try { if (islock){ - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); //查询所有自动下发的任务 - List all = taskService.list(new QueryWrapper().eq("is_auto_issue", "1").lt("task_status", StatusEnum.TASK_PUBLISH.getCode())); + List pointConfirmList = taskService.list(new QueryWrapper().eq("is_auto_issue", "1").eq("is_delete",false).lt("task_status", StatusEnum.TASK_START_END_P.getCode())); //进行起点终点确认: - if (all.size() == 0){ - return; - } - log.info("TaskScheduleService#taskPublish all_task:{}",all.size()); - Iterator iterator = all.iterator(); - while (iterator.hasNext()){ - SchBaseTask task =iterator.next(); - if (task.getTask_status().equals(StatusEnum.TASK_START_END_P.getCode())){ - continue; - } - try { - Object obj = SpringContextHolder.getBean(Class.forName(task.getHandle_class())); - // 调用每个任务类的forceFinishInst()强制结束方法 - Method m = obj.getClass().getDeclaredMethod("pointConfirm", JSONObject.class, String.class); - m.invoke(obj,task); - task.setTask_type(StatusEnum.TASK_START_END_P.getCode()); - }catch (Exception ex){ - task.setTask_type(StatusEnum.TASK_START_ERROR.getCode()); - task.setRemark(ex.getMessage()); - task.setUpdate_time(new Date()); - taskService.updateById(task); - iterator.remove(); + if (pointConfirmList.size() > 0){ + Iterator iterator = pointConfirmList.iterator(); + while (iterator.hasNext()){ + SchBaseTask task =iterator.next(); + try { + Object obj = SpringContextHolder.getBean(Class.forName(task.getHandle_class())); + // 调用每个任务类的forceFinishInst()强制结束方法 + Method m = obj.getClass().getDeclaredMethod("pointConfirm", JSONObject.class); + m.invoke(obj,JSONObject.toJSON(task)); + task.setTask_type(StatusEnum.TASK_START_END_P.getCode()); + }catch (Exception ex){ + task.setTask_type(StatusEnum.TASK_START_ERROR.getCode()); + task.setRemark(ex.getMessage()); + task.setUpdate_time(new Date()); + taskService.updateById(task); + } } } + List all = taskService.list(new QueryWrapper().eq("is_auto_issue", "1").eq("is_delete",false).eq("task_status", StatusEnum.TASK_START_END_P.getCode())); //分区域:不同区域调用不同acs接口 Map> areaCollent = all.stream().collect(Collectors.groupingBy(SchBaseTask::getProduct_area)); for (String area : areaCollent.keySet()) { - List array = areaCollent.get(area); - if (array.size()>0){ - String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','")); - JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0); - //区域编号对应point_code - Map> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code"))); - Set mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet()); - //合并下发的任务 - List notMerge = new ArrayList<>();//单独下发的任务 - List Merge = new ArrayList<>();//单独下发的任务 - List waitingTask = new ArrayList<>();//可合并,但是只有单条任务 - //Map taskGroupMap = array.stream().filter(a-> StringUtils.isNotEmpty(a.getTask_group_id())).collect(HashMap::new, (k, v) -> k.put(v.getTask_id(), v.getTask_group_id()), HashMap::putAll); - Map taskGroupMap = new HashMap<>(); - for (SchBaseTask task : array) { - String taskGroupId = IdUtil.getStringId(); - String taskId = task.getTask_id(); - task.setIs_send(true); - if (taskGroupMap.get(taskId) != null){ - task.setTask_group_id(taskGroupMap.get(taskId)); - task.setIs_send(false); - Merge.add(task); - continue; - } - String start = task.getPoint_code1(); - String end = task.getPoint_code2(); - taskGroupMap.put(taskId,taskGroupId); - task.setTask_group_id(taskGroupId); - //如果点位不属于查询出来可以合并点位集合:则单独下发集合 - if (!mergePointCollent.contains(start) && !mergePointCollent.contains(end)){ - notMerge.add(task); - continue; - } - //起点点位是否有多个合并任务点,如果没有则判断终点是否有多个合并任务点;都没有则说明当前起点终点对应区域只有一个任务:放入等待下发集合中 - List collect = taskGroupMap.keySet().stream().collect(Collectors.toList()); - collect.add(taskId); - String mergeTargetId = getMergePoint(pointRegionCollent, start,end,array,collect); - if (mergeTargetId == null){ - waitingTask.add(task); - continue; - } - //查询到相同区域可以合并的点位集合 - taskGroupMap.put(mergeTargetId,taskGroupId); - Merge.add(task); - } - //开始下发:处理waitingTask:如果创建时间>2分钟:则改单独下发 - if (waitingTask.size()>0){ - List needPublish = waitingTask.stream().filter(a -> DateUtil.between(new Date(),a.getCreate_time(), DateUnit.MINUTE) >2 ).collect(Collectors.toList()); - notMerge.addAll(needPublish); - } - String notMergeID = notMerge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); - String waitingTaskId = waitingTask.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); - String MergeId = Merge.stream().map(a -> a.getTask_id()).collect(Collectors.joining(",")); - log.info("TaskScheduleService#taskPublish notMerge:{},waitingTask:{},merge:{}",notMergeID,waitingTaskId,MergeId); - notMerge.forEach(a->{ - a.setIs_send(true); - if (a.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_TASK.getCode())){ - a.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_TASK.getCode()); - } - if (a.getAcs_task_type().equals(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_DOUBLE_ENTRY_TASK.getCode())){ - a.setAcs_task_type(AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); - } - }); - Merge.addAll(notMerge); - //批量更新任务状态,is_send,task_group_id - JSONArray arr = new JSONArray(); - for (SchBaseTask task : Merge) { - task.setUpdate_name("schedule"); - task.setUpdate_time(new Date()); - taskService.updateById(task); - arr.add(JSONObject.toJSON(task)); - } - //缓存线任务待确认是否生成多个 - Map resp = wmsToAcsService.issueTaskToAcs(arr); -// if (((int)resp.get("status")) == (HttpStatus.BAD_REQUEST.value())){ -// Object errArr = resp.get("errArr"); -// throw new BadRequestException(String.valueOf(resp.get("message"))); -// } + Map> listMap = areaCollent.get(area).stream().collect(Collectors.groupingBy(SchBaseTask::getHandle_class)); + List Merge = new ArrayList<>(); + for (Map.Entry> array : listMap.entrySet()) { + //调用不同实现 + AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(array.getKey())); + Merge.addAll(taskHandler.schedulerTask(array.getValue())); } + JSONArray arr = new JSONArray(); + for (SchBaseTask task : Merge) { + task.setUpdate_name("schedule"); + task.setUpdate_time(new Date()); + taskService.updateById(task); + arr.add(JSONObject.toJSON(task)); + } + Map resp = wmsToAcsService.issueTaskToAcs(arr); } } }finally { @@ -167,30 +101,4 @@ public class TaskScheduleService { } - private String getMergePoint(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { - String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); - if (findpoint == null){ - findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); - } - return findpoint; - } - - private String findpoint(Map> pointRegionCollent, String start, List tasks, List taskIds) { - List objects = pointRegionCollent.get(start); - if (CollectionUtils.isEmpty(objects)){ - return null; - } - JSONObject startPointInfo = (JSONObject) objects.get(0); - String startPointCollent = startPointInfo.getString("pointcollent"); - String[] split = startPointCollent.split(","); - for (String s : split) { - Optional any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny(); - if (any.isPresent()){ - return any.get().getTask_id(); - } - } - return null; - } - - } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java index 2c403b12..f64326d4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderService.java @@ -7,10 +7,10 @@ import org.nl.common.domain.query.PageQuery; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workorder.dto.ReportQuery; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; +import org.springframework.data.domain.Pageable; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -90,6 +90,15 @@ public interface IPdmProduceWorkorderService extends IService getOrderList(Map param, Pageable page); /** * 开工操作 * @@ -107,6 +116,9 @@ public interface IPdmProduceWorkorderService extends IService reportQuery(ReportQuery query); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderrecordService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderrecordService.java index c8b62eba..633c389e 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderrecordService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/IPdmProduceWorkorderrecordService.java @@ -17,5 +17,5 @@ import java.util.Map; */ public interface IPdmProduceWorkorderrecordService extends IService { - List getWorkorderRecordDtl(ReportQuery query); + List reportQuery(ReportQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java index 794348f7..d3122bc4 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.java @@ -25,4 +25,6 @@ public interface PdmProduceWorkorderMapper extends BaseMapper event, @Param("workorder_id")String workorder_id); + List orderList(Map qeury); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml index 56ec0f9e..1a3bcaec 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderMapper.xml @@ -71,6 +71,37 @@ order by record.seq_number + update PDM_produce_workOrder set diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderrecordMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderrecordMapper.java index ae7c714f..abc1b051 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderrecordMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/PdmProduceWorkorderrecordMapper.java @@ -18,5 +18,5 @@ import java.util.Map; */ public interface PdmProduceWorkorderrecordMapper extends BaseMapper { - List getWorkorderRecordDtl(@Param("query")ReportQuery query); + List reportQuery(@Param("query")ReportQuery query); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/xml/PdmProduceWorkorderrecordMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/xml/PdmProduceWorkorderrecordMapper.xml index 0b782794..08ae1d6b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/xml/PdmProduceWorkorderrecordMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dao/mapper/xml/PdmProduceWorkorderrecordMapper.xml @@ -2,9 +2,10 @@ - SELECT wr.workorder_code, + sys_user.username as produce_person_name, wr.device_code, mb.material_name, mb.material_spec, @@ -13,12 +14,13 @@ FROM pdm_produce_workorderrecord re INNER JOIN pdm_produce_workorder wr on re.workorder_id = wr.workorder_id LEFT JOIN md_me_materialbase mb on mb.material_id = wr.material_id - where wr.is_delete = true + LEFT JOIN sys_user on re.produce_person_id = sys_user.user_id + where wr.is_delete = false - and wr.device_code = #{device_code} + and wr.device_code = #{query.device_code} - and wr.workorder_code = #{workorder_code} + and wr.workorder_code = #{query.workorder_code} and wr.realproducestart_date >= #{query.start_time} @@ -26,5 +28,6 @@ and #{query.end_time} >= wr.realproducestart_date + order by workorder_code desc,seq_number asc diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/ReportQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/ReportQuery.java index f7216905..d7e4f514 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/ReportQuery.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/dto/ReportQuery.java @@ -7,15 +7,19 @@ import org.nl.common.enums.QueryTEnum; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord; +import java.util.Date; + /* * @author ZZQ * @Date 2023/4/26 11:05 */ @Data -public class ReportQuery extends BaseQuery { +public class ReportQuery { private String device_code; private String workorder_code; private String report; + private String start_time; + private String end_time; } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index c5296326..0f0210a9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -30,6 +30,7 @@ import org.nl.wms.masterdata_manage.service.material.IMdMeMaterialbaseService; import org.nl.wms.masterdata_manage.service.material.dao.MdMeMaterialbase; import org.nl.wms.mps.service.WorkOrderImportEnum; import org.nl.wms.mps.service.dto.ProduceshiftorderDto; +import org.nl.wms.product_manage.ReportEnum; import org.nl.wms.product_manage.ReportRecordStatus; import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; @@ -43,7 +44,9 @@ import org.nl.wms.product_manage.service.workorder.dto.ReportQuery; import org.nl.wms.product_manage.service.workorder.dto.WorkorderQuery; import org.nl.wms.system_manage.service.user.ISysUserService; import org.nl.wms.system_manage.service.user.dao.SysUser; +import org.redisson.misc.Hash; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -522,18 +525,38 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl resp = wmsToAcsService.order(array); + PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); workOrder.setWorkorder_status(WorkerOrderEnum.PRODUCTING.getCode()); - if (((int) resp.get("status")) == (HttpStatus.BAD_REQUEST.value())) { - throw new BadRequestException(resp.get("message")!=null?String.valueOf(resp.get("message")):"acs反馈异常"); - } + workOrder.setRealproducestart_date(DateUtil.now()); workOrder.setReal_qty(null); this.update(workOrder, new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); + PdmProduceWorkorderrecord workorderrecord = packageRecordForm(workOrder); + reportRecordService.save(workorderrecord); + + Map resp = wmsToAcsService.order(array); + if (HttpStatus.BAD_REQUEST.equals(resp.get("status"))) { + throw new BadRequestException(resp.get("message")!=null?String.valueOf(resp.get("message")):"acs反馈异常"); + } return RestBusinessTemplate.execute(() -> resp); } + @NotNull + private PdmProduceWorkorderrecord packageRecordForm(PdmProduceWorkorder workOrder) { + PdmProduceWorkorderrecord workorderrecord = new PdmProduceWorkorderrecord(); + workorderrecord.setMacoperate_id(IdUtil.getStringId()); + workorderrecord.setWorkorder_id(workOrder.getWorkorder_id()); + workorderrecord.setWorkprocedure_id(workOrder.getWorkprocedure_id()); + workorderrecord.setDevice_code(workOrder.getDevice_code()); + workorderrecord.setProduct_area(workOrder.getProduct_area()); + workorderrecord.setReport_status(ReportEnum.REPORT_STATUS.code("生成")); + workorderrecord.setProduce_person_id(SecurityUtils.getCurrentUserId()); + workorderrecord.setOperatetime_start(DateUtil.now()); + workorderrecord.setShift_type_scode(workOrder.getShift_type_scode()); + return workorderrecord; + } + @NotNull private JSONObject packageForm(JSONObject param) { PdmProduceWorkorder workOrder = this.getOne(new QueryWrapper().eq("workorder_id", param.getString("workorder_id"))); @@ -576,13 +599,14 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .set("report_qty", param.getBigDecimal("report_qty")) .set("nok_qty", param.getBigDecimal("nok_qty")) .set("repare_qty", param.getBigDecimal("repare_qty")) - .set("needproduct_qty", workorder.getPlan_qty().doubleValue() - workorder.getReport_qty().doubleValue()) + .set("needproduct_qty", Math.max(0,workorder.getPlan_qty().intValue() - workorder.getReport_qty().intValue())) .eq("macoperate_id", one.getMacoperate_id())); return one.getMacoperate_id(); } @@ -672,6 +696,41 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl reportQuery(ReportQuery query) { - return reportRecordService.getWorkorderRecordDtl(query); + List list = reportRecordService.reportQuery(query); + Map hashMap = new HashMap<>(); + int i =0; + for (Map map : list) { + String code = (String)map.get("workorder_code"); + if (hashMap.get(code)==null){ + hashMap.put(code,code); + i =0; + } + i++; + map.put("seq_number",i); + } + return list; + } + + + @Override + public List getOrderList(Map param, Pageable page) { + return this.baseMapper.orderList(param); + } + + @Override + public void updateReport(JSONObject param) { + Assert.notNull(param,"参数不能为空"); + PdmProduceWorkorderrecord record = reportRecordService.getOne(new QueryWrapper() + .eq("macoperate_id", param.getString("macoperate_id"))); + PdmProduceWorkorder workorder = this.getOne(new QueryWrapper() + .eq("workorder_id", record.getWorkorder_id())); + if (!workorder.getIs_canupdate_update()){ + throw new BadRequestException("当前工单设置为不允许修改报工记录"); + } + reportRecordService.update(new UpdateWrapper() + .set("nok_qty",param.getBigDecimal("nok_qty")) + .set("repare_qty",param.getBigDecimal("repare_qty")) + .set("report_qty",param.getBigDecimal("report_qty")) + .eq("macoperate_id", param.getString("macoperate_id"))); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderrecordServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderrecordServiceImpl.java index 1a7582cb..7223c3e9 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderrecordServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/PdmProduceWorkorderrecordServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.wms.product_manage.service.workorder.impl; +import com.alibaba.fastjson.JSON; import lombok.var; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorderrecord; import org.nl.wms.product_manage.service.workorder.dao.mapper.PdmProduceWorkorderrecordMapper; @@ -23,7 +24,7 @@ import java.util.Map; public class PdmProduceWorkorderrecordServiceImpl extends ServiceImpl implements IPdmProduceWorkorderrecordService { @Override - public List getWorkorderRecordDtl(ReportQuery query) { - return this.baseMapper.getWorkorderRecordDtl(query); + public List reportQuery(ReportQuery query) { + return this.baseMapper.reportQuery(query); } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/SchBaseTaskController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/SchBaseTaskController.java index bfd6951d..cff437e7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/SchBaseTaskController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/controller/task/SchBaseTaskController.java @@ -1,21 +1,121 @@ package org.nl.wms.scheduler_manage.controller.task; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.nl.common.anno.Log; +import lombok.extern.slf4j.Slf4j; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.system_manage.service.dict.ISysDictService; +import org.nl.wms.system_manage.service.dict.dao.Dict; +import org.nl.wms.product_manage.sch.manage.FinishTypeEnum; +import org.nl.wms.product_manage.sch.service.TaskService; +import org.nl.wms.product_manage.sch.service.dto.TaskDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; -import org.springframework.web.bind.annotation.RequestMapping; - -import org.springframework.web.bind.annotation.RestController; - +import java.util.Map; /** - *

- * 任务表 前端控制器 - *

- * - * @author generator - * @since 2023-05-11 - */ + * @author ldjun + * @date 2021-08-19 + **/ @RestController -@RequestMapping("/schBaseTask") +@RequiredArgsConstructor +@Api(tags = "任务管理") +@RequestMapping("/api/task") +@Slf4j public class SchBaseTaskController { + private final TaskService taskService; + private final ISysDictService dictService; + @Autowired + private ISchBaseTaskService baseTaskService; + + @GetMapping + @Log("查询任务") + @ApiOperation("查询任务") + //@PreAuthorize("@el.check('task:list')") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(taskService.queryAll(whereJson, page), HttpStatus.OK); + } + + @PostMapping + @Log("新增任务") + @ApiOperation("新增任务") + //@PreAuthorize("@el.check('task:add')") + public ResponseEntity create(@Validated @RequestBody TaskDto dto) { + taskService.create(dto); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改任务") + @ApiOperation("修改任务") + //@PreAuthorize("@el.check('task:edit')") + public ResponseEntity update(@Validated @RequestBody TaskDto dto) { + taskService.update(dto); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除任务") + @ApiOperation("删除任务") + //@PreAuthorize("@el.check('task:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody String[] ids) { + taskService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("/taskStatus") + @Log("获取任务状态列表") + @ApiOperation("获取任务状态列表") + public ResponseEntity getTaskStatus() { + return new ResponseEntity<>(dictService.list(new LambdaQueryWrapper() + .eq(Dict::getCode, "task_status")), HttpStatus.OK); + } + + @PostMapping("/taskType") + @Log("获取任务类型列表") + @ApiOperation("获取任务类型列表") + public ResponseEntity getTaskType() { + return new ResponseEntity<>(taskService.getTaskTypes(), HttpStatus.OK); + } + @GetMapping("/acsTaskType") + @Log("获取acs任务类型列表") + @ApiOperation("获取acs任务类型列表") + public ResponseEntity getAcsTaskType() { + return new ResponseEntity<>(taskService.getAcsTaskType(), HttpStatus.OK); + } + + @GetMapping("/finishType") + @Log("获取任务类型列表") + @ApiOperation("获取任务类型列表") + public ResponseEntity getFinishType() { + FinishTypeEnum[] values = FinishTypeEnum.values(); + JSONArray arr = new JSONArray(); + for (FinishTypeEnum value : values) { + JSONObject json = new JSONObject(); + json.put("code", value.getCode()); + json.put("name", value.getName()); + arr.add(json); + } + return new ResponseEntity<>(arr, HttpStatus.OK); + } + + @PutMapping("/operation") + @Log("任务操作") + @ApiOperation("任务操作") + //@PreAuthorize("@el.check('task:edit')") + public ResponseEntity update(@RequestBody Map map) { + baseTaskService.operation(map); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java index bdae63ce..df6f158b 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/ISchBaseTaskService.java @@ -3,6 +3,8 @@ package org.nl.wms.scheduler_manage.service.task; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.Map; + /** *

* 任务表 服务类 @@ -13,4 +15,10 @@ import com.baomidou.mybatisplus.extension.service.IService; */ public interface ISchBaseTaskService extends IService { + /** + * 任务操作 + * + * @param param + */ + void operation(Map param); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java index 03766996..f7c6945d 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/task/impl/SchBaseTaskServiceImpl.java @@ -1,11 +1,29 @@ package org.nl.wms.scheduler_manage.service.task.impl; +import cn.hutool.core.map.MapUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import org.nl.common.enums.AcsTaskEnum; +import org.nl.common.enums.StatusEnum; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.wms.ext.acs.service.AcsToWmsService; +import org.nl.wms.ext.acs.service.impl.WmsToAcsServiceImpl; +import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.nl.wms.scheduler_manage.service.task.dao.mapper.SchBaseTaskMapper; import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.wms.storage_manage.CHANGE_BILL_TYPE_ENUM; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import java.util.Map; + /** *

* 任务表 服务实现类 @@ -17,4 +35,58 @@ import org.springframework.stereotype.Service; @Service public class SchBaseTaskServiceImpl extends ServiceImpl implements ISchBaseTaskService { + @Autowired + @Lazy + private AcsToWmsService acsToWmsService; + + @Override + public void operation(Map map) { + WmsToAcsServiceImpl wms = new WmsToAcsServiceImpl(); + String task_id = MapUtil.getStr(map, "task_id"); + String method_name = MapUtil.getStr(map, "method_name"); + JSONObject taskObj = WQLObject.getWQLObject("SCH_BASE_Task").query("task_id = '" + task_id + "'").uniqueResult(0); + if (taskObj.getString("task_status").equals(TaskStatusEnum.FINISHED.getCode())) throw new BadRequestException("任务已完成!"); + + switch (method_name) { // forceFinish, cancel + case "immediateNotifyAcs": + JSONArray array = new JSONArray(); + array.add(taskObj); + wms.issueTaskToAcs(array); + break; + case "forceFinish": + JSONArray finish = new JSONArray(); + JSONObject res = new JSONObject(); + res.put("task_id", task_id); + res.put("status", AcsTaskEnum.STATUS_FINISH.getCode()); + res.put("finished_type", AcsTaskEnum.MANUAL_TASK_FINISHED_TYPE.getCode()); // 手动完成 + finish.add(res); + acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(finish)); + break; + case "cancel": + JSONArray cancel = new JSONArray(); + JSONObject res2 = new JSONObject(); + res2.put("task_id", task_id); + res2.put("status", AcsTaskEnum.STATUS_CANNEL.getCode()); + cancel.add(res2); + acsToWmsService.receiveTaskStatusAcs(JSON.toJSONString(cancel)); + break; + case "delete": + SchBaseTask one = getOne(new QueryWrapper().eq("task_id", task_id)); + int status = Integer.valueOf(one.getTask_status()); + //判断如果在3个状态之内,更新操作 + int tag = 1 << StatusEnum.TASK_CANNEL.getBit() + | 1 << StatusEnum.TASK_CREATE.getBit() + | 1 << StatusEnum.TASK_START_ERROR.getBit() + | 1 << StatusEnum.TASK_START_END_P.getBit(); + if ((tag &~ 1 << status) != tag){ + this.update(new UpdateWrapper() + .set("is_delete",true) + .eq("task_id", task_id)); + }else { + throw new BadRequestException("任务已经下发不允许直接删除"); + } + break; + default: break; + } + } } diff --git a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml index 513e292f..9cb17921 100644 --- a/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml +++ b/mes/hd/nladmin-system/src/main/resources/config/application-dev3.yml @@ -9,26 +9,24 @@ spring: client: reactive: #endpoints: 172.31.185.110:8200,172.31.154.9:8200 #内网 - # endpoints: 47.96.133.1785:8200 #外网 - endpoints: http://47.96.133.1785:8200 #外网 + # endpoints: 192.168.46.225:9200 #外网 + endpoints: http://192.168.46.225:9200 #外网 elasticsearch: rest: #uris: 172.31.185.110:8200,172.31.154.9:8200 #内网 - # uris: 47.96.133.1785:8200 #外网 - uris: http://47.96.133.1785:8200 #外网 - username: elastic - password: 123456 + # uris: 192.168.46.225:9200 #外网 + uris: http://192.168.46.225:9200 #外网 + # username: elastic + # password: 123456 datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy - url: jdbc:log4jdbc:mysql://${DB_HOST:localhost}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - #url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false - username: ${DB_USER:shenhua} - #password: ${DB_PWD:P@ssw0rd} - #password: ${DB_PWD:root} - #password: ${DB_PWD:Root.123456} - password: ${DB_PWD:123456789} + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:hl_one_mes}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true&useSSL=false + username: ${DB_USER:root} + password: ${DB_PWD:942464Yy} + # 初始连接数 initial-size: 5 # 最小连接数 @@ -173,6 +171,7 @@ sa-token: cookie: # 配置 Cookie 作用域:根据二级域名实现sso登入如lms.sso.com;acs.sso.com domain: + is-read-cookie: false #jetcache: # defaultCacheType: LOCAL diff --git a/mes/qd/src/views/wms/scheduler_manage/task/index.vue b/mes/qd/src/views/wms/scheduler_manage/task/index.vue index 77547392..90d8b9b0 100644 --- a/mes/qd/src/views/wms/scheduler_manage/task/index.vue +++ b/mes/qd/src/views/wms/scheduler_manage/task/index.vue @@ -206,6 +206,11 @@ icon="el-icon-error" @click="doOperate(scope.row, 'b')" >取消 + 删除 @@ -382,6 +387,9 @@ export default { case 'd':// 详情 method_name = 'view' break + case 'delete':// 详情 + method_name = 'delete' + break } if (method_name === 'view') { this.view(row) From 09057be3f242828bf3c240105041d3385958229b Mon Sep 17 00:00:00 2001 From: zhangzhiqiang Date: Sat, 27 May 2023 16:27:02 +0800 Subject: [PATCH 2/2] =?UTF-8?q?add:=E4=BF=AE=E6=94=B9=E8=B0=83=E5=BA=A6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../semiproduct/semiProductIn/AddDialog.vue | 249 ++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 mes/qd/src/views/wms/storage_manage/semiproduct/semiProductIn/AddDialog.vue diff --git a/mes/qd/src/views/wms/storage_manage/semiproduct/semiProductIn/AddDialog.vue b/mes/qd/src/views/wms/storage_manage/semiproduct/semiProductIn/AddDialog.vue new file mode 100644 index 00000000..b19ba97e --- /dev/null +++ b/mes/qd/src/views/wms/storage_manage/semiproduct/semiProductIn/AddDialog.vue @@ -0,0 +1,249 @@ + + + + +