From ad638ee127065075c21109741c5e84a0332d1e25 Mon Sep 17 00:00:00 2001 From: "ZHOUZ\\Noble'lift" <1014987728@qq.com> Date: Wed, 13 Dec 2023 09:00:32 +0800 Subject: [PATCH] =?UTF-8?q?dev:=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= =?UTF-8?q?=EF=BC=8C=E8=AF=A5=E5=88=87=E8=AE=A1=E5=88=92=E5=92=8C=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/org/nl/AppRun.java | 157 ------- .../java/org/nl/config/WebSocketConfig.java | 12 +- .../modules/system/rest/GridController.java | 68 --- .../system/rest/GridFieldController.java | 87 ---- .../system/service/GridFieldService.java | 68 --- .../modules/system/service/GridService.java | 53 --- .../modules/system/service/dto/GridDto.java | 61 --- .../system/service/dto/GridFieldDto.java | 96 ---- .../system/service/impl/DataServiceImpl.java | 94 ---- .../service/impl/GridFieldServiceImpl.java | 147 ------ .../system/service/impl/GridServiceImpl.java | 116 ----- .../modules/system/service/wql/SYS_MENU.wql | 71 --- .../modules/system/service/wql/SYS_ROLE.wql | 0 .../modules/system/service/wql/SYS_USER.wql | 0 .../org/nl/modules/system/wql/GRIDFIELD.wql | 56 --- .../org/nl/modules/system/wql/sys_dept.wql | 56 --- .../src/main/java/org/nl/ss.wql | 54 --- .../notice/SysNoticeController.java | 107 +++++ .../service/notice/ISysNoticeService.java | 84 ++++ .../nl/system/service/notice/NoticeEnum.java | 37 ++ .../system/service/notice/NoticeTypeEnum.java | 29 ++ .../system/service/notice/dao/SysNotice.java | 53 +++ .../notice/dao/mapper/SysNoticeMapper.java | 12 + .../notice/dao/mapper/SysNoticeMapper.xml | 5 + .../service/notice/dto/SysNoticeDto.java | 37 ++ .../service/notice/dto/SysNoticeQuery.java | 12 + .../notice/impl/SysNoticeServiceImpl.java | 190 ++++++++ .../master/service/dto/CustomerbaseDto.java | 5 + .../org/nl/wms/basedata/master/wql/mdcs.xls | Bin 181248 -> 182272 bytes .../java/org/nl/wms/basedata/st/wql/QLK01.wql | 226 --------- .../nl/wms/basedata/st/wql/QST_STOR_ATTR.wql | 12 +- .../crm/service/impl/CrmToLmsServiceImpl.java | 3 + .../mes/service/impl/MesToLmsServiceImpl.java | 188 ++++++-- .../sap/service/impl/SapToLmsServiceImpl.java | 105 ++++- .../org/nl/wms/sch/tasks/CallEmpReelTask.java | 31 +- .../org/nl/wms/sch/tasks/CoolCutTask.java | 14 +- .../org/nl/wms/sch/tasks/CutConveyorTask.java | 5 + .../org/nl/wms/sch/tasks/CutTrussTask.java | 36 +- .../nl/wms/sch/tasks/EmptyVehicleTask.java | 9 +- .../org/nl/wms/sch/tasks/InCoolIvtTask.java | 11 +- .../java/org/nl/wms/sch/tasks/InHotTask.java | 7 - .../java/org/nl/wms/sch/tasks/InTask.java | 19 +- .../java/org/nl/wms/sch/tasks/OutHotTask.java | 11 +- .../java/org/nl/wms/sch/tasks/OutTask.java | 48 +- .../tasks/fq/FqCallMaterialSendEmptyTask.java | 7 - .../tasks/fq/FqFromLqCallMaterialTask.java | 7 - .../wms/sch/tasks/fq/FqToLqSendEmptyTask.java | 7 - .../sch/tasks/fq/HxToLqSendMaterialTask.java | 7 - .../sch/tasks/fq/LqToHxSendMaterialTask.java | 7 - .../tasks/sb/SbCallEmptySendMaterialTask.java | 45 -- .../nl/wms/sch/tasks/sb/SbCallEmptyTask.java | 63 --- .../nl/wms/sch/tasks/sb/SbSendFullTask.java | 45 -- .../st/instor/rest/RecutPlanController.java | 78 ++++ .../st/instor/service/RecutPlanService.java | 49 ++ .../service/impl/RecutPlanServiceImpl.java | 309 ++++++++++++ .../nl/wms/st/instor/task/EmpMoveTask.java | 8 +- .../st/instor/task/HandMoveStorAcsTask.java | 4 +- .../wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql | 123 +++++ .../impl/InAndOutRetrunServiceImpl.java | 3 +- .../service/impl/InBillQueryServiceImpl.java | 4 +- .../nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql | 4 + .../nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql | 6 +- .../src/layout/components/Navbar.vue | 61 ++- .../src/layout/components/Sidebar/Logo.vue | 2 +- .../src/views/system/notice/NoticeIcon.vue | 131 ++++++ .../views/system/notice/NoticeIconReader.vue | 122 +++++ .../src/views/system/notice/VueBaseCode.js | 15 + .../src/views/system/notice/index.vue | 270 +++++++++++ .../src/views/system/notice/sysNotice.js | 94 ++++ .../wms/basedata/master/customer/index.vue | 11 +- .../wms/st/inStor/reCutPlan/AddDialog.vue | 439 ++++++++++++++++++ .../views/wms/st/inStor/reCutPlan/AddDtl.vue | 230 +++++++++ .../wms/st/inStor/reCutPlan/CheckDialog.vue | 286 ++++++++++++ .../views/wms/st/inStor/reCutPlan/index.vue | 292 ++++++++++++ .../wms/st/inStor/reCutPlan/recutplan.js | 56 +++ .../src/views/wms/stat/inbillquery/index2.vue | 1 + .../views/wms/stat/outbillquery/index2.vue | 1 + 77 files changed, 3440 insertions(+), 1839 deletions(-) delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridController.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridFieldController.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridFieldService.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridService.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridDto.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridFieldDto.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DataServiceImpl.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GridFieldServiceImpl.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GridServiceImpl.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_MENU.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/wql/GRIDFIELD.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys_dept.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/ss.wql create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/controller/notice/SysNoticeController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/ISysNoticeService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeEnum.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeTypeEnum.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/SysNotice.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.xml create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeDto.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeQuery.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqCallMaterialSendEmptyTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqFromLqCallMaterialTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqToLqSendEmptyTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/HxToLqSendMaterialTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/LqToHxSendMaterialTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptySendMaterialTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptyTask.java delete mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbSendFullTask.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/RecutPlanController.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/RecutPlanService.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql create mode 100644 lms/nladmin-ui/src/views/system/notice/NoticeIcon.vue create mode 100644 lms/nladmin-ui/src/views/system/notice/NoticeIconReader.vue create mode 100644 lms/nladmin-ui/src/views/system/notice/VueBaseCode.js create mode 100644 lms/nladmin-ui/src/views/system/notice/index.vue create mode 100644 lms/nladmin-ui/src/views/system/notice/sysNotice.js create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/AddDialog.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/AddDtl.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/CheckDialog.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/index.vue create mode 100644 lms/nladmin-ui/src/views/wms/st/inStor/reCutPlan/recutplan.js diff --git a/lms/nladmin-system/src/main/java/org/nl/AppRun.java b/lms/nladmin-system/src/main/java/org/nl/AppRun.java index 25000752d..1be290264 100644 --- a/lms/nladmin-system/src/main/java/org/nl/AppRun.java +++ b/lms/nladmin-system/src/main/java/org/nl/AppRun.java @@ -76,163 +76,6 @@ public class AppRun { public String index() { return "Backend service started successfully"; } - @GetMapping("/w") // 立库监控初始化 - @SaIgnore - public String index2() { - // 采用循环+判断进行铺设图标, 可以通过舞台编辑协助完成 - WQLObject stageTab = WQLObject.getWQLObject("stage"); - WQLObject attrTab = WQLObject.getWQLObject("st_ivt_structattr"); - JSONObject save = new JSONObject(); - JSONArray nodes = new JSONArray(); - JSONArray edges = new JSONArray(); - int x = 50; // 首个位置 - int y = 50; - int step = 5; - String type = "html-node"; - int nodeSizeW = 50; - int nodeSizeH = 50; - for (int i = 2; i < 23; i=i+2) { // 第几块,每两块为一块 - // 获取列数col_num - System.out.println( (i>=10?"3":"30") + i); - JSONObject jsonObject = WQL.getWO("ss").addParamMap(MapOf.of("flag", "1" - , "block_num", (i>=10?"3":"30") + i)).process().uniqueResult(0); - int num = Integer.parseInt(jsonObject.getString("num")); - for (int j = 1; j <= num; j++) {// 层数 - // 获取2,1....块的数据 - JSONArray array = attrTab.query("block_num IN ('" + (i>=10?"3":"30") + i + "','" + - ((i-1)>=10?"3":"30") + (i - 1) + "') AND " + - "layer_num = 3 AND col_num = " + j, "block_num DESC, row_num DESC").getResultJSONArray(0); - for (int k = 0; k < array.size(); k++) { // 1,2...块的每列数据 - JSONObject object = array.getJSONObject(k); - if (k-1 >= 0) { // 如果块与块不同,空一个距离 - JSONObject object2 = array.getJSONObject(k-1); - if (!object2.getString("block_num").equals(object.getString("block_num")) && object2.getString("is_delete").equals(object.getString("is_delete"))) { - JSONObject node2 = new JSONObject(); - node2.put("id", IdUtil.getSnowflake(1,1).nextIdStr()); - node2.put("type", type); - node2.put("x", x); - node2.put("y", y); - JSONObject properties2 = new JSONObject(); - JSONObject nodeSize2 = new JSONObject(); - nodeSize2.put("width", nodeSizeW); - nodeSize2.put("height", nodeSizeH); - properties2.put("nodeSize", nodeSize2); - properties2.put("flag", "1"); - properties2.put("transform", 90); - node2.put("properties", properties2); - node2.put("zIndex", "2023"); - x = x + step + nodeSizeW; - nodes.add(node2); - } - } - - if (object.getString("is_delete").equals("1")) { - x = x + step + nodeSizeW; - continue; - } - - // 设置节点,只需要struct_id, 自定义参数数据都加载properties对象里面 - JSONObject node = new JSONObject(); - node.put("id", IdUtil.getSnowflake(1,1).nextIdStr()); - node.put("type", type); - node.put("x", x); - node.put("y", y); - JSONObject properties = new JSONObject(); - JSONObject nodeSize = new JSONObject(); - nodeSize.put("width", nodeSizeW); - nodeSize.put("height", nodeSizeH); - properties.put("nodeSize", nodeSize); - properties.put("struct_id", object.getString("struct_id")); // 灵活配置,其他为固定参数 - node.put("properties", properties); - node.put("zIndex", "2023"); - x = x + step + nodeSizeW; - nodes.add(node); - - } - // 下一列 - x = 50; - y = y + step + nodeSizeH; - } - // 下一个块 - x = 50; - for (int j = 0; j < 16; j++) { // 铺设一行道路 - JSONObject node2 = new JSONObject(); - node2.put("id", IdUtil.getSnowflake(1,1).nextIdStr()); - node2.put("type", type); - node2.put("x", x); - node2.put("y", y); - JSONObject properties2 = new JSONObject(); - JSONObject nodeSize2 = new JSONObject(); - nodeSize2.put("width", nodeSizeW); - nodeSize2.put("height", nodeSizeH); - properties2.put("nodeSize", nodeSize2); - properties2.put("flag", "1"); - node2.put("properties", properties2); - node2.put("zIndex", "2023"); - x = x + step + nodeSizeW; - nodes.add(node2); - } - x = 50; - y = y + step + nodeSizeH; - } - save.put("nodes", nodes); - save.put("edges", edges); - JSONObject jsonObject = stageTab.query("stage_code = 'AS_3'").uniqueResult(0); - jsonObject.put("stage_data", save); - stageTab.update(jsonObject); - return "Backend service started successfully"; - } - - @GetMapping("/f") // 发货区监控初始化 - @SaIgnore - public String index3() { - // 采用循环+判断进行铺设图标, 可以通过舞台编辑协助完成 - WQLObject stageTab = WQLObject.getWQLObject("stage"); - WQLObject attrTab = WQLObject.getWQLObject("sch_base_point"); - JSONObject save = new JSONObject(); - JSONArray nodes = new JSONArray(); - JSONArray edges = new JSONArray(); - int x = 50; // 首个位置 - int y = 50; - int step = 5; - String type = "html-node"; - int nodeSizeW = 50; - int nodeSizeH = 50; - for (int i = 1; i <= 4; i++) { - - JSONArray resultJSONArray = attrTab.query("col_num = '" + i + "' and point_type = '9' and layer_num = '2' order by row_num ASC").getResultJSONArray(0); - - for (int j = 0; j < resultJSONArray.size(); j++) { - JSONObject json = resultJSONArray.getJSONObject(j); - - JSONObject node = new JSONObject(); - node.put("id", IdUtil.getSnowflake(1,1).nextIdStr()); - node.put("type", type); - node.put("x", x); - node.put("y", y); - JSONObject properties = new JSONObject(); - JSONObject nodeSize = new JSONObject(); - nodeSize.put("width", nodeSizeW); - nodeSize.put("height", nodeSizeH); - properties.put("nodeSize", nodeSize); - properties.put("struct_id", json.getString("point_id")); // 灵活配置,其他为固定参数 - node.put("properties", properties); - node.put("zIndex", "2023"); - x = x + step + nodeSizeW; - nodes.add(node); - - } - - x = 50; - y = y + step + nodeSizeH; - } - save.put("nodes", nodes); - save.put("edges", edges); - JSONObject jsonObject = stageTab.query("stage_code = 'FS_2'").uniqueResult(0); - jsonObject.put("stage_data", save); - stageTab.update(jsonObject); - return "Backend service started successfully"; - } } diff --git a/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java b/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java index 78684351c..06c48af87 100644 --- a/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java +++ b/lms/nladmin-system/src/main/java/org/nl/config/WebSocketConfig.java @@ -1,3 +1,4 @@ +package org.nl.config; /* * Copyright 2019-2020 Zheng Jie * @@ -21,10 +22,11 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; */ -/** - * @author ZhangHouYing - * @date 2019-08-24 15:44 - *//* + + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.socket.server.standard.ServerEndpointExporter; @Configuration public class WebSocketConfig { @@ -34,4 +36,4 @@ public class WebSocketConfig { return new ServerEndpointExporter(); } } -*/ + diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridController.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridController.java deleted file mode 100644 index 121bcc8d3..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridController.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.nl.modules.system.rest; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.modules.logging.annotation.Log; -import org.nl.modules.system.service.GridService; -import org.nl.modules.system.service.dto.GridDto; -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 - * @Description: 系统表格管理 - * @Date: 2022-08-01 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "系统表格管理") -@RequestMapping("/api/grid") -@Slf4j -public class GridController { - private final GridService gridService; - - @GetMapping - @Log("查询系统表格") - @ApiOperation("查询系统表格") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ - return new ResponseEntity<>(gridService.queryAll(whereJson,page),HttpStatus.OK); - } - - @PostMapping - @Log("新增系统表格") - @ApiOperation("新增系统表格") - public ResponseEntity create(@Validated @RequestBody GridDto dto){ - gridService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改系统表格") - @ApiOperation("修改系统表格") - public ResponseEntity update(@Validated @RequestBody GridDto dto){ - gridService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除系统表格") - @ApiOperation("删除系统表格") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - gridService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @GetMapping("/selectList") - @Log("下拉框获取表格数据") - @ApiOperation("下拉框获取表格数据") - public ResponseEntity getGridList(){ - return new ResponseEntity<>(gridService.getGridList(),HttpStatus.OK); - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridFieldController.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridFieldController.java deleted file mode 100644 index bc6bb259e..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/rest/GridFieldController.java +++ /dev/null @@ -1,87 +0,0 @@ -package org.nl.modules.system.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.modules.logging.annotation.Log; -import org.nl.modules.system.service.GridFieldService; -import org.nl.modules.system.service.dto.GridFieldDto; -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 - * @Description: 系统表格字段管理 - * @Date: 2022-08-01 - */ -@RestController -@RequiredArgsConstructor -@Api(tags = "系统表格字段管理") -@RequestMapping("/api/gridField") -@Slf4j -public class GridFieldController { - private final GridFieldService gridFieldService; - - @GetMapping - @Log("查询系统表格") - @ApiOperation("查询系统表格") - public ResponseEntity query(@RequestParam Map whereJson, Pageable page){ - return new ResponseEntity<>(gridFieldService.queryAll(whereJson,page),HttpStatus.OK); - } - - @PostMapping - @Log("单个新增表格字段") - @ApiOperation("单个新增表格字段") - public ResponseEntity create(@Validated @RequestBody GridFieldDto dto){ - gridFieldService.create(dto); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PutMapping - @Log("修改表格字段") - @ApiOperation("修改表格字段") - public ResponseEntity update(@Validated @RequestBody GridFieldDto dto){ - gridFieldService.update(dto); - return new ResponseEntity<>(HttpStatus.NO_CONTENT); - } - - @Log("删除表格字段") - @ApiOperation("删除表格字段") - @DeleteMapping - public ResponseEntity delete(@RequestBody String[] ids) { - gridFieldService.deleteAll(ids); - return new ResponseEntity<>(HttpStatus.OK); - } - - @PostMapping("/batchAdd") - @Log("批量新增表格字段") - @ApiOperation("批量新增表格字段") - public ResponseEntity batchAdd(@RequestBody JSONObject json){ -// log.info("json{}",json); - gridFieldService.batchAdd(json); - return new ResponseEntity<>(HttpStatus.CREATED); - } - - @PostMapping("/getGridFields") - @Log("根据gridId获取所有字段") - @ApiOperation("根据gridId获取所有字段") - public ResponseEntity getGridFieldsById(@RequestBody String id){ - log.info("dto:{}",id); - return new ResponseEntity<>(gridFieldService.getGridFieldsById(id),HttpStatus.CREATED); - } - - @PostMapping("/getGridFieldsByCode") - @Log("根据gridCode获取所有字段") - @ApiOperation("根据gridCode获取所有字段") - public ResponseEntity getGridFieldsByCode(@RequestBody String grid_code){ - log.info("dto:{}",grid_code); - return new ResponseEntity<>(gridFieldService.getGridFieldsByCode(grid_code),HttpStatus.CREATED); - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridFieldService.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridFieldService.java deleted file mode 100644 index 89773173b..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridFieldService.java +++ /dev/null @@ -1,68 +0,0 @@ -package org.nl.modules.system.service; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import org.nl.modules.system.service.dto.GridFieldDto; -import org.springframework.data.domain.Pageable; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: 表格字段服务 - * @Date: 2022-08-01 - */ -public interface GridFieldService { - /** - * 查询数据分页 - * @param whereJson 条件 - * @param page 分页参数 - * @return Map - */ - Map queryAll(Map whereJson, Pageable page); - - /** - * 创建 - * @param dto - */ - void create(GridFieldDto dto); - - /** - * 根据ID查询 - * @param id ID - * @return Param - */ - GridFieldDto findById(String id); - - /** - * 编辑 - * @param dto - */ - void update(GridFieldDto dto); - - /** - * 批量删除 - * @param ids - */ - void deleteAll(String[] ids); - - /** - * 批量添加数据 - * @param json - */ - void batchAdd(JSONObject json); - - /** - * 根据grid_id获取所有字段信息 - * @param id - * @return - */ - JSONArray getGridFieldsById(String id); - - /** - * 根据grid_code获取所有字段信息 - * @param grid_code - * @return - */ - JSONArray getGridFieldsByCode(String grid_code); -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridService.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridService.java deleted file mode 100644 index 312457bd2..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/GridService.java +++ /dev/null @@ -1,53 +0,0 @@ -package org.nl.modules.system.service; - -import com.alibaba.fastjson.JSONArray; -import org.nl.modules.system.service.dto.GridDto; -import org.springframework.data.domain.Pageable; - -import java.util.Map; - -/** - * @Author: lyd - * @Description: 表格服务接口 - * @Date: 2022-08-01 - */ -public interface GridService { - /** - * 查询数据分页 - * @param whereJson 条件 - * @param page 分页参数 - * @return Map - */ - Map queryAll(Map whereJson, Pageable page); - - /** - * 创建 - * @param dto - */ - void create(GridDto dto); - - /** - * 根据ID查询 - * @param id ID - * @return Param - */ - GridDto findById(String id); - - /** - * 编辑 - * @param dto - */ - void update(GridDto dto); - - /** - * 批量删除 - * @param ids - */ - void deleteAll(String[] ids); - - /** - * 下拉选择表格 - * @return - */ - JSONArray getGridList(); -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridDto.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridDto.java deleted file mode 100644 index 43e1e7631..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridDto.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.nl.modules.system.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 系统表格dto - * @Date: 2022-08-01 - */ -@Data -public class GridDto { - /** - * 标识id - */ - private String id; - - /** - * 编码 - */ - private String code; - - /** - * 名称 - */ - private String name; - - /** - * 备注 - */ - private String remark; - - /** - * 创建人id - */ - private String create_id; - - /** - * 创建人 - */ - private String create_name; - - /** - * 创建时间 - */ - private String create_time; - - /** - * 更新人id - */ - private String update_optid; - - /** - * 更新人 - */ - private String update_optname; - - /** - * 更新时间 - */ - private String update_time; -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridFieldDto.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridFieldDto.java deleted file mode 100644 index 0ac6b6571..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/dto/GridFieldDto.java +++ /dev/null @@ -1,96 +0,0 @@ -package org.nl.modules.system.service.dto; - -import lombok.Data; - -/** - * @Author: lyd - * @Description: 表格字段dto - * @Date: 2022-08-01 - */ -@Data -public class GridFieldDto { - /** - * 标识id - */ - private String id; - - /** - * 编码 - */ - private String code; - - /** - * 名称 - */ - private String name; - - /** - * 宽度 - */ - private Integer width; - - /** - * 对齐 - */ - private String align; - - /** - * 格式 - */ - private String format; - - /** - * 备注 - */ - private String remark; - - /** - * 排序 - */ - private Integer sort_num; - - /** - * 是否隐藏 - */ - private String is_hidden; - - /** - * 创建人id - */ - private String create_id; - - /** - * 创建人 - */ - private String create_name; - - /** - * 创建时间 - */ - private String create_time; - - /** - * 更新人id - */ - private String update_optid; - - /** - * 更新人 - */ - private String update_optname; - - /** - * 更新时间 - */ - private String update_time; - - /** - * 表格id - */ - private String grid_id; - - /** - * 表格名称 - */ - private String grid_name; -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DataServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DataServiceImpl.java deleted file mode 100644 index ce575158a..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DataServiceImpl.java +++ /dev/null @@ -1,94 +0,0 @@ -///* -// * Copyright 2019-2020 Zheng Jie -// * -// * Licensed under the Apache License, Version 2.0 (the "License"); -// * you may not use this file except in compliance with the License. -// * You may obtain a copy of the License at -// * -// * http://www.apache.org/licenses/LICENSE-2.0 -// * -// * Unless required by applicable law or agreed to in writing, software -// * distributed under the License is distributed on an "AS IS" BASIS, -// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// * See the License for the specific language governing permissions and -// * limitations under the License. -// */ -//package org.nl.modules.system.service.impl; -// -//import cn.hutool.core.util.ObjectUtil; -//import lombok.RequiredArgsConstructor; -//import org.nl.modules.common.utils.enums.DataScopeEnum; -//import org.nl.modules.system.domain.Dept; -//import org.nl.modules.system.service.DataService; -//import org.nl.system.service.dept.ISysDeptService; -//import org.nl.system.service.role.ISysRoleService; -//import org.nl.system.service.user.dto.UserDto; -//import org.springframework.cache.annotation.CacheConfig; -//import org.springframework.cache.annotation.Cacheable; -//import org.springframework.stereotype.Service; -// -//import java.util.*; -// -///** -// * @author Zheng Jie -// * @website https://el-admin.vip -// * @description 数据权限服务实现 -// * @date 2020-05-07 -// **/ -//@Service -//@RequiredArgsConstructor -//@CacheConfig(cacheNames = "data") -//public class DataServiceImpl implements DataService { -// -// private final ISysRoleService roleService; -// private final ISysDeptService deptService; -// -// /** -// * 用户角色改变时需清理缓存 -// * @param user / -// * @return / -// */ -// @Override -// @Cacheable(key = "'user:' + #p0.id") -// public List getDeptIds(UserDto user) { -// // 用于存储部门id -// Set deptIds = new HashSet<>(); -// // 查询用户角色 -// List roleSet = roleService.findByUsersId(user.getId()); -// // 获取对应的部门ID -// for (RoleSmallDto role : roleSet) { -// DataScopeEnum dataScopeEnum = DataScopeEnum.find(role.getDataScope()); -// switch (Objects.requireNonNull(dataScopeEnum)) { -// case THIS_LEVEL: -// if (ObjectUtil.isNotEmpty(user.getDept())){ -// deptIds.add(user.getDept().getId()); -// } -// break; -// case CUSTOMIZE: -// deptIds.addAll(getCustomize(deptIds, role)); -// break; -// default: -// return new ArrayList<>(deptIds); -// } -// } -// return new ArrayList<>(deptIds); -// } -// -// /** -// * 获取自定义的数据权限 -// * @param deptIds 部门ID -// * @param role 角色 -// * @return 数据权限ID -// */ -// public Set getCustomize(Set deptIds, RoleSmallDto role){ -// Set depts = deptService.findByRoleId(role.getId()); -// for (Dept dept : depts) { -// deptIds.add(dept.getId()); -// List deptChildren = deptService.findByPid(dept.getId()); -// if (deptChildren != null && deptChildren.size() != 0) { -// deptIds.addAll(deptService.getDeptChildren(deptChildren)); -// } -// } -// return deptIds; -// } -//} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GridFieldServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GridFieldServiceImpl.java deleted file mode 100644 index edb525d66..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/impl/GridFieldServiceImpl.java +++ /dev/null @@ -1,147 +0,0 @@ -package org.nl.modules.system.service.impl; - -import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.exception.BadRequestException; -import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.service.GridFieldService; -import org.nl.modules.system.service.dto.GridFieldDto; -import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.WqlUtil; -import org.springframework.data.domain.Pageable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.HashMap; -import java.util.Map; - -/** - * @Author: lyd - * @Description: 表格字段实现类 - * @Date: 2022-08-01 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class GridFieldServiceImpl implements GridFieldService { - - @Override - public Map queryAll(Map whereJson, Pageable page) { - HashMap map = new HashMap<>(); - String grid_name = (String) whereJson.get("name"); - map.put("flag","1"); - if (StrUtil.isNotEmpty(grid_name)){ - map.put("grid_name","%" + grid_name + "%"); - } - JSONObject json = WQL.getWO("GRIDFIELD").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "sys_grid_field.sort_num"); - return json; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(GridFieldDto dto) { - String currentUsername = SecurityUtils.getCurrentUsername(); - String uid = SecurityUtils.getCurrentUserId(); - String now = DateUtil.now(); - - dto.setId(IdUtil.simpleUUID()); - dto.setCreate_id(uid.toString()); - dto.setUpdate_optid(uid.toString()); - dto.setCreate_name(currentUsername); - dto.setUpdate_optname(currentUsername); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("sys_grid_field"); - JSONObject json = JSONObject.parseObject( JSONObject.toJSONString(dto)); - wo.insert(json); - } - - @Override - public GridFieldDto findById(String id) { - WQLObject wo = WQLObject.getWQLObject("sys_grid_field"); - JSONObject json = wo.query("id ='" + id + "' AND is_delete = '0'").uniqueResult(0); - final GridFieldDto obj = json.toJavaObject(GridFieldDto.class);; - return obj; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(GridFieldDto dto) { - GridFieldDto entity = this.findById(dto.getId()); - if (entity == null) { - throw new BadRequestException("被删除或无权限,操作失败!"); - } - - String currentUsername = SecurityUtils.getCurrentUsername(); - String now = DateUtil.now(); - dto.setUpdate_time(now); - dto.setUpdate_optid(SecurityUtils.getCurrentUserId().toString()); - dto.setUpdate_optname(currentUsername); - - WQLObject wo = WQLObject.getWQLObject("sys_grid_field"); - JSONObject json = JSONObject.parseObject( JSONObject.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - WQLObject wo = WQLObject.getWQLObject("sys_grid_field"); - for (String id : ids) { -// GridFieldDto gridFieldDto = this.findById(id); -// gridFieldDto.setIs_delete("1"); -// JSONObject json = JSONObject.parseObject( JSONObject.toJSONString(gridFieldDto)); -// wo.update(json); - wo.delete("grid_id = '" + id + "'"); - } - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void batchAdd(JSONObject json) { - String grid_id = json.getString("grid_id"); - JSONArray fieldDatas = json.getJSONArray("gridFieldData"); - WQLObject wo = WQLObject.getWQLObject("sys_grid_field"); - String currentUsername = SecurityUtils.getCurrentUsername(); - String currentUserId = SecurityUtils.getCurrentUserId(); - // 先删除原先所有的数据 - wo.delete("grid_id = '" + grid_id + "'"); - // 然后添加 - for (int i=0; i queryAll(Map whereJson, Pageable page) { - WQLObject wo = WQLObject.getWQLObject("sys_grid"); - String where = "1=1"; - if (whereJson.get("name") != null) { - where = "name like ('%" + whereJson.get("name") + "%')"; - } - ResultBean rb = wo.pagequery(WqlUtil.getHttpContext(page), where, "update_time desc"); - final JSONObject json = rb.pageResult(); - return json; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void create(GridDto dto) { - String currentUsername = SecurityUtils.getCurrentUsername(); - String uid = SecurityUtils.getCurrentUserId(); - String now = DateUtil.now(); - - dto.setId(IdUtil.simpleUUID()); - dto.setCreate_id(uid.toString()); - dto.setUpdate_optid(uid.toString()); - dto.setCreate_name(currentUsername); - dto.setUpdate_optname(currentUsername); - dto.setUpdate_time(now); - dto.setCreate_time(now); - - WQLObject wo = WQLObject.getWQLObject("sys_grid"); - JSONObject json = JSONObject.parseObject( JSONObject.toJSONString(dto)); - wo.insert(json); - } - - @Override - public GridDto findById(String id) { - WQLObject wo = WQLObject.getWQLObject("sys_grid"); - JSONObject json = wo.query("id = '" + id + "'").uniqueResult(0); - final GridDto obj = json.toJavaObject(GridDto.class);; - return obj; - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void update(GridDto dto) { - GridDto entity = this.findById(dto.getId()); - if (entity == null) { - throw new BadRequestException("被删除或无权限,操作失败!"); - } - - String currentUsername = SecurityUtils.getCurrentUsername(); - String now = DateUtil.now(); - dto.setUpdate_optid(SecurityUtils.getCurrentUserId().toString()); - dto.setUpdate_time(now); - dto.setUpdate_optname(currentUsername); - - WQLObject wo = WQLObject.getWQLObject("sys_grid"); - JSONObject json = JSONObject.parseObject( JSONObject.toJSONString(dto)); - wo.update(json); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public void deleteAll(String[] ids) { - WQLObject wo = WQLObject.getWQLObject("sys_grid"); - WQLObject wqlObject = WQLObject.getWQLObject("sys_grid_field"); - // 删除明细 - for (String grid_id : ids) { - wqlObject.delete("grid_id = '" + grid_id + "'"); - wo.delete("id = '" + grid_id + "'"); - } - } - - @Override - public JSONArray getGridList() { - JSONArray arr = WQLObject.getWQLObject("sys_grid").query().getResultJSONArray(0); - JSONArray result = new JSONArray(); - for (int i = 0; i < arr.size(); i++) { - JSONObject obj = arr.getJSONObject(i); - JSONObject json = new JSONObject(); - json.put("grid_id", obj.getString("id")); - json.put("grid_code", obj.getString("code")); - json.put("grid_name", obj.getString("name")); - result.add(json); - } - return result; - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_MENU.wql b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_MENU.wql deleted file mode 100644 index 3c2758ebd..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_MENU.wql +++ /dev/null @@ -1,71 +0,0 @@ -[交易说明] - 交易名: 获取用户权限 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.user_id TYPEAS s_string - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - IF 输入.flag = "1" - QUERY - SELECT DISTINCT - permission - FROM - sys_menu - WHERE - menu_id IN - ( - SELECT - menu_id - FROM - sys_roles_menus - WHERE - role_id IN - ( - SELECT - role_id - FROM - sys_users_roles - WHERE - 1=1 - OPTION 输入.user_id <> "" - user_id = 输入.user_id - ENDOPTION - ) - ) - AND permission IS NOT NULL - AND permission != '' - ENDSELECT - ENDQUERY - ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_ROLE.wql deleted file mode 100644 index e69de29bb..000000000 diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql b/lms/nladmin-system/src/main/java/org/nl/modules/system/service/wql/SYS_USER.wql deleted file mode 100644 index e69de29bb..000000000 diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/GRIDFIELD.wql b/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/GRIDFIELD.wql deleted file mode 100644 index 3de1a3f79..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/GRIDFIELD.wql +++ /dev/null @@ -1,56 +0,0 @@ -[交易说明] - 交易名: 表格数据 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.grid_name TYPEAS s_string - - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - IF 输入.flag = "1" - PAGEQUERY - SELECT - sys_grid_field.*, sys_grid.name as grid_name - FROM - sys_grid_field - LEFT JOIN sys_grid ON sys_grid_field.grid_id = sys_grid.id - WHERE - sys_grid_field.is_delete = '0' AND sys_grid.is_delete = '0' - OPTION 输入.grid_name <> "" - sys_grid.name LIKE 输入.grid_name - ENDOPTION - ENDSELECT - ENDPAGEQUERY - ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys_dept.wql b/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys_dept.wql deleted file mode 100644 index 06d93886c..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/modules/system/wql/sys_dept.wql +++ /dev/null @@ -1,56 +0,0 @@ -[交易说明] - 交易名: 部门数据 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.grid_name TYPEAS s_string - - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - IF 输入.flag = "1" - PAGEQUERY - SELECT - sys_grid_field.*, sys_grid.name as grid_name - FROM - sys_grid_field - LEFT JOIN sys_grid ON sys_grid_field.grid_id = sys_grid.id - WHERE - sys_grid_field.is_delete = '0' AND sys_grid.is_delete = '0' - OPTION 输入.grid_name <> "" - sys_grid.name LIKE 输入.grid_name - ENDOPTION - ENDSELECT - ENDPAGEQUERY - ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/ss.wql b/lms/nladmin-system/src/main/java/org/nl/ss.wql deleted file mode 100644 index 4f9c18679..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/ss.wql +++ /dev/null @@ -1,54 +0,0 @@ -[交易说明] - 交易名: 半成品出库 - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.block_num TYPEAS s_string - - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - IF 输入.flag = "1" - QUERY - SELECT - MAX(col_num) as num - FROM - `st_ivt_structattr` - WHERE - 1=1 - OPTION 输入.block_num <> "" - block_num = 输入.block_num - ENDOPTION - ENDSELECT - ENDQUERY - ENDIF diff --git a/lms/nladmin-system/src/main/java/org/nl/system/controller/notice/SysNoticeController.java b/lms/nladmin-system/src/main/java/org/nl/system/controller/notice/SysNoticeController.java new file mode 100644 index 000000000..0db833113 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/controller/notice/SysNoticeController.java @@ -0,0 +1,107 @@ +package org.nl.system.controller.notice; + +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.TableDataInfo; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.logging.annotation.Log; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.notice.dao.SysNotice; +import org.springframework.beans.factory.annotation.Autowired; +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; +import java.util.Set; +/** +* @author lyd +* @date 2023-05-09 +**/ +@Slf4j +@RestController +@Api(tags = "消息通知管理") +@RequestMapping("/api/notice") +public class SysNoticeController { + + @Autowired + private ISysNoticeService noticeService; + + @GetMapping + @Log("查询消息通知") + @ApiOperation("查询消息通知") + //@SaCheckPermission("@el.check('sysNotice:list')") + public ResponseEntity query(@RequestParam Map whereJson, PageQuery page){ + return new ResponseEntity<>(TableDataInfo.build(noticeService.queryAll(whereJson,page)),HttpStatus.OK); + } + + @PostMapping + @Log("新增消息通知") + @ApiOperation("新增消息通知") + //@SaCheckPermission("@el.check('sysNotice:add')") + public ResponseEntity create(@Validated @RequestBody SysNotice entity){ + noticeService.create(entity); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PutMapping + @Log("修改消息通知") + @ApiOperation("修改消息通知") + //@SaCheckPermission("@el.check('sysNotice:edit')") + public ResponseEntity update(@Validated @RequestBody SysNotice entity){ + noticeService.update(entity); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("删除消息通知") + @ApiOperation("删除消息通知") + //@SaCheckPermission("@el.check('sysNotice:del')") + @DeleteMapping + public ResponseEntity delete(@RequestBody Set ids) { + noticeService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("获取未读的接收消息条数") + @GetMapping("/countByReceiveNotRead") + public ResponseEntity countByReceiveNotRead(){ + return new ResponseEntity<>(noticeService.countByReceiveNotRead(), HttpStatus.OK); + } + + @Log("接收消息分页") + @GetMapping("/pageByReceive") + public ResponseEntity pageByReceive(){ + return new ResponseEntity<>(noticeService.pageByReceive(), HttpStatus.OK); + } + + @Log("标为已读") + @PostMapping("/read") + public ResponseEntity read(@RequestBody String id){ + noticeService.read(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("消息详情") + @PostMapping("/findById") + public ResponseEntity findById(@RequestBody String id){ + return new ResponseEntity<>(noticeService.getById(id), HttpStatus.OK); + } + + @Log("修改已处理") + @PostMapping("/deal") + public ResponseEntity deal(@RequestBody String id){ + noticeService.deal(id); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @Log("批量已读") + @PostMapping("/changeRead") + @ApiOperation("批量已读") + public ResponseEntity changeRead(@RequestBody JSONObject jsonObject) { + noticeService.changeRead(jsonObject); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/ISysNoticeService.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/ISysNoticeService.java new file mode 100644 index 000000000..3a0012459 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/ISysNoticeService.java @@ -0,0 +1,84 @@ +package org.nl.system.service.notice; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.notice.dao.SysNotice; + +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** +* @description 服务接口 +* @author lyd +* @date 2023-05-09 +**/ +public interface ISysNoticeService extends IService { + + /** + * 查询数据分页 + * @param whereJson 条件 + * @param pageable 分页参数 + * @return IPage + */ + IPage queryAll(Map whereJson, PageQuery pageable); + + /** + * 创建 + * @param entity / + */ + void create(SysNotice entity); + + /** + * 编辑 + * @param entity / + */ + void update(SysNotice entity); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Set ids); + + /** + * 获取未读的接收消息条数 + * @return + */ + Integer countByReceiveNotRead(); + + /** + * 获取不同类型的前三条信息 + * @return + */ + LinkedList> pageByReceive(); + + /** + * 标记已读 + * @param id + */ + void read(String id); + + /** + * 处理信息 + * @param id + */ + void deal(String id); + + /** + * 批量已读 + * @param jsonObject + */ + void changeRead(JSONObject jsonObject); + + /** + * 写入信息 + * @param msg: 数据信息 + * @param title: 唯一 + * @param type: 类型 + */ + void createNotice(String msg, String title, String type); +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeEnum.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeEnum.java new file mode 100644 index 000000000..b451c5656 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeEnum.java @@ -0,0 +1,37 @@ +package org.nl.system.service.notice; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: + * @Date: 2023/5/9 + */ +@Getter +@AllArgsConstructor +public enum NoticeEnum { + /** + * 未读 + */ + HAVE_READ_OFF("1","未读"), + /** + * 已读 + */ + HAVE_READ_ON("2", "已读"), + /** + * 未处理 + */ + DEAL_STATUS_NO("1", "未处理"), + /** + * 已处理 + */ + DEAL_STATUS_YES("2", "已处理"), + /** + * 无需处理 + */ + DEAL_STATUS_NO_NEED("3", "无需处理"); + + private final String value; + private final String desc; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeTypeEnum.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeTypeEnum.java new file mode 100644 index 000000000..cc519c731 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/NoticeTypeEnum.java @@ -0,0 +1,29 @@ +package org.nl.system.service.notice; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: 通知类型枚举 + * @Date: 2023/6/15 + */ +@Getter +@AllArgsConstructor +public enum NoticeTypeEnum { + /** + * 异常 + */ + EXCEPTION("1", "异常"), + /** + * 警告 + */ + WARN("2", "警告"), + /** + * 通知 + */ + NOTIFICATION("3", "通知"); + + private final String code; + private final String name; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/SysNotice.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/SysNotice.java new file mode 100644 index 000000000..b5a8daa00 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/SysNotice.java @@ -0,0 +1,53 @@ +package org.nl.system.service.notice.dao; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-05-09 +**/ +@Data +@Builder +@AllArgsConstructor +@EqualsAndHashCode(callSuper = false) +@TableName("sys_notice") +public class SysNotice implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId(value = "notice_id", type = IdType.NONE) + @ApiModelProperty(value = "信息标识") + private String notice_id; + + @ApiModelProperty(value = "信息标题") + private String notice_title; + + @ApiModelProperty(value = "信息内容") + private String notice_content; + + @ApiModelProperty(value = "信息类型") + private String notice_type; + + @ApiModelProperty(value = "读取状态") + private String have_read; + + @ApiModelProperty(value = "读取时间") + private String read_time; + + @ApiModelProperty(value = "处理状态") + private String deal_status; + + @ApiModelProperty(value = "创建时间") + private String create_time; + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.java new file mode 100644 index 000000000..384f7cfee --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.java @@ -0,0 +1,12 @@ +package org.nl.system.service.notice.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.notice.dao.SysNotice; + +/** +* @author lyd +* @date 2023-05-09 +**/ +public interface SysNoticeMapper extends BaseMapper { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.xml b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.xml new file mode 100644 index 000000000..15b4868db --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dao/mapper/SysNoticeMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeDto.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeDto.java new file mode 100644 index 000000000..cf427e140 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeDto.java @@ -0,0 +1,37 @@ +package org.nl.system.service.notice.dto; + +import lombok.Data; +import java.io.Serializable; + +/** +* @description / +* @author lyd +* @date 2023-05-09 +**/ +@Data +public class SysNoticeDto implements Serializable { + + /** 信息标识 */ + private String notice_id; + + /** 信息标题 */ + private String notice_title; + + /** 信息内容 */ + private String notice_content; + + /** 信息类型 */ + private String notice_type; + + /** 读取状态 */ + private String have_read; + + /** 读取时间 */ + private String read_time; + + /** 处理状态 */ + private String deal_status; + + /** 创建时间 */ + private String create_time; +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeQuery.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeQuery.java new file mode 100644 index 000000000..16a59bf5a --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/dto/SysNoticeQuery.java @@ -0,0 +1,12 @@ +package org.nl.system.service.notice.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.system.service.notice.dao.SysNotice; + +/** +* @author lyd +* @date 2023-05-09 +**/ +public class SysNoticeQuery extends BaseQuery { + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java new file mode 100644 index 000000000..9d55d0b5c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/system/service/notice/impl/SysNoticeServiceImpl.java @@ -0,0 +1,190 @@ +package org.nl.system.service.notice.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.extern.slf4j.Slf4j; +import org.nl.common.domain.query.PageQuery; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.modules.mnt.websocket.MsgType; +import org.nl.modules.mnt.websocket.SocketMsg; +import org.nl.modules.mnt.websocket.WebSocketServer; +import org.nl.system.service.notice.ISysNoticeService; +import org.nl.system.service.notice.NoticeEnum; +import org.nl.system.service.notice.dao.SysNotice; +import org.nl.system.service.notice.dao.mapper.SysNoticeMapper; +import org.nl.system.service.dict.dao.Dict; +import org.nl.system.service.dict.dao.mapper.SysDictMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.io.IOException; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * @author lyd + * @description 服务实现 + * @date 2023-05-09 + **/ +@Slf4j +@Service +public class SysNoticeServiceImpl extends ServiceImpl implements ISysNoticeService { + + @Autowired + private SysNoticeMapper sysNoticeMapper; + + @Autowired + private SysDictMapper dictMapper; + + @Resource + private WebSocketServer webSocketServer; + + @Override + public IPage queryAll(Map whereJson, PageQuery page) { + String notice_title = ObjectUtil.isNotEmpty(whereJson.get("notice_title")) + ? whereJson.get("notice_title").toString() : null; + String notice_type = ObjectUtil.isNotEmpty(whereJson.get("notice_type")) + ? whereJson.get("notice_type").toString() : null; + String have_read = ObjectUtil.isNotEmpty(whereJson.get("have_read")) + ? whereJson.get("have_read").toString() : null; + String deal_status = ObjectUtil.isNotEmpty(whereJson.get("deal_status")) + ? whereJson.get("deal_status").toString() : null; + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.like(ObjectUtil.isNotEmpty(notice_title), SysNotice::getNotice_title, notice_title) + .eq(ObjectUtil.isNotEmpty(notice_type), SysNotice::getNotice_type, notice_type) + .eq(ObjectUtil.isNotEmpty(have_read), SysNotice::getHave_read, have_read) + .eq(ObjectUtil.isNotEmpty(deal_status), SysNotice::getDeal_status, deal_status) + .orderByAsc(SysNotice::getHave_read) + .orderByDesc(SysNotice::getCreate_time); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + sysNoticeMapper.selectPage(pages, lam); + return pages; + } + + @Override + public void create(SysNotice entity) { + String now = DateUtil.now(); + + entity.setNotice_id(IdUtil.getSnowflake(1, 1).nextIdStr()); + entity.setCreate_time(now); + sysNoticeMapper.insert(entity); + } + + @Override + public void update(SysNotice entity) { + SysNotice dto = sysNoticeMapper.selectById(entity.getNotice_id()); + if (dto == null) { + throw new BadRequestException("被删除或无权限,操作失败!"); + } + sysNoticeMapper.updateById(entity); + } + + @Override + public void deleteAll(Set ids) { + // 真删除 + sysNoticeMapper.deleteBatchIds(ids); + } + + @Override + public Integer countByReceiveNotRead() { + List sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() + .eq(SysNotice::getHave_read, NoticeEnum.HAVE_READ_OFF.getValue())); + return ObjectUtil.isNotEmpty(sysNotices) ? sysNotices.size() : 0; + } + + @Override + public LinkedList> pageByReceive() { + LinkedList> result = new LinkedList<>(); + List dictList = dictMapper.selectList(new LambdaQueryWrapper() + .eq(Dict::getCode, "notice_type") + .orderByAsc(Dict::getDictSort)); + dictList.forEach(dict -> { + List sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() + .eq(SysNotice::getNotice_type, dict.getValue()) + .eq(SysNotice::getHave_read, NoticeEnum.HAVE_READ_OFF.getValue()) + .orderByDesc(SysNotice::getCreate_time) + .last("LIMIT 0,3")); + result.add(sysNotices); + }); + return result; + } + + @Override + public void read(String id) { + SysNotice notice = this.getById(id); + if (ObjectUtil.isEmpty(notice)) { + throw new BadRequestException("该信息不存在!"); + } + notice.setHave_read(NoticeEnum.HAVE_READ_ON.getValue()); + notice.setRead_time(DateUtil.now()); + sysNoticeMapper.updateById(notice); + } + + @Override + public void deal(String id) { + SysNotice notice = this.getById(id); + if (ObjectUtil.isEmpty(notice)) { + throw new BadRequestException("该信息不存在!"); + } + // 设置处理 + notice.setDeal_status(NoticeEnum.DEAL_STATUS_YES.getValue()); + // 判断是否读取 + if (notice.getHave_read().equals(NoticeEnum.HAVE_READ_OFF.getValue())) { + // 标记已读并设置读取时间 + notice.setHave_read(NoticeEnum.HAVE_READ_ON.getValue()); + notice.setRead_time(DateUtil.now()); + } + sysNoticeMapper.updateById(notice); + } + + @Override + public void changeRead(JSONObject jsonObject) { + JSONArray data = jsonObject.getJSONArray("data"); + String haveRead = jsonObject.getString("have_read"); + List sysNotices = JSON.parseArray(data.toJSONString(), SysNotice.class); + sysNotices.forEach(sysNotice -> sysNotice.setHave_read(haveRead)); + this.updateBatchById(sysNotices); + } + + @Override + public void createNotice(String msg, String title, String type) { +// log.info("创建消息通知-信息:{}, 标题:{}, 类型:{}", msg, title, type); + // 获取标题相同的信息 + List sysNotices = sysNoticeMapper.selectList(new LambdaQueryWrapper() + .eq(SysNotice::getNotice_title, title) + .eq(SysNotice::getHave_read, NoticeEnum.HAVE_READ_OFF.getValue())); + SysNotice noticeDto = SysNotice.builder() + .notice_id(IdUtil.getSnowflake(1, 1).nextIdStr()) + .notice_type(type) + .notice_title(title) + .notice_content(msg) + .deal_status(NoticeEnum.DEAL_STATUS_NO.getValue()) + .have_read(NoticeEnum.HAVE_READ_OFF.getValue()) + .create_time(DateUtil.now()) + .build(); + if (ObjectUtil.isNotEmpty(sysNotices)) { + noticeDto.setNotice_id(sysNotices.get(0).getNotice_id()); + } + // 插入/修改 + this.saveOrUpdate(noticeDto); + JSONObject res = new JSONObject(); + res.put("data", "notice_message_update"); + SocketMsg messageInfo = new SocketMsg(res, MsgType.INFO); + try { + WebSocketServer.sendInfo(messageInfo, "messageInfo"); + } catch (IOException e) { + throw new BadRequestException("消息发送失败"); + } + } + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/CustomerbaseDto.java b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/CustomerbaseDto.java index aad1cef10..1ef28d181 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/CustomerbaseDto.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/service/dto/CustomerbaseDto.java @@ -30,6 +30,11 @@ public class CustomerbaseDto implements Serializable { */ private String cust_name; + /** + * 业务员 + */ + private String sales_owner; + /** * 客户简称 */ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdcs.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/master/wql/mdcs.xls index 8d15962c1f4bac09486ccc3ae988111c17ffd917..56004e44952981df0b1d6b5f7340a87bf6fcd8e5 100644 GIT binary patch delta 14352 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

Ssh{DgbjVTE%l65=8y~@uFLrJI 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 E2SZp?_W%F@ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql deleted file mode 100644 index 2ba88dab4..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QLK01.wql +++ /dev/null @@ -1,226 +0,0 @@ -[交易说明] - 交易名: 将海亮的物料导入mysql - 所属模块: - 功能简述: - 版权所有: - 表引用: - 版本经历: - -[数据库] - --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 - -[IO定义] - ################################################# - ## 表字段对应输入参数 - ################################################# - 输入.flag TYPEAS s_string - 输入.material_code TYPEAS s_string - 输入.processroute_uuid TYPEAS s_string - -[临时表] - --这边列出来的临时表就会在运行期动态创建 - -[临时变量] - --所有中间过程变量均可在此处定义 - -[业务过程] - - ########################################## - # 1、输入输出检查 # - ########################################## - - - ########################################## - # 2、主过程前处理 # - ########################################## - - - ########################################## - # 3、业务主过程 # - ########################################## - - IF 输入.flag = "1" - QUERY - SELECT - * - FROM - MD_PB_BaseData_ClassInfo classinfot - LEFT JOIN MD_PB_BaseData_ClassStandard standard ON classinfot.class_uuid = standard.class_uuid - LEFT JOIN MD_ME_MaterialBase material ON material.material_uuid = classinfot.base_data_uuid - left join MD_ME_MaterialExt ext on ext.material_uuid = material.material_uuid - - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "2" - QUERY - SELECT - * - FROM - MD_PB_BaseData_ClassStandard class - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "3" - QUERY - SELECT - * - FROM - ST_IVT_BSREALSTORATTR - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "4" - QUERY - SELECT - * - FROM - ST_IVT_SECTATTR - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "5" - QUERY - SELECT - * - FROM - ST_IVT_STRUCTATTR - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "6" - QUERY - SELECT - * - FROM - ST_IVT_StorageVehicleInfo - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "7" - QUERY - SELECT - * - FROM - wdk_sysparam - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "8" - QUERY - SELECT - * - FROM - IF_CacheLine_Position - ENDSELECT - ENDQUERY - ENDIF - - IF 输入.flag = "9" - QUERY - SELECT - * - FROM - st_cacheline_position - ENDSELECT - ENDQUERY - ENDIF - -IF 输入.flag = "10" - QUERY - SELECT - mb.*, - class.class_code, - class.class_name - FROM - md_me_materialbase mb - LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id - WHERE - mb.is_delete = '0' - AND 1 = 1 - AND class.class_id IN ( '1528555445302726656', '1528555443906023424', '1528555445080428544' ) - ENDSELECT - ENDQUERY -ENDIF - -IF 输入.flag = "11" - QUERY - SELECT - mb.*, - class.class_code, - class.class_name - FROM - md_me_materialbase mb - LEFT JOIN MD_PB_ClassStandard class ON class.class_id = mb.material_type_id - WHERE - mb.is_delete = '0' - AND 1 = 1 - AND class.class_id IN ( '1528555444031852544', '1528555444778438656', '1528555444291899392' ) - ENDSELECT - ENDQUERY -ENDIF - - -IF 输入.flag = "12" - QUERY - SELECT - * - FROM - PDM_BI_WorkshopMaterialCorr - ENDSELECT - ENDQUERY -ENDIF - -IF 输入.flag = "13" - QUERY - SELECT - * - FROM - PDM_BI_SemiMaterialCorr - ENDSELECT - ENDQUERY -ENDIF - -IF 输入.flag = "14" - QUERY - SELECT - * - FROM - PDM_BI_WorkshopMaterialCorr corr - LEFT JOIN PF_PB_SysDicInfo sys ON sys.sysdic_code = corr.materialprocess_series - AND sys.sysdic_type = 'IF_WCS_DEVICESERIES' - ENDSELECT - ENDQUERY -ENDIF - - - -IF 输入.flag = "15" - QUERY - SELECT - * - FROM - PDM_BI_ProduceProcessRoute route - ENDSELECT - ENDQUERY -ENDIF - -IF 输入.flag = "16" - QUERY - SELECT - * - FROM - PDM_BI_ProduceProcessRoute route - LEFT JOIN PDM_BI_ProduceProcessRouteDtl dtl ON route.processroute_uuid = dtl.processroute_uuid - route.processroute_uuid = 输入.processroute_uuid - order by workprocedure_number - ENDSELECT - ENDQUERY -ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STOR_ATTR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STOR_ATTR.wql index 55e0c09ad..af24e69f2 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STOR_ATTR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/QST_STOR_ATTR.wql @@ -16,14 +16,14 @@ 输入.flag TYPEAS s_string 输入.search TYPEAS s_string 输入.is_materialstore TYPEAS s_string - 输入.is_virtualstore TYPEAS s_string + 输入.is_virtualstore TYPEAS s_string 输入.is_semi_finished TYPEAS s_string - 输入.is_productstore TYPEAS s_string + 输入.is_productstore TYPEAS s_string 输入.is_attachment TYPEAS s_string - 输入.is_reversed TYPEAS s_string - 输入.blurry TYPEAS s_string - 输入.in_stor_id TYPEAS f_string - 输入.stor_id TYPEAS s_string + 输入.is_reversed TYPEAS s_string + 输入.blurry TYPEAS s_string + 输入.in_stor_id TYPEAS f_string + 输入.stor_id TYPEAS s_string [临时表] diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java index b6e2ec9d2..adedf11e1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/crm/service/impl/CrmToLmsServiceImpl.java @@ -37,6 +37,7 @@ public class CrmToLmsServiceImpl implements CrmToLmsService { String fax_number = row.getString("FaxNumber"); String web_site = row.getString("WebSite"); String notes = row.getString("Notes"); + String sales_owner = row.getString("SalesOwner"); JSONObject jo = new JSONObject(); jo.put("id", IdUtil.getSnowflake(1, 1).nextId()); @@ -52,6 +53,7 @@ public class CrmToLmsServiceImpl implements CrmToLmsService { jo.put("fax_number", fax_number); jo.put("web_site", web_site); jo.put("notes", notes); + jo.put("sales_owner", sales_owner); WQLObject.getWQLObject("MD_CS_CustomerBaseProc").insert(jo); log.info(jo.toString()); @@ -77,6 +79,7 @@ public class CrmToLmsServiceImpl implements CrmToLmsService { }else { customer_jo.put("cust_name",description); customer_jo.put("cust_simple_name",company); + customer_jo.put("sales_owner",sales_owner); customer_jo.put("update_optid",currentUserId); customer_jo.put("update_optname",nickName); customer_jo.put("update_time",now); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java index ed0a486dd..04b7ca32e 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/mes/service/impl/MesToLmsServiceImpl.java @@ -77,14 +77,30 @@ public class MesToLmsServiceImpl implements MesToLmsService { JSONObject result = new JSONObject(); try { // 校验数据 - if (ObjectUtil.isEmpty(containerName)) throw new BadRequestException("母卷号不能为空"); - if (ObjectUtil.isEmpty(ResourceName)) throw new BadRequestException("机台编码不能为空"); - if (ObjectUtil.isEmpty(MfgOrderName)) throw new BadRequestException("生产工单不能为空"); - if (ObjectUtil.isEmpty(ProductName)) throw new BadRequestException("产品编码不能为空"); - if (ObjectUtil.isEmpty(Description)) throw new BadRequestException("产品名称不能为空"); - if (ObjectUtil.isEmpty(TheoryHeight)) throw new BadRequestException("理论长度不能为空"); - if (ObjectUtil.isEmpty(EqpVelocity)) throw new BadRequestException("生产速度不能为空"); - if (ObjectUtil.isEmpty(UpCoilerDate)) throw new BadRequestException("开始时间不能为空"); + if (ObjectUtil.isEmpty(containerName)) { + throw new BadRequestException("母卷号不能为空"); + } + if (ObjectUtil.isEmpty(ResourceName)) { + throw new BadRequestException("机台编码不能为空"); + } + if (ObjectUtil.isEmpty(MfgOrderName)) { + throw new BadRequestException("生产工单不能为空"); + } + if (ObjectUtil.isEmpty(ProductName)) { + throw new BadRequestException("产品编码不能为空"); + } + if (ObjectUtil.isEmpty(Description)) { + throw new BadRequestException("产品名称不能为空"); + } + if (ObjectUtil.isEmpty(TheoryHeight)) { + throw new BadRequestException("理论长度不能为空"); + } + if (ObjectUtil.isEmpty(EqpVelocity)) { + throw new BadRequestException("生产速度不能为空"); + } + if (ObjectUtil.isEmpty(UpCoilerDate)) { + throw new BadRequestException("开始时间不能为空"); + } JSONObject jsonPoint = pointTab.query("ext_code ='" + ResourceName + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonPoint)) { @@ -202,11 +218,17 @@ public class MesToLmsServiceImpl implements MesToLmsService { try { String containerName = param.getString("ContainerName"); String resourceName = param.getString("ResourceName"); - if (ObjectUtil.isEmpty(resourceName)) throw new BadRequestException("机台编码不能为空"); - if (ObjectUtil.isEmpty(containerName)) throw new BadRequestException("母卷号不能为空"); + if (ObjectUtil.isEmpty(resourceName)) { + throw new BadRequestException("机台编码不能为空"); + } + if (ObjectUtil.isEmpty(containerName)) { + throw new BadRequestException("母卷号不能为空"); + } JSONObject jsonSb = sbTab.query("ext_code = '" + resourceName + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonSb)) throw new BadRequestException("点位设备不存在"); + if (ObjectUtil.isEmpty(jsonSb)) { + throw new BadRequestException("点位设备不存在"); + } /*if (StrUtil.equals("1", jsonSb.getString("is_used"))) { //查询该母卷对应的工单状态是否为准备就绪,如果不是则提示报错 @@ -268,8 +290,12 @@ public class MesToLmsServiceImpl implements MesToLmsService { String bakingTemperature = param.getString("BakingTemperature"); // 温度 String bakingTimer = param.getString("BakingTimer"); // 烘烤时间 - if (ObjectUtil.isEmpty(containerName)) throw new BadRequestException("母卷号不能为空"); - if (ObjectUtil.isEmpty(nextSpec)) throw new BadRequestException("下工序不能为空"); + if (ObjectUtil.isEmpty(containerName)) { + throw new BadRequestException("母卷号不能为空"); + } + if (ObjectUtil.isEmpty(nextSpec)) { + throw new BadRequestException("下工序不能为空"); + } //判断母卷号对应的设备是否启用,启用则调度生成任务,未启用返回MES成功 String ContainerName = param.getString("ContainerName"); @@ -289,8 +315,12 @@ public class MesToLmsServiceImpl implements MesToLmsService { /* * 入烘箱 */ - if (ObjectUtil.isEmpty(bakingTemperature)) throw new BadRequestException("温度不能为空"); - if (ObjectUtil.isEmpty(bakingTimer)) throw new BadRequestException("烘烤时间不能为空"); + if (ObjectUtil.isEmpty(bakingTemperature)) { + throw new BadRequestException("温度不能为空"); + } + if (ObjectUtil.isEmpty(bakingTimer)) { + throw new BadRequestException("烘烤时间不能为空"); + } //更新生箔工单的是否下发烘烤为是 HashMap map = new HashMap<>(); @@ -302,12 +332,15 @@ public class MesToLmsServiceImpl implements MesToLmsService { JSONObject jsonCoolIvt = coolIvtTab.query("container_name = '" + containerName + "' and full_point_status = '02' and cool_ivt_status <> '04'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonCoolIvt)) { JSONObject jsonPoint = pointTab.query("material_code ='" + containerName + "'").uniqueResult(0); - if (ObjectUtil.isNotEmpty(jsonPoint)) point_code = jsonPoint.getString("point_code"); + if (ObjectUtil.isNotEmpty(jsonPoint)) { + point_code = jsonPoint.getString("point_code"); + } } else { point_code = jsonCoolIvt.getString("full_point_code"); } - if (ObjectUtil.isEmpty(point_code)) + if (ObjectUtil.isEmpty(point_code)) { throw new BadRequestException("该母卷已经被烘烤或现在还未绑定在暂存位或对接点位上,不能进行入烘箱操作!!请检查当前母卷所在位置,并绑定对应位置"); + } // 调用接口输入参数 jsonParam.put("option", "1"); @@ -336,7 +369,9 @@ public class MesToLmsServiceImpl implements MesToLmsService { if (agv_status.equals("1")) { log.info("当前AGV启用参数为是"); JSONObject jsonPoint = pointTab.query("material_code = '" + containerName + "' and is_delete = '0' and is_used = '1'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonPoint)) throw new BadRequestException("当前AGV已启用,且母卷不存在烘箱对接位上!"); + if (ObjectUtil.isEmpty(jsonPoint)) { + throw new BadRequestException("当前AGV已启用,且母卷不存在烘箱对接位上!"); + } // 调用接口输入参数 jsonParam.put("point_code", jsonPoint.getString("point_code")); @@ -427,48 +462,89 @@ public class MesToLmsServiceImpl implements MesToLmsService { JSONObject result = new JSONObject(); try { // 基础校验 - if (ObjectUtil.isEmpty(orderType)) throw new BadRequestException("分切订单类型不能为空"); - if (ObjectUtil.isEmpty(ContainerName)) throw new BadRequestException("子卷号不能为空"); - if (ObjectUtil.isEmpty(ProductName)) throw new BadRequestException("产品编码不能为空"); - if (ObjectUtil.isEmpty(Description)) throw new BadRequestException("产品名称不能为空"); - if (ObjectUtil.isEmpty(Warehouse)) throw new BadRequestException("来源卷位置不能为空"); - if (ObjectUtil.isEmpty(ResourceName)) throw new BadRequestException("分切机台编码不能为空"); - if (ObjectUtil.isEmpty(SplitGroup)) throw new BadRequestException("分切组不能为空"); - if (ObjectUtil.isEmpty(ManufactureSort)) throw new BadRequestException("生产顺序不能为空"); - if (ObjectUtil.isEmpty(MfgOrderName)) throw new BadRequestException("生产订单不能为空"); - if (ObjectUtil.isEmpty(ManufactureDate)) throw new BadRequestException("生产日期不能为空"); - if (ObjectUtil.isEmpty(PaperTubeOrFRP)) throw new BadRequestException("管件类型不能为空"); - if (ObjectUtil.isEmpty(SplitBreadth)) throw new BadRequestException("子卷幅宽不能为空"); - if (ObjectUtil.isEmpty(SplitHeight)) throw new BadRequestException("子卷理论长度不能为空"); - if (ObjectUtil.isEmpty(SplitWeight)) throw new BadRequestException("子卷理论重量不能为空"); + if (ObjectUtil.isEmpty(orderType)) { + throw new BadRequestException("分切订单类型不能为空"); + } + if (ObjectUtil.isEmpty(ContainerName)) { + throw new BadRequestException("子卷号不能为空"); + } + if (ObjectUtil.isEmpty(ProductName)) { + throw new BadRequestException("产品编码不能为空"); + } + if (ObjectUtil.isEmpty(Description)) { + throw new BadRequestException("产品名称不能为空"); + } + if (ObjectUtil.isEmpty(Warehouse)) { + throw new BadRequestException("来源卷位置不能为空"); + } + if (ObjectUtil.isEmpty(ResourceName)) { + throw new BadRequestException("分切机台编码不能为空"); + } + if (ObjectUtil.isEmpty(SplitGroup)) { + throw new BadRequestException("分切组不能为空"); + } + if (ObjectUtil.isEmpty(ManufactureSort)) { + throw new BadRequestException("生产顺序不能为空"); + } + if (ObjectUtil.isEmpty(MfgOrderName)) { + throw new BadRequestException("生产订单不能为空"); + } + if (ObjectUtil.isEmpty(ManufactureDate)) { + throw new BadRequestException("生产日期不能为空"); + } + if (ObjectUtil.isEmpty(PaperTubeOrFRP)) { + throw new BadRequestException("管件类型不能为空"); + } + if (ObjectUtil.isEmpty(SplitBreadth)) { + throw new BadRequestException("子卷幅宽不能为空"); + } + if (ObjectUtil.isEmpty(SplitHeight)) { + throw new BadRequestException("子卷理论长度不能为空"); + } + if (ObjectUtil.isEmpty(SplitWeight)) { + throw new BadRequestException("子卷理论重量不能为空"); + } /* orderType * 1.当订单类型为1(常规)时 ParentContainerName 来源母卷号不能为空 * 2.当订单类型为2(改制)时 RestructContainerName 改制来源子卷号、PackageBoxSN 子卷立库木箱号 不能为空 */ if (StrUtil.equals(orderType, "1")) { - if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) + if (ObjectUtil.isEmpty(param.getString("ParentContainerName"))) { throw new BadRequestException("来源母卷号不能为空"); + } } else { - if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) + if (ObjectUtil.isEmpty(param.getString("RestructContainerName"))) { throw new BadRequestException("改制来源子卷号不能为空"); - if (ObjectUtil.isEmpty(param.getString("PackageBoxSN"))) throw new BadRequestException("子卷立库木箱号不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("PackageBoxSN"))) { + throw new BadRequestException("子卷立库木箱号不能为空"); + } } /* PaperTubeOrFRP * 1.当管件类型为1(纸筒)时 PaperTubeMaterial 纸筒物料编码、PaperTubeDescription 纸筒物料描述、PaperTubeModel 纸筒规格 不能为空 * 2.当管件类型为2(FRP管)时 FRPMaterial FRP管物料编码、FRPDescription FRP管物料描述、FRPModel FRP管规格 不能为空 */ if (StrUtil.equals(PaperTubeOrFRP, "1")) { - if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) + if (ObjectUtil.isEmpty(param.getString("PaperTubeMaterial"))) { throw new BadRequestException("纸筒物料编码不能为空"); - if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) + } + if (ObjectUtil.isEmpty(param.getString("PaperTubeDescription"))) { throw new BadRequestException("纸筒物料描述不能为空"); - if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) throw new BadRequestException("纸筒规格不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("PaperTubeModel"))) { + throw new BadRequestException("纸筒规格不能为空"); + } } else { - if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) throw new BadRequestException("FRP管物料编码不能为空"); - if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) + if (ObjectUtil.isEmpty(param.getString("FRPMaterial"))) { + throw new BadRequestException("FRP管物料编码不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("FRPDescription"))) { throw new BadRequestException("FRP管物料描述不能为空"); - if (ObjectUtil.isEmpty(param.getString("FRPModel"))) throw new BadRequestException("FRP管规格不能为空"); + } + if (ObjectUtil.isEmpty(param.getString("FRPModel"))) { + throw new BadRequestException("FRP管规格不能为空"); + } } JSONObject json = new JSONObject(); @@ -986,7 +1062,9 @@ public class MesToLmsServiceImpl implements MesToLmsService { String sub_type = param.getString("Attribute5"); // 包装关系类型 String ext_code = param.getString("Attribute6"); // 储存地点 JSONArray details = param.getJSONArray("details"); - if (ObjectUtil.isEmpty(details)) throw new BadRequestException("明细为空"); + if (ObjectUtil.isEmpty(details)) { + throw new BadRequestException("明细为空"); + } for (int i = 0; i < details.size(); i++) { JSONObject detail = details.getJSONObject(i); @@ -1177,8 +1255,9 @@ public class MesToLmsServiceImpl implements MesToLmsService { change_jo.put("changeinv_id", changeinv_id); change_jo.put("seq_no", detail_count + 1); JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + container_row.getString("product_name") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(mater_jo)) + if (ObjectUtil.isEmpty(mater_jo)) { throw new BadRequestException("物料不存在:" + container_row.getString("product_name")); + } change_jo.put("material_id", mater_jo.getString("material_id")); change_jo.put("pcsn", container_row.getString("container_name")); change_jo.put("package_box_sn", container_row.getString("package_box_sn")); @@ -1187,14 +1266,17 @@ public class MesToLmsServiceImpl implements MesToLmsService { change_jo.put("customer_name", CustomerName); //查询对应的客户 JSONObject customer_jo = WQLObject.getWQLObject("md_cs_customerbase").query("cust_code = '" + CustomerName + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(customer_jo)) throw new BadRequestException("客户不存在:" + CustomerName); + if (ObjectUtil.isEmpty(customer_jo)) { + throw new BadRequestException("客户不存在:" + CustomerName); + } change_jo.put("customer_description", customer_jo.getString("cust_name")); change_jo.put("isRePrintPackageBoxLabel", isRePrintPackageBoxLabel); change_jo.put("isUnPackBox", isUnPackBox); change_jo.put("UpdatedDateOfProduction", UpdatedDateOfProduction); JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + mater_jo.getString("base_unit_id") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(unit)) + if (ObjectUtil.isEmpty(unit)) { throw new BadRequestException("计量单位不存在:" + mater_jo.getString("base_unit_id")); + } change_jo.put("qty_unit_id", mater_jo.getString("base_unit_id")); change_jo.put("qty_unit_name", unit.getString("unit_name")); change_jo.put("qty", container_row.getString("net_weight")); @@ -1276,7 +1358,9 @@ public class MesToLmsServiceImpl implements MesToLmsService { String nickName = SecurityUtils.getCurrentNickName(); JSONObject sub_jo = WQLObject.getWQLObject("pdm_bi_subpackagerelation").query("container_name = '" + ContainerName + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(sub_jo)) throw new BadRequestException("子卷包装不存在:" + ContainerName); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("子卷包装不存在:" + ContainerName); + } /*sub_jo.put("change_type_scode","02"); sub_jo.put("create_id",currentUserId); sub_jo.put("create_name",nickName); @@ -1369,11 +1453,17 @@ public class MesToLmsServiceImpl implements MesToLmsService { //0-不通过;1-通过; String result = param.getString("result"); - if (ObjectUtil.isEmpty(instance_code)) throw new BadRequestException("参数instance_code不能为空"); - if (ObjectUtil.isEmpty(result)) throw new BadRequestException("参数result不能为空"); + if (ObjectUtil.isEmpty(instance_code)) { + throw new BadRequestException("参数instance_code不能为空"); + } + if (ObjectUtil.isEmpty(result)) { + throw new BadRequestException("参数result不能为空"); + } JSONObject json = mst.query("ext_code = '" + instance_code + "' and bill_status = '20'").uniqueResult(0); - if (ObjectUtil.isEmpty(json)) throw new BadRequestException("未找到对应单据或已经完成!"); + if (ObjectUtil.isEmpty(json)) { + throw new BadRequestException("未找到对应单据或已经完成!"); + } // 调用接口 ProductScrapServiceImpl bean = SpringContextHolder.getBean(ProductScrapServiceImpl.class); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java index fc45f944a..4b4bbcf92 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/ext/sap/service/impl/SapToLmsServiceImpl.java @@ -13,6 +13,7 @@ import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.sap.service.SapToLmsService; import org.nl.wms.st.inbill.service.CheckOutBillService; import org.nl.wms.st.inbill.service.RawAssistIStorService; +import org.nl.wms.st.instor.service.RecutPlanService; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -27,9 +28,10 @@ public class SapToLmsServiceImpl implements SapToLmsService { private final RawAssistIStorService rawAssistIStorService; + private final RecutPlanService recutPlanService; - @Override - public JSONObject getReCutInfo(JSONObject json) { + + public JSONObject getReCutInfo2(JSONObject json) { log.info("getReCutInfo的输入参数为:------------------------" + json.toString()); JSONObject jsonMst = new JSONObject(); @@ -122,6 +124,88 @@ public class SapToLmsServiceImpl implements SapToLmsService { return result; } + @Override + public JSONObject getReCutInfo(JSONObject json) { + log.info("getReCutInfo的输入参数为:------------------------" + json.toString()); + + JSONObject jsonMst = new JSONObject(); + + JSONObject result = new JSONObject(); + + String msg = "改切出库单据推送成功!"; + try { + JSONArray dtl_ja = json.getJSONArray("ITEM"); + String LGORT = dtl_ja.getJSONObject(0).getString("LGORT"); + JSONObject stor_jo = WQLObject.getWQLObject("ST_IVT_BSRealStorAttr").query("ext_id = '" + LGORT + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(stor_jo)) { + result.put("RTYPE", "E"); + result.put("RTMSG", "操作失败!" + "未查询到外部标识为:" + LGORT + "对应的仓库!"); + result.put("RTOAL", 1); + result.put("RTDAT", null); + return result; + } + + jsonMst.put("stor_id", stor_jo.getString("stor_id")); + jsonMst.put("stor_code", stor_jo.getString("stor_code")); + jsonMst.put("stor_name", stor_jo.getString("stor_name")); + + JSONArray dtls = new JSONArray(); + for (int i = 0; i < dtl_ja.size(); i++) { + JSONObject jo = dtl_ja.getJSONObject(i); + String sap_pcsn = jo.getString("CHARG"); + if (StrUtil.isEmpty("sap_pcsn")) { + throw new BadRequestException("请求参数SAP批次不能为空!"); + } + JSONObject sub_jo = WQLObject.getWQLObject("PDM_BI_SubPackageRelation").query("sap_pcsn = '" + sap_pcsn + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("LMS中不存在SAP批次为【" + sap_pcsn + "】的包装关系"); + } + String container_name = sub_jo.getString("container_name"); + JSONObject struct_ivt = WQLObject.getWQLObject("st_ivt_structivt").query("pcsn = '" + container_name + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(struct_ivt)) { + throw new BadRequestException("SAP批次为【" + sap_pcsn + "】的成品卷不存在或已经出库!"); + } else { + if (struct_ivt.getDoubleValue("frozen_qty") > 0) { + msg = "SAP批次为【" + sap_pcsn + "】的成品卷已经被分配或出库中"; + } else { + JSONObject dtl = new JSONObject(); + //查询该物料 + JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + sub_jo.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(mater_jo)) { + throw new BadRequestException("未查询到物料:" + sub_jo.getString("product_name") + ",信息!"); + } + dtl.put("material_id", mater_jo.getString("material_id")); + dtl.put("sap_pcsn", sap_pcsn); + JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + mater_jo.getString("base_unit_id") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(unit)) { + throw new BadRequestException("未查询到物料计量单位:" + mater_jo.getString("base_unit_id") + ",信息!"); + } + dtl.put("qty_unit_id", unit.getString("measure_unit_id")); + dtl.put("qty_unit_name", unit.getString("unit_name")); + dtl.put("qty", sub_jo.getString("net_weight")); + dtls.add(dtl); + } + } + } + + if (!dtls.isEmpty()){ + jsonMst.put("tableData", dtls); + recutPlanService.insertDtl(jsonMst); + }else { + throw new BadRequestException("推送失败!SAP推送的子卷明细不符合出库状态!"); + } + } catch (Exception exception) { + result.put("TYPE", "E"); + result.put("MESSAGE", "推送失败!" + exception.getMessage()); + log.info("getMaterialInfo的输出参数为:------------------------" + result.toString()); + return result; + } + result.put("TYPE", "S"); + result.put("MESSAGE", msg); + log.info("getMaterialInfo的输出参数为:------------------------" + result.toString()); + return result; + } + @Override public JSONObject getUnPlanInfo(JSONObject jo) { log.info("getUnPlanInfo的输入参数为:------------------------" + jo.toString()); @@ -299,8 +383,9 @@ public class SapToLmsServiceImpl implements SapToLmsService { // 明细 JSONObject jsonMater = materTab.query("material_code = '" + json.getString("MATNR") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonMater)) + if (ObjectUtil.isEmpty(jsonMater)) { throw new BadRequestException("此物料不存在" + json.getString("MATNR")); + } JSONObject jsonUnit = unitTab.query("measure_unit_id = '" + jsonMater.getString("base_unit_id") + "'").uniqueResult(0); jsonDtl.put("material_id", jsonMater.getString("material_id")); @@ -500,7 +585,9 @@ public class SapToLmsServiceImpl implements SapToLmsService { String lgort_out = jo.getString("LGORT1"); // 调出仓库 String lgort_in = jo.getString("LGORT2"); // 调入仓库 - if (ObjectUtil.isEmpty(jo.getString("ZDBSQD"))) throw new BadRequestException("交货单不能为空!"); + if (ObjectUtil.isEmpty(jo.getString("ZDBSQD"))) { + throw new BadRequestException("交货单不能为空!"); + } JSONObject jsonStorOut = storTab.query("stor_code = '" + lgort_out + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); JSONObject jsonStorIn = storTab.query("stor_code = '" + lgort_in + "' and is_used = '1' and is_delete = '0'").uniqueResult(0); @@ -540,13 +627,17 @@ public class SapToLmsServiceImpl implements SapToLmsService { JSONObject jsonDtl = new JSONObject(); JSONObject jsonMater = materTab.query("material_code = '" + jsonObject.getString("MATNR") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonMater)) + if (ObjectUtil.isEmpty(jsonMater)) { throw new BadRequestException("此物料不存在" + jsonObject.getString("MATNR")); + } JSONObject jsonUnit = unitTab.query("measure_unit_id = '" + jsonMater.getString("base_unit_id") + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(jsonObject.getString("KALAB"))) + if (ObjectUtil.isEmpty(jsonObject.getString("KALAB"))) { throw new BadRequestException("调拨数量不能为空!"); - if (ObjectUtil.isEmpty(jsonObject.getString("ZVBELN"))) throw new BadRequestException("订单不能为空!"); + } + if (ObjectUtil.isEmpty(jsonObject.getString("ZVBELN"))) { + throw new BadRequestException("订单不能为空!"); + } jsonDtl.put("material_id", jsonMater.getString("material_id")); jsonDtl.put("qty_unit_id", jsonMater.getLongValue("base_unit_id")); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java index 79fffbe04..ea55d1aa3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CallEmpReelTask.java @@ -4,22 +4,18 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.exception.BadRequestException; 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.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.AcsTaskDto; -import org.nl.wms.sch.AcsUtil; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.PointService; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -27,6 +23,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +/** + * @Author: Zhouz + * @Date: 2023-12-12-13:42 + * @Description: 生箔区域和冷却区之前的任务创建 + */ @Service @RequiredArgsConstructor @Slf4j @@ -46,12 +47,6 @@ public class CallEmpReelTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")) { - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")) { - agv_system_type = "3"; - }*/ AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) .task_code(json.getString("task_code")) @@ -106,9 +101,6 @@ public class CallEmpReelTask extends AbstractAcsTask { jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - // 删除冷却区出入单据 - // coolTab.delete("task_id = '"+task_id+"'"); - // 更新生箔工单状态为开始、清除称重信息 JSONObject jsonRaw = rawTab.query("container_name ='" + jsonTask.getString("material_code") + "' AND status <> '09' AND is_delete = '0'").uniqueResult(0); jsonRaw.put("status", "01"); @@ -121,11 +113,6 @@ public class CallEmpReelTask extends AbstractAcsTask { jsonTask.put("task_status", TaskStatusEnum.EXECUTING.getCode()); jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); - - /*// 更新冷却区出入表 状态为执行中 - JSONObject jsonCool = coolTab.query("task_id = '" + task_id + "'").uniqueResult(0); - jsonCool.put("bill_status", "40"); - coolTab.update(jsonCool);*/ } if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { @@ -181,10 +168,6 @@ public class CallEmpReelTask extends AbstractAcsTask { if (ObjectUtil.isEmpty(jsonIvt)) { throw new BadRequestException("未找到可用点位:" + point_code1); } - // 校验终点是否存在 - /*JSONObject nextDto = sbTab.query("point_code ='" + point_code2.substring(point_code2.length()-2) + "'").uniqueResult(0); - if (ObjectUtil.isEmpty(nextDto)) - throw new BadRequestException("未找到可用点位:" + jsonTask.getString("point_code2"));*/ // 更新冷却库存状态 jsonIvt.put("empty_point_status", "01"); @@ -217,7 +200,7 @@ public class CallEmpReelTask extends AbstractAcsTask { jsonIvt2.put("cool_ivt_status", "01"); ivtTab.update(jsonIvt2); -// 插入入库单 + // 插入入库单 JSONObject jsonMater = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + jsonRaw.getString("product_name") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonMater)) { throw new BadRequestException("产品不存在"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java index ec4e50bf9..832d97eb1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CoolCutTask.java @@ -8,9 +8,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; @@ -24,6 +23,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +/** + * @Author: Zhouz + * @Date: 2023-12-12-13:42 + * @Description: 冷却区和分切缓存架之间的任务创建 + */ @Service @RequiredArgsConstructor @Slf4j @@ -45,12 +49,6 @@ public class CoolCutTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")) { - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")) { - agv_system_type = "3"; - }*/ AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) .task_code(json.getString("task_code")) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java index 5a938f833..431a2b679 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutConveyorTask.java @@ -25,6 +25,11 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; +/** +* @Auther:Zhouz +* @Date:2023/12/12 +* @Description:分切下料位和输送线之间任务创建 + */ @Service @RequiredArgsConstructor @Slf4j diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java index 7449621ca..077ae1a30 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/CutTrussTask.java @@ -8,10 +8,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.C; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.sch.AcsTaskDto; @@ -21,9 +19,13 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; +/** +* @Auther:Zhouz +* @Date:2023/12/12 +* @Description:分切下料位和桁架之间的任务 + */ @Service @RequiredArgsConstructor @Slf4j @@ -43,13 +45,6 @@ public class CutTrussTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")) { - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")) { - agv_system_type = "3"; - }*/ - //添加过滤,如果为分切机B轴的下料位,要判断该分切机A轴的点位是否存在未下发的任务,存在则也不允许下发 String point_code1 = json.getString("point_code1"); String point_code2 = json.getString("point_code2"); @@ -85,7 +80,6 @@ public class CutTrussTask extends AbstractAcsTask { @Transactional public void updateTaskStatus(JSONObject taskObj, String status) { WQLObject taskTab = WQLObject.getWQLObject("SCH_BASE_Task"); - WQLObject ivtTab = WQLObject.getWQLObject("ST_IVT_DeliveryPointIvt"); CutConveyorTask cutConveyorTask = new CutConveyorTask(); String task_id = taskObj.getString("task_id"); @@ -367,24 +361,6 @@ public class CutTrussTask extends AbstractAcsTask { String currentUserId = SecurityUtils.getCurrentUserId(); String currentUsername = SecurityUtils.getCurrentUsername(); - CutConveyorTask cutConveyorTask = new CutConveyorTask(); - - String point_code1 = form.getString("point_code1"); - String point_code2 = form.getString("point_code2"); - String point_code3 = form.getString("point_code3"); - String point_code4 = form.getString("point_code4"); - /*if (cutConveyorTask.isSingleTask(point_code1) && StrUtil.isNotEmpty(point_code1)) { - throw new BadRequestException("点位:" + point_code1 + "存在未完成的任务!"); - }*/ - /*if (cutConveyorTask.isSingleTask(point_code2) && StrUtil.isNotEmpty(point_code2)) { - throw new BadRequestException("点位:" + point_code2 + "存在未完成的任务!"); - } - if (cutConveyorTask.isSingleTask(point_code3) && StrUtil.isNotEmpty(point_code3)) { - throw new BadRequestException("点位:" + point_code3 + "存在未完成的任务!"); - }*/ - /*if (cutConveyorTask.isSingleTask(point_code4) && StrUtil.isNotEmpty(point_code4)) { - throw new BadRequestException("点位:" + point_code4 + "存在未完成的任务!"); - }*/ JSONObject json = new JSONObject(); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java index 06cedc724..f73aae3e8 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/EmptyVehicleTask.java @@ -2,30 +2,26 @@ package org.nl.wms.sch.tasks; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; import org.nl.wms.sch.service.TaskService; -import org.nl.wms.st.inbill.service.impl.InbillServiceImpl; -import org.nl.wms.st.inbill.service.impl.RawAssistIStorServiceImpl; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; /** * Created by ZZ on 2021/12/22. + * Description:密集库空载具任务创建 */ public class EmptyVehicleTask extends AbstractAcsTask { private final String THIS_CLASS = EmptyVehicleTask.class.getName(); @@ -163,7 +159,6 @@ public class EmptyVehicleTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { - TaskService taskService = SpringContextHolder.getBean(TaskService.class); String task_type = form.getString("task_type"); if (StrUtil.isBlank(task_type)) { throw new BadRequestException("业务类型不能为空"); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java index ec9be2bed..f6e983202 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InCoolIvtTask.java @@ -8,10 +8,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; - -import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; @@ -48,12 +46,6 @@ public class InCoolIvtTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")) { - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")) { - agv_system_type = "3"; - }*/ AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) @@ -85,7 +77,6 @@ public class InCoolIvtTask extends AbstractAcsTask { if (StrUtil.equals(status, "0")) { // 取消删除任务 - //taskTab.delete("task_id = '" + task_id + "'");// 更新删除字段 jsonTask.put("is_delete", "1"); jsonTask.put("update_time", DateUtil.now()); taskTab.update(jsonTask); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java index 1725eceda..a9e24ad86 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InHotTask.java @@ -46,12 +46,6 @@ public class InHotTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")) { - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")) { - agv_system_type = "3"; - }*/ AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) @@ -72,7 +66,6 @@ public class InHotTask extends AbstractAcsTask { dto.setNext_device_code(json.getString("point_code2")); } - //查询该任务对应的 resultList.add(dto); } return resultList; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java index c86da010b..fc2576594 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/InTask.java @@ -48,11 +48,9 @@ public class InTask extends AbstractAcsTask { //判断该任务所在的块、排存在其他任务 String point_code2 = json.getString("point_code2"); - JSONObject struct_jo = WQLObject.getWQLObject("ST_IVT_StructAttr").query("struct_code = '"+point_code2+"'").uniqueResult(0); - String row_num = struct_jo.getString("row_num"); - String block_num = struct_jo.getString("block_num"); + JSONObject struct_jo = WQLObject.getWQLObject("ST_IVT_StructAttr").query("struct_code = '" + point_code2 + "'").uniqueResult(0); - char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length()-1); + char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) .task_code(json.getString("task_code")) @@ -107,7 +105,7 @@ public class InTask extends AbstractAcsTask { } // 更新任务表删除字段 - map.put("is_delete","1"); + map.put("is_delete", "1"); JSONObject jsonDis = disTab.query("task_id ='" + taskObj.getString("task_id") + "'").uniqueResult(0); if (ObjectUtil.isEmpty(jsonDis)) { @@ -150,7 +148,7 @@ public class InTask extends AbstractAcsTask { i_form.put("bill_table", "ST_IVT_IOStorInv"); i_form.put("qty_unit_id", dis_row.getString("qty_unit_id")); i_form.put("qty_unit_name", dis_row.getString("qty_unit_name")); - new StorPublicServiceImpl().IOStor(i_form,"32"); + new StorPublicServiceImpl().IOStor(i_form, "32"); } // 修改主表状态为分配中:30 @@ -159,12 +157,12 @@ public class InTask extends AbstractAcsTask { mstMap.put("update_optid", currentUserId); mstMap.put("update_optname", nickName); mstMap.put("update_time", now); - mstTab.update(mstMap,"iostorinv_id = '"+iostorinv_id+"'"); + mstTab.update(mstMap, "iostorinv_id = '" + iostorinv_id + "'"); // 修改明细状态为生成:10 JSONObject dtlMap = new JSONObject(); dtlMap.put("bill_status", "10"); - dtlTab.update(dtlMap,"iostorinv_id = '"+iostorinv_id+"'"); + dtlTab.update(dtlMap, "iostorinv_id = '" + iostorinv_id + "'"); // 更新分配明细为:未生成:00,清空对应字段 JSONObject disMap = new JSONObject(); @@ -177,7 +175,7 @@ public class InTask extends AbstractAcsTask { disMap.put("struct_id", ""); disMap.put("struct_code", ""); disMap.put("struct_name", ""); - disTab.update(disMap,"task_id = '"+taskObj.getString("task_id")+"'"); + disTab.update(disMap, "task_id = '" + taskObj.getString("task_id") + "'"); } map.put("update_optid", currentUserId); map.put("update_optname", nickName); @@ -199,7 +197,6 @@ public class InTask extends AbstractAcsTask { @Transactional(rollbackFor = Exception.class) public String createTask(JSONObject form) { - TaskService taskService = SpringContextHolder.getBean(TaskService.class); String task_type = form.getString("task_type"); if (StrUtil.isBlank(task_type)) { throw new BadRequestException("业务类型不能为空"); @@ -222,7 +219,7 @@ public class InTask extends AbstractAcsTask { JSONObject json = new JSONObject(); json.put("task_id", IdUtil.getSnowflake(1, 1).nextId()); - json.put("task_code", IdUtil.getSnowflake(1,1).nextId()); + json.put("task_code", IdUtil.getSnowflake(1, 1).nextId()); json.put("task_type", form.getString("task_type")); json.put("vehicle_code", form.getString("vehicle_code")); json.put("task_status", TaskStatusEnum.START_AND_POINT.getCode()); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java index f014fe643..de2cea0ca 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutHotTask.java @@ -1,6 +1,5 @@ package org.nl.wms.sch.tasks; -import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; @@ -9,9 +8,8 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.WQL; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; @@ -24,7 +22,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.Date; import java.util.List; @Service @@ -46,12 +43,6 @@ public class OutHotTask extends AbstractAcsTask { String product_area = json.getString("product_area"); String agv_system_type = "2"; - /*if (product_area.equals("A1") || product_area.equals("A2")){ - agv_system_type = "2"; - } - if (product_area.equals("A3") || product_area.equals("A4")){ - agv_system_type = "3"; - }*/ AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java index 15e1b850f..08f4bfada 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/OutTask.java @@ -1,6 +1,5 @@ package org.nl.wms.sch.tasks; -import cn.hutool.core.date.DateUnit; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.NumberUtil; @@ -9,26 +8,19 @@ import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; -import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.WQL; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; -import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.service.TaskService; import org.nl.wms.st.inbill.service.CheckOutBillService; -import org.nl.wms.st.inbill.service.impl.InbillServiceImpl; -import org.nl.wms.st.inbill.service.impl.RawAssistIStorServiceImpl; -import org.nl.wms.st.outbill.service.impl.CheckOutBillServiceImpl; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.*; +import java.util.ArrayList; +import java.util.List; /** * Created by Lxy on 2021/12/22. @@ -49,14 +41,11 @@ public class OutTask extends AbstractAcsTask { JSONObject map = new JSONObject(); map.put("flag", "1"); map.put("handle_class", THIS_CLASS); - //JSONArray arr = WQL.getWO("TASK01").addParamMap(map).process().getResultJSONArray(0); JSONArray arr = WQLObject.getWQLObject("SCH_BASE_Task").query("handle_class = '" + THIS_CLASS + "' and task_status = '" + TaskStatusEnum.START_AND_POINT.getCode() + "' and is_delete ='0'").getResultJSONArray(0); ArrayList resultList = new ArrayList<>(); for (int i = 0; i < arr.size(); i++) { JSONObject json = arr.getJSONObject(i); - // 1.查询此任务是否有任务组 - //if (ObjectUtil.isEmpty(json.getString("task_group_id"))) { char dtl_type = json.getString("task_type").charAt(json.getString("task_type").length() - 1); AcsTaskDto dto = AcsTaskDto.builder() .ext_task_id(json.getString("task_id")) @@ -76,34 +65,6 @@ public class OutTask extends AbstractAcsTask { JSONObject paramMap = new JSONObject(); paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode()); wo_Task.update(paramMap, "task_id ='" + json.getString("task_id") + "'"); - /*} else { - // 2.有任务组:按照执行顺序下发 大到小 - JSONArray taskArr = wo_Task.query("task_group_id = '" + json.getString("task_group_id") + "' order by sort_seq ASC").getResultJSONArray(0); - - for (int j = 0; j < taskArr.size(); j++) { - JSONObject json2 = taskArr.getJSONObject(j); - - char dtl_type = json2.getString("task_type").charAt(json.getString("task_type").length()-1); - - AcsTaskDto dto = AcsTaskDto.builder() - .ext_task_id(json2.getString("task_id")) - .task_code(json2.getString("task_code")) - .task_type(json2.getString("acs_task_type")) - .start_device_code(json2.getString("point_code1")) - .next_device_code(json2.getString("point_code2")) - .vehicle_code(json2.getString("vehicle_code")) - .priority(json2.getString("priority")) - .dtl_type(String.valueOf(dtl_type)) - .remark(json2.getString("remark")) - .build(); - resultList.add(dto); - } - - // 更新任务为下发 - *//* JSONObject paramMap = new JSONObject(); - paramMap.put("task_status", TaskStatusEnum.ISSUE.getCode()); - wo_Task.update(paramMap,"task_group_id ='"+json.getString("task_group_id")+"'");*//* - }*/ } return resultList; } @@ -155,9 +116,6 @@ public class OutTask extends AbstractAcsTask { if (ObjectUtil.isNotEmpty(task_group_id)) { // 上一个任务组顺序号 String sort_seq_last = NumberUtil.sub(jsonTask.getString("sort_seq"), "1").toString(); - - JSONObject jsonTaskLast = taskTab.query("task_group_id = '" + task_group_id + "' and sort_seq = '" + sort_seq_last + "' and task_status <> '07'").uniqueResult(0); -// if (ObjectUtil.isNotEmpty(jsonTaskLast)) throw new BadRequestException("请先完成"+jsonTaskLast.getString("task_code")+"的任务!"); } // 调用标识完成 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqCallMaterialSendEmptyTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqCallMaterialSendEmptyTask.java deleted file mode 100644 index ae248bdd5..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqCallMaterialSendEmptyTask.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.wms.sch.tasks.fq; - -/** - * 分切呼叫物料并送空轴到冷却暂存区 - */ -public class FqCallMaterialSendEmptyTask { -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqFromLqCallMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqFromLqCallMaterialTask.java deleted file mode 100644 index 53c9ff546..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqFromLqCallMaterialTask.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.wms.sch.tasks.fq; - -/** - * 分切机从冷却暂存区呼叫物料 - */ -public class FqFromLqCallMaterialTask { -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqToLqSendEmptyTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqToLqSendEmptyTask.java deleted file mode 100644 index e4cd77b3f..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/FqToLqSendEmptyTask.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.wms.sch.tasks.fq; - -/** - * 分切机送空轴到冷却暂存区 - */ -public class FqToLqSendEmptyTask { -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/HxToLqSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/HxToLqSendMaterialTask.java deleted file mode 100644 index 312e6eefb..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/HxToLqSendMaterialTask.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.wms.sch.tasks.fq; - -/** - * 烘箱到冷却区送物料 - */ -public class HxToLqSendMaterialTask { -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/LqToHxSendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/LqToHxSendMaterialTask.java deleted file mode 100644 index 61d9e16ae..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/fq/LqToHxSendMaterialTask.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.nl.wms.sch.tasks.fq; - -/** - * 冷却到烘箱送物料 - */ -public class LqToHxSendMaterialTask { -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptySendMaterialTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptySendMaterialTask.java deleted file mode 100644 index ae20644a0..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptySendMaterialTask.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.nl.wms.sch.tasks.sb; - -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.wms.sch.AcsTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 生箔呼叫空卷轴并送满料 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class SbCallEmptySendMaterialTask extends AbstractAcsTask { - private final String THIS_CLASS = SbCallEmptySendMaterialTask.class.getName(); - - @Override - public List addTask() { - return null; - } - - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - - } - - @Override - public String createTask(JSONObject form) { - return null; - } - - @Override - public void forceFinish(String task_id) { - - } - - @Override - public void cancel(String task_id) { - - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptyTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptyTask.java deleted file mode 100644 index 8647affc5..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbCallEmptyTask.java +++ /dev/null @@ -1,63 +0,0 @@ -package org.nl.wms.sch.tasks.sb; - - -import cn.hutool.core.date.DateUtil; -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.modules.system.util.CodeUtil; -import org.nl.wms.sch.AcsTaskDto; -import org.nl.wms.sch.SchTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.util.IdUtil; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 生箔呼叫空卷轴 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class SbCallEmptyTask extends AbstractAcsTask { - private final String THIS_CLASS = SbCallEmptyTask.class.getName(); - - @Override - public List addTask() { - return null; - } - - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - - } - - @Override - public String createTask(JSONObject form) { - SchTaskDto dto = SchTaskDto.builder().task_id(IdUtil.getLongId()) - .task_code(IdUtil.getStringId()) - .task_type("") - .task_name("生箔呼叫空轴") - .task_status(TaskStatusEnum.SURE_END.getCode()) - .point_code2("point_code2") - .acs_task_type("2") - .vehicle_code(form.getString("vehicle_code")) - .vehicle_qty(form.getIntValue("qty")) - .handle_class(THIS_CLASS) - .create_time(DateUtil.now()) - .build(); - return dto.getTask_id() + ""; - } - - @Override - public void forceFinish(String task_id) { - - } - - @Override - public void cancel(String task_id) { - - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbSendFullTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbSendFullTask.java deleted file mode 100644 index b822417b5..000000000 --- a/lms/nladmin-system/src/main/java/org/nl/wms/sch/tasks/sb/SbSendFullTask.java +++ /dev/null @@ -1,45 +0,0 @@ -package org.nl.wms.sch.tasks.sb; - -import com.alibaba.fastjson.JSONObject; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.nl.wms.sch.AcsTaskDto; -import org.nl.wms.sch.manage.AbstractAcsTask; -import org.springframework.stereotype.Service; - -import java.util.List; - -/** - * 生箔送满料 - */ -@Service -@RequiredArgsConstructor -@Slf4j -public class SbSendFullTask extends AbstractAcsTask { - private final String THIS_CLASS = SbSendFullTask.class.getName(); - - @Override - public List addTask() { - return null; - } - - @Override - public void updateTaskStatus(JSONObject taskObj, String status) { - - } - - @Override - public String createTask(JSONObject form) { - return null; - } - - @Override - public void forceFinish(String task_id) { - - } - - @Override - public void cancel(String task_id) { - - } -} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/RecutPlanController.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/RecutPlanController.java new file mode 100644 index 000000000..f647b926b --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/rest/RecutPlanController.java @@ -0,0 +1,78 @@ +package org.nl.wms.st.instor.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.modules.logging.annotation.Log; +import org.nl.wms.st.instor.service.RecutPlanService; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; + +@RestController +@RequiredArgsConstructor +@Api(tags = "改切计划管理") +@RequestMapping("/api/recutplan") +@Slf4j +public class RecutPlanController { + private final RecutPlanService recutPlanService; + + @GetMapping + @Log("查询改切计划") + @ApiOperation("查询改切计划") + public ResponseEntity query(@RequestParam Map whereJson, Pageable page) { + return new ResponseEntity<>(recutPlanService.pageQuery(whereJson, page), HttpStatus.OK); + } + + @GetMapping("/getOutBillDtl") + @Log("查询明细") + @ApiOperation("查询明细") + public ResponseEntity getOutBillDtl(@RequestParam Map whereJson) { + return new ResponseEntity<>(recutPlanService.getOutBillDtl(whereJson), HttpStatus.OK); + } + + @Log("删除") + @ApiOperation("删除") + @DeleteMapping + public ResponseEntity delete(@RequestBody Long[] ids) { + recutPlanService.deleteAll(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping + @Log("修改") + @ApiOperation("修改") + public ResponseEntity update(@RequestBody JSONObject whereJson) { + recutPlanService.update(whereJson); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @PostMapping() + @Log("新增") + @ApiOperation("新增") + public ResponseEntity insertDtl(@RequestBody JSONObject whereJson) { + recutPlanService.insertDtl(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/createBill") + @Log("创建出库单") + @ApiOperation("创建出库单") + public ResponseEntity createBill(@RequestBody JSONObject whereJson) { + recutPlanService.createBill(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @PostMapping("/confirm") + @Log("强制确认") + @ApiOperation("强制确认") + public ResponseEntity auditOut(@RequestBody JSONObject whereJson) { + recutPlanService.auditOut(whereJson); + return new ResponseEntity<>(HttpStatus.CREATED); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/RecutPlanService.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/RecutPlanService.java new file mode 100644 index 000000000..7a01c137c --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/RecutPlanService.java @@ -0,0 +1,49 @@ +package org.nl.wms.st.instor.service; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.springframework.data.domain.Pageable; + +import java.util.Map; + +public interface RecutPlanService { + /** + * 查询数据分页 + * + * @param whereJson 条件 + * @param page 分页参数 + * @return Map + */ + Map pageQuery(Map whereJson, Pageable page); + + /** + * 多选删除 + * @param ids / + */ + void deleteAll(Long[] ids); + /** + * 新增出库单 + * @param whereJson / + */ + void insertDtl (JSONObject whereJson); + /** + * 查询出库单明细 + * @param whereJson / + * @return + */ + JSONArray getOutBillDtl(Map whereJson); + /** + * 修改出库单 + * @param whereJson / + */ + void update(JSONObject whereJson); + + void createBill(JSONObject whereJson); + + /** + * 不通过 + * @param whereJson / + */ + void auditOut(JSONObject whereJson); + +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java new file mode 100644 index 000000000..a571b7685 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/service/impl/RecutPlanServiceImpl.java @@ -0,0 +1,309 @@ +package org.nl.wms.st.instor.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.map.MapUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +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.modules.wql.util.SpringContextHolder; +import org.nl.modules.wql.util.WqlUtil; +import org.nl.system.service.user.ISysUserService; +import org.nl.system.service.user.dao.SysUser; +import org.nl.wms.basedata.st.service.impl.UserStorServiceImpl; +import org.nl.wms.ext.mes.service.impl.LmsToMesServiceImpl; +import org.nl.wms.st.inbill.service.CheckOutBillService; +import org.nl.wms.st.instor.service.ProductScrapService; +import org.nl.wms.st.instor.service.RecutPlanService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * PC端成品报废审核 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class RecutPlanServiceImpl implements RecutPlanService { + + private final CheckOutBillService checkOutBillService; + + @Autowired + private ISysUserService iSysUserService; + + @Override + public Map pageQuery(Map whereJson, Pageable page) { + HashMap map = new HashMap<>(whereJson); + map.put("flag", "1"); + if (StrUtil.isNotEmpty(map.get("bill_code"))) { + map.put("bill_code", "%" + map.get("bill_code") + "%"); + } + if (StrUtil.isNotEmpty(map.get("material_code"))) { + map.put("material_code", "%" + map.get("material_code") + "%"); + } + if (StrUtil.isNotEmpty(map.get("pcsn"))) { + map.put("pcsn", (String) whereJson.get("pcsn")); + } + + //获取人员对应的仓库 + UserStorServiceImpl userStorService = new UserStorServiceImpl(); + String in_stor_id = userStorService.getInStor(); + + if (ObjectUtil.isNotEmpty(in_stor_id)) { + map.put("in_stor_id", in_stor_id); + } + + JSONObject jo = WQL.getWO("QST_IVT_PRODUCTPLAN").addParamMap(map).pageQuery(WqlUtil.getHttpContext(page), "plan_id desc"); + return jo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteAll(Long[] ids) { + WQLObject wo_mst = WQLObject.getWQLObject("ST_IVT_ProductScrapMst"); + + JSONObject jsonObject = new JSONObject(); + jsonObject.put("is_delete", "1"); + for (Long scrap_id : ids) { + wo_mst.update(jsonObject, "scrap_id = '" + scrap_id + "'"); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void insertDtl(JSONObject map) { + //主表 + WQLObject wo_mst = WQLObject.getWQLObject("st_ivt_productplanmst"); + + JSONArray rows = map.getJSONArray("tableData"); + map.remove("tableData"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String changeinv_id = IdUtil.getSnowflake(1, 1).nextId() + ""; + JSONObject mst_jo = new JSONObject(); + mst_jo.put("plan_id", changeinv_id); + mst_jo.put("plan_code", CodeUtil.getNewCode("PLAN_CODE")); + mst_jo.put("biz_date", DateUtil.today()); + mst_jo.put("stor_id", MapUtil.getStr(map, "stor_id")); + mst_jo.put("stor_code", MapUtil.getStr(map, "stor_code")); + mst_jo.put("stor_name", MapUtil.getStr(map, "stor_name")); + mst_jo.put("bill_status", "10"); + mst_jo.put("input_optid", currentUserId + ""); + mst_jo.put("input_optname", nickName); + mst_jo.put("input_time", now); + mst_jo.put("is_delete", "0"); + mst_jo.put("detail_count", rows.size()); + + //调用明细处理方法 + JSONObject ret = this.insertDtlByRows(mst_jo, rows); + mst_jo.put("total_qty", ret.getDoubleValue("total_qty")); + wo_mst.insert(mst_jo); + } + + /** + * 根据传进来的载具物料明细,查询载具所有库存记录,并生成移库明细 + * + * @param rows + */ + @Transactional(rollbackFor = Exception.class) + public JSONObject insertDtlByRows(JSONObject jsonMst, JSONArray rows) { + WQLObject wo_dtl = WQLObject.getWQLObject("st_ivt_productplandtl"); + + //定义返回数据 + JSONObject ret = new JSONObject(); + double total_qty = 0; + for (int i = 0; i < rows.size(); i++) { + JSONObject json = rows.getJSONObject(i); + + JSONObject jsonDtl = new JSONObject(); + jsonDtl.put("plandtl_id", IdUtil.getSnowflake(1, 1).nextId()); + jsonDtl.put("plan_id", jsonMst.getLongValue("plan_id")); + jsonDtl.put("seq_no", i); + jsonDtl.put("material_id", json.getLongValue("material_id")); + jsonDtl.put("pcsn", json.getString("sap_pcsn")); + //jsonDtl.put("package_box_sn", json.getString("storagevehicle_code")); + jsonDtl.put("qty_unit_id", json.getString("qty_unit_id")); + jsonDtl.put("qty_unit_name", json.getString("qty_unit_name")); + jsonDtl.put("qty", json.getDoubleValue("qty")); + jsonDtl.put("remark", json.getString("remark")); + jsonDtl.put("status", "10"); + wo_dtl.insert(jsonDtl); + + total_qty = NumberUtil.add(total_qty, json.getDoubleValue("qty")); + + } + ret.put("total_qty", total_qty); + return ret; + } + + @Override + public JSONArray getOutBillDtl(Map whereJson) { + whereJson.put("flag", "2"); + JSONArray jo = WQL.getWO("QST_IVT_PRODUCTPLAN") + .addParamMap((HashMap) whereJson) + .process() + .getResultJSONArray(0); + return jo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(JSONObject whereJson) { + //主表 + WQLObject wo_mst = WQLObject.getWQLObject("st_ivt_productplanmst"); + //主表 + WQLObject wo_dtl = WQLObject.getWQLObject("st_ivt_productplandtl"); + + String currentUserId = SecurityUtils.getCurrentUserId(); + String nickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + String plan_id = (String) whereJson.get("plan_id"); + //查询主表 + JSONObject jo_mst = wo_mst.query("plan_id='" + plan_id + "'").uniqueResult(0); + + //删除所有明细 + wo_dtl.delete("plan_id = '" + plan_id + "'"); + + //获取明细 + JSONArray rows = whereJson.getJSONArray("tableData"); + //调用明细处理方法 + JSONObject ret = this.insertDtlByRows(jo_mst, rows); + jo_mst.put("remark", whereJson.get("remark")); + jo_mst.put("biz_date", whereJson.get("biz_date")); + jo_mst.put("detail_count", rows.size()); + jo_mst.put("total_qty", ret.getString("total_qty")); + jo_mst.put("update_optid", currentUserId + ""); + jo_mst.put("update_optname", nickName); + jo_mst.put("update_time", now); + //更新主表 + wo_mst.update(jo_mst); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createBill(JSONObject whereJson) { + + WQLObject dtl_wo = WQLObject.getWQLObject("st_ivt_productplandtl"); + WQLObject mst_wo = WQLObject.getWQLObject("st_ivt_productplanmst"); + + JSONArray rows = whereJson.getJSONArray("rows"); + JSONObject mst_jo = whereJson.getJSONObject("mst_jo"); + + JSONObject jsonMst = new JSONObject(); + jsonMst.put("stor_id", mst_jo.getString("stor_id")); + jsonMst.put("stor_code", mst_jo.getString("stor_code")); + jsonMst.put("stor_name", mst_jo.getString("stor_name")); + jsonMst.put("detail_count", rows.size()); + jsonMst.put("bill_status", "10"); + jsonMst.put("create_mode", "03"); + jsonMst.put("bill_type", "1003"); + jsonMst.put("biz_date", DateUtil.now()); + jsonMst.put("user", "sap"); + + JSONArray dtls = new JSONArray(); + for (int i = 0; i < rows.size(); i++) { + JSONObject jo = rows.getJSONObject(i); + String sap_pcsn = jo.getString("pcsn"); + if (StrUtil.isEmpty("sap_pcsn")) { + throw new BadRequestException("请求参数SAP批次不能为空!"); + } + JSONObject sub_jo = WQLObject.getWQLObject("PDM_BI_SubPackageRelation").query("sap_pcsn = '" + sap_pcsn + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(sub_jo)) { + throw new BadRequestException("LMS中不存在SAP批次为【" + sap_pcsn + "】的包装关系"); + } + String container_name = sub_jo.getString("container_name"); + JSONObject struct_ivt = WQLObject.getWQLObject("st_ivt_structivt").query("pcsn = '" + container_name + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(struct_ivt)) { + throw new BadRequestException("SAP批次为【" + sap_pcsn + "】的成品卷不存在或已经出库!"); + } else { + if (struct_ivt.getDoubleValue("frozen_qty") > 0) { + throw new BadRequestException("SAP批次为【" + sap_pcsn + "】的成品卷已经被分配或出库中"); + } else { + JSONObject dtl = new JSONObject(); + //查询该物料 + JSONObject mater_jo = WQLObject.getWQLObject("md_me_materialbase").query("material_code = '" + sub_jo.getString("product_name") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(mater_jo)) { + throw new BadRequestException("未查询到物料:" + sub_jo.getString("product_name") + ",信息!"); + } + dtl.put("material_id", mater_jo.getString("material_id")); + dtl.put("pcsn", container_name); + dtl.put("box_no", sub_jo.getString("package_box_sn")); + JSONObject unit = WQLObject.getWQLObject("md_pb_measureunit").query("measure_unit_id = '" + mater_jo.getString("base_unit_id") + "'").uniqueResult(0); + if (ObjectUtil.isEmpty(unit)) { + throw new BadRequestException("未查询到物料计量单位:" + mater_jo.getString("base_unit_id") + ",信息!"); + } + dtl.put("qty_unit_id", unit.getString("measure_unit_id")); + dtl.put("qty_unit_name", unit.getString("unit_name")); + dtl.put("plan_qty", sub_jo.getString("net_weight")); + dtls.add(dtl); + } + } + + //将已经生成的明细状态变更为完成 + HashMap map = new HashMap<>(); + map.put("status", "99"); + dtl_wo.update(map, "plan_id = '" + mst_jo.getString("plan_id") + "' AND pcsn = '" + sap_pcsn + "'"); + + //判断是否全部变更为99 + JSONArray dtl_rows = dtl_wo.query("plan_id = '" + mst_jo.getString("plan_id") + "' AND status < '99' ").getResultJSONArray(0); + if (dtl_rows.size() > 0) { + //主表更新为出库中 + HashMap mst_map = new HashMap<>(); + mst_map.put("bill_status", "20"); + mst_wo.update(mst_map, "plan_id = '" + mst_jo.getString("plan_id") + "'"); + } else { + HashMap mst_map = new HashMap<>(); + mst_map.put("bill_status", "99"); + mst_map.put("confirm_optid", SecurityUtils.getCurrentUserId()); + mst_map.put("confirm_optname", SecurityUtils.getCurrentNickName()); + mst_map.put("confirm_time", DateUtil.now()); + mst_wo.update(mst_map, "plan_id = '" + mst_jo.getString("plan_id") + "'"); + } + } + + if (!dtls.isEmpty()) { + jsonMst.put("tableData", dtls); + String iostorinv_id = checkOutBillService.insertDtl(jsonMst); + + //调用自动分配 + JSONObject out_jo = new JSONObject(); + out_jo.put("iostorinv_id", iostorinv_id); + checkOutBillService.allDiv(out_jo); + } else { + throw new BadRequestException("推送失败!SAP推送的子卷明细不符合出库状态!"); + } + + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void auditOut(JSONObject whereJson) { + WQLObject mst = WQLObject.getWQLObject("st_ivt_productplanmst"); + + // 更新主表为完成 + JSONObject param = new JSONObject(); + param.put("bill_status", "99"); + param.put("confirm_optid", SecurityUtils.getCurrentUserId()); + param.put("confirm_optname", SecurityUtils.getCurrentNickName()); + param.put("confirm_time", DateUtil.now()); + mst.update(param, "plan_id = '" + whereJson.getString("plan_id") + "'"); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java index 177011b35..7e93dc461 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/EmpMoveTask.java @@ -9,18 +9,20 @@ import lombok.RequiredArgsConstructor; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; -import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.st.instor.service.impl.HandMoveStorServiceImpl; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; +/** +* @Auther:Zhouz +* @Date:2023/12/12 +* @Description:立库空载具搬运任务 + */ @Component @RequiredArgsConstructor public class EmpMoveTask extends AbstractAcsTask { diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java index 74df2cc45..022dca527 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java @@ -1,19 +1,17 @@ package org.nl.wms.st.instor.task; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; -import org.nl.modules.common.exception.BadRequestException; import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.wql.core.bean.WQLObject; import org.nl.modules.wql.util.SpringContextHolder; import org.nl.wms.sch.AcsTaskDto; import org.nl.wms.sch.manage.AbstractAcsTask; import org.nl.wms.sch.manage.TaskStatusEnum; -import org.nl.wms.sch.tasks.EmptyVehicleTask; import org.nl.wms.st.instor.service.impl.HandMoveStorServiceImpl; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql new file mode 100644 index 000000000..3ebdaa8b2 --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/wql/QST_IVT_PRODUCTPLAN.wql @@ -0,0 +1,123 @@ +[交易说明] + 交易名: 成品报废审核分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.material_code TYPEAS s_string + 输入.bill_status TYPEAS s_string + 输入.bill_code TYPEAS s_string + 输入.stor_id TYPEAS s_string + 输入.end_time TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.pcsn TYPEAS s_string + 输入.plan_id TYPEAS s_string + 输入.status TYPEAS s_string + 输入.in_stor_id TYPEAS f_string +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + mst.* + FROM + st_ivt_productplanmst mst + LEFT JOIN ( + SELECT + plan_id + FROM + st_ivt_productplandtl dtl + WHERE + 1=1 + OPTION 输入.pcsn <> "" + dtl.pcsn = 输入.pcsn + ENDOPTION + GROUP BY plan_id + ) a ON mst.plan_id = a.plan_id + WHERE + 1 = 1 + AND mst.is_delete = '0' + and mst.stor_id in 输入.in_stor_id + + OPTION 输入.bill_code <> "" + mst.plan_code like 输入.bill_code + ENDOPTION + + OPTION 输入.stor_id <> "" + mst.stor_id = 输入.stor_id + ENDOPTION + + OPTION 输入.bill_status <> "" + mst.bill_status = 输入.bill_status + ENDOPTION + + OPTION 输入.begin_time <> "" + mst.input_time >= 输入.begin_time + ENDOPTION + + OPTION 输入.end_time <> "" + mst.input_time <= 输入.end_time + ENDOPTION + + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "2" + QUERY + SELECT + dtl.*, + mater.material_code, + mater.material_name + FROM + st_ivt_productplandtl dtl + LEFT JOIN st_ivt_productplanmst mst ON mst.plan_id = dtl.plan_id + LEFT JOIN md_me_materialbase mater ON mater.material_id = dtl.material_id + WHERE + 1 = 1 + OPTION 输入.plan_id <> "" + dtl.plan_id = 输入.plan_id + ENDOPTION + + OPTION 输入.scrapdtl_id <> "" + dtl.plandtl_id = 输入.plandtl_id + ENDOPTION + + OPTION 输入.status <> "" + dtl.status = 输入.status + ENDOPTION + + order by dtl.seq_no + ENDSELECT + ENDQUERY + ENDIF \ No newline at end of file diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index 56a5e5ba9..aea29176f 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -33,7 +33,7 @@ import java.io.IOException; import java.util.*; /** - * PC端出入库新增 + * */ @Service @RequiredArgsConstructor @@ -43,6 +43,7 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { private final ISysUserService iSysUserService; + @Override public Map pageQuery(Map whereJson, Pageable page) { HashMap map = new HashMap<>(whereJson); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java index b2e97bcf3..cc34dc339 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/service/impl/InBillQueryServiceImpl.java @@ -276,7 +276,7 @@ public class InBillQueryServiceImpl implements InBillQueryService { mp.put("日期", (json.getString("confirm_time_class").substring(0,10)).replace("-","/")); mp.put("班次", json.getString("classes")); if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) { - throw new BadRequestException("子卷"+json.getString("pcsn")+"销售订单为空!"); + //throw new BadRequestException("子卷"+json.getString("pcsn")+"销售订单为空!"); } try { mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-"))); @@ -331,7 +331,7 @@ public class InBillQueryServiceImpl implements InBillQueryService { mp.put("库区", json.getString("sect_name")); mp.put("客户编码", json.getString("customer_name")); if (ObjectUtil.isEmpty(json.getString("sale_order_name"))) { - throw new BadRequestException("箱号"+json.getString("box_no")+"销售订单为空!"); + //throw new BadRequestException("箱号"+json.getString("box_no")+"销售订单为空!"); } try { mp.put("销售订单", json.getString("sale_order_name").substring(0, json.getString("sale_order_name").indexOf("-"))); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql index 0af28e587..b0081b5a9 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_INBILLQUERY.wql @@ -644,6 +644,7 @@ sub.net_weight, dis.qty_unit_name, sub.customer_name, + cust.sales_owner, sub.quanlity_in_box, sub.customer_description, sub.sale_order_name, @@ -741,6 +742,7 @@ LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name LEFT JOIN (SELECT container_name, MAX(paper_tube_or_FRP) AS paper_tube_or_FRP, @@ -837,6 +839,7 @@ MAX(mst.remark) AS remark, mst.iostorinv_id, dis.box_no, + MAX(cust.sales_owner) AS sales_owner, MAX(sub.customer_name) AS customer_name, MAX(sub.sale_order_name) AS sale_order_name, MAX(sub.date_of_production) AS date_of_production, @@ -889,6 +892,7 @@ LEFT JOIN st_ivt_sectattr sect ON sect.sect_id = dis.sect_id LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = dis.iostorinv_id + LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name WHERE mst.io_type = '0' AND mst.is_delete = '0' diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql index 293444ae3..8b65963e3 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/stat/wql/ST_IVT_OUTBILLQUERY.wql @@ -167,14 +167,15 @@ sub.customer_name, sub.customer_description, sub.sale_order_name, + cust.sales_owner, mst.input_time, sub.width, sub.thickness, sub.mass_per_unit_area, mst.input_optname, case when plan.paper_tube_or_FRP = '1' then '纸管' when plan.paper_tube_or_FRP = '2' then 'FRP管' end AS paper_type, - case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code, - case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, + case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_material when plan.paper_tube_or_FRP = '2' then plan.FRP_material end AS paper_code, + case when plan.paper_tube_or_FRP = '1' then plan.paper_tube_description when plan.paper_tube_or_FRP = '2' then plan.FRP_description end AS paper_name, mst.remark, stor.stor_name AS in_stor_name FROM @@ -210,6 +211,7 @@ LEFT JOIN md_me_materialbase mater ON mater.material_id = dis.material_id LEFT JOIN st_ivt_bsrealstorattr stor ON stor.stor_id = mst.out_stor_id INNER JOIN pdm_bi_subpackagerelationrecord sub ON sub.container_name = dis.pcsn AND sub.package_box_sn = dis.box_no AND sub.bill_id = mst.iostorinv_id + LEFT JOIN md_cs_customerbase cust ON cust.cust_code = sub.customer_name LEFT JOIN (SELECT container_name, MAX(paper_tube_or_FRP) AS paper_tube_or_FRP, diff --git a/lms/nladmin-ui/src/layout/components/Navbar.vue b/lms/nladmin-ui/src/layout/components/Navbar.vue index 28a9f475b..c2fa28cf5 100644 --- a/lms/nladmin-ui/src/layout/components/Navbar.vue +++ b/lms/nladmin-ui/src/layout/components/Navbar.vue @@ -1,31 +1,32 @@ + + diff --git a/lms/nladmin-ui/src/views/system/notice/NoticeIconReader.vue b/lms/nladmin-ui/src/views/system/notice/NoticeIconReader.vue new file mode 100644 index 000000000..b2d8250ec --- /dev/null +++ b/lms/nladmin-ui/src/views/system/notice/NoticeIconReader.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/system/notice/VueBaseCode.js b/lms/nladmin-ui/src/views/system/notice/VueBaseCode.js new file mode 100644 index 000000000..9190b1438 --- /dev/null +++ b/lms/nladmin-ui/src/views/system/notice/VueBaseCode.js @@ -0,0 +1,15 @@ +/* 消息服务 */ +/** + * 显示站内信消息 + */ +export const NOTICE_SHOW_MESSAGE = 'notice_show_message' +/** + * 通知消息发生消息更新 主要是 未读数量更新 + */ +export const NOTICE_MESSAGE_UPDATE = 'notice_message_update' + +/* 其他 */ +/** + * ws测试事件 + */ +export const EVENT_TEST_WEBSOCKET = 'event_test_websocket' diff --git a/lms/nladmin-ui/src/views/system/notice/index.vue b/lms/nladmin-ui/src/views/system/notice/index.vue new file mode 100644 index 000000000..80734d418 --- /dev/null +++ b/lms/nladmin-ui/src/views/system/notice/index.vue @@ -0,0 +1,270 @@ + + + + + diff --git a/lms/nladmin-ui/src/views/system/notice/sysNotice.js b/lms/nladmin-ui/src/views/system/notice/sysNotice.js new file mode 100644 index 000000000..a83b6880c --- /dev/null +++ b/lms/nladmin-ui/src/views/system/notice/sysNotice.js @@ -0,0 +1,94 @@ +import request from '@/utils/request' + +/** + * 获取未读信息 + * @returns {AxiosPromise} + */ +export function pageByReceive() { + return request({ + url: '/api/notice/pageByReceive', + method: 'get' + }) +} + +/** + * 未读消息数量 + */ +export function countByReceiveNotRead() { + return request({ + url: '/api/notice/countByReceiveNotRead', + method: 'GET' + }) +} + +/** + * 标记为已读 + */ +export function read(id) { + return request({ + url: '/api/notice/read', + method: 'post', + data: id + }) +} + +/** + * 标记为已修改 + */ +export function deal(id) { + return request({ + url: '/api/notice/deal', + method: 'post', + data: id + }) +} + +/** + * 批量已读 + * @param data + * @returns {*} + */ +export function changeRead(data) { + return request({ + url: 'api/notice/changeRead', + method: 'post', + data: data + }) +} + +/** + * 查看消息 + */ +export function findById(id) { + return request({ + url: '/api/notice/findById', + method: 'post', + data: id + }) +} + +export function add(data) { + return request({ + url: 'api/notice', + method: 'post', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/notice/', + method: 'delete', + data: ids + }) +} + +export function edit(data) { + return request({ + url: 'api/notice', + method: 'put', + data + }) +} + +export default { add, edit, del, pageByReceive, countByReceiveNotRead, read, findById, deal, changeRead } diff --git a/lms/nladmin-ui/src/views/wms/basedata/master/customer/index.vue b/lms/nladmin-ui/src/views/wms/basedata/master/customer/index.vue index 590122eb0..642171082 100644 --- a/lms/nladmin-ui/src/views/wms/basedata/master/customer/index.vue +++ b/lms/nladmin-ui/src/views/wms/basedata/master/customer/index.vue @@ -135,6 +135,11 @@ + + + + + @@ -161,6 +166,7 @@ + @@ -168,7 +174,7 @@ - +