diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java index 5577e2a..91fc765 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java @@ -151,12 +151,11 @@ BigDecimal personalCertificatesTotal = BigDecimal.valueOf(personalCertificatesTotalOptional.get().getPersonalCertificatesTotal()); BigDecimal certificatesTotal = BigDecimal.valueOf(certificatesTotalOptional.get().getCertificatesTotal()); if (0 == (BigDecimal.ZERO).compareTo(samplesTotal) || 0 == (BigDecimal.ZERO).compareTo(certificatesTotal)) { - dto.setOutPut("0"); + dto.setOutPut(0); } else { dto.setOutPut(actualAmount.divide(samplesTotal, 2, BigDecimal.ROUND_HALF_UP) .multiply(personalCertificatesTotal) - .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP) - .toPlainString()); + .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP).intValue()); } } } @@ -167,6 +166,16 @@ } @Override + public BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request) { + List deptOutputList = deptOutput(request); + int sum = deptOutputList.stream().mapToInt(BoardDeptOutputResponse::getOutPut).sum(); + BoardDeptOutputListResponse response = new BoardDeptOutputListResponse(); + response.setOutPutTotal(sum); + response.setList(deptOutputList); + return response; + } + + @Override public List workload(BoardBaseRequest request) { Integer lastMonth = request.getMonth() - 1; Integer lastYear = request.getYear(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java index 5577e2a..91fc765 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java @@ -151,12 +151,11 @@ BigDecimal personalCertificatesTotal = BigDecimal.valueOf(personalCertificatesTotalOptional.get().getPersonalCertificatesTotal()); BigDecimal certificatesTotal = BigDecimal.valueOf(certificatesTotalOptional.get().getCertificatesTotal()); if (0 == (BigDecimal.ZERO).compareTo(samplesTotal) || 0 == (BigDecimal.ZERO).compareTo(certificatesTotal)) { - dto.setOutPut("0"); + dto.setOutPut(0); } else { dto.setOutPut(actualAmount.divide(samplesTotal, 2, BigDecimal.ROUND_HALF_UP) .multiply(personalCertificatesTotal) - .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP) - .toPlainString()); + .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP).intValue()); } } } @@ -167,6 +166,16 @@ } @Override + public BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request) { + List deptOutputList = deptOutput(request); + int sum = deptOutputList.stream().mapToInt(BoardDeptOutputResponse::getOutPut).sum(); + BoardDeptOutputListResponse response = new BoardDeptOutputListResponse(); + response.setOutPutTotal(sum); + response.setList(deptOutputList); + return response; + } + + @Override public List workload(BoardBaseRequest request) { Integer lastMonth = request.getMonth() - 1; Integer lastYear = request.getYear(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 6536c9b..a9ac979 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -133,8 +133,6 @@ throw new BusinessException(BusinessExceptionEnum.TRACE_SUPPLIER_SAVE_FAILED); }); - //todo:存储溯源供方业务记录,待合同模块 - TraceSupplierSaveResponse traceSupplierSaveResponse = new TraceSupplierSaveResponse(); traceSupplierSaveResponse.setId(traceSupplier.getId()); traceSupplierSaveResponse.setSupplierNo(supplierNo); @@ -180,8 +178,6 @@ saveBatchFlag2 = meterTraceSupplierStandardEquipmentService.saveBatch(equipmentList); } - //todo:更新溯源供方业务记录,待合同模块 - if (updateFlag > 0 && saveFlag && saveBatchFlag2) { return ReturnUtil.success(); } @@ -387,6 +383,7 @@ @Override public ReturnDTO traceSupplierDetail(Long id) { TraceSupplierDetailResponse detailResponse = traceSupplierMapper.selectTraceSupplierById(id); + //todo:待合同模块支出合同完成后在支出合同中增加根据溯源供方id查合同列表接口 return ReturnUtil.success(detailResponse); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java index 5577e2a..91fc765 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java @@ -151,12 +151,11 @@ BigDecimal personalCertificatesTotal = BigDecimal.valueOf(personalCertificatesTotalOptional.get().getPersonalCertificatesTotal()); BigDecimal certificatesTotal = BigDecimal.valueOf(certificatesTotalOptional.get().getCertificatesTotal()); if (0 == (BigDecimal.ZERO).compareTo(samplesTotal) || 0 == (BigDecimal.ZERO).compareTo(certificatesTotal)) { - dto.setOutPut("0"); + dto.setOutPut(0); } else { dto.setOutPut(actualAmount.divide(samplesTotal, 2, BigDecimal.ROUND_HALF_UP) .multiply(personalCertificatesTotal) - .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP) - .toPlainString()); + .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP).intValue()); } } } @@ -167,6 +166,16 @@ } @Override + public BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request) { + List deptOutputList = deptOutput(request); + int sum = deptOutputList.stream().mapToInt(BoardDeptOutputResponse::getOutPut).sum(); + BoardDeptOutputListResponse response = new BoardDeptOutputListResponse(); + response.setOutPutTotal(sum); + response.setList(deptOutputList); + return response; + } + + @Override public List workload(BoardBaseRequest request) { Integer lastMonth = request.getMonth() - 1; Integer lastYear = request.getYear(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 6536c9b..a9ac979 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -133,8 +133,6 @@ throw new BusinessException(BusinessExceptionEnum.TRACE_SUPPLIER_SAVE_FAILED); }); - //todo:存储溯源供方业务记录,待合同模块 - TraceSupplierSaveResponse traceSupplierSaveResponse = new TraceSupplierSaveResponse(); traceSupplierSaveResponse.setId(traceSupplier.getId()); traceSupplierSaveResponse.setSupplierNo(supplierNo); @@ -180,8 +178,6 @@ saveBatchFlag2 = meterTraceSupplierStandardEquipmentService.saveBatch(equipmentList); } - //todo:更新溯源供方业务记录,待合同模块 - if (updateFlag > 0 && saveFlag && saveBatchFlag2) { return ReturnUtil.success(); } @@ -387,6 +383,7 @@ @Override public ReturnDTO traceSupplierDetail(Long id) { TraceSupplierDetailResponse detailResponse = traceSupplierMapper.selectTraceSupplierById(id); + //todo:待合同模块支出合同完成后在支出合同中增加根据溯源供方id查合同列表接口 return ReturnUtil.success(detailResponse); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java index 3d37caa..c001894 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java @@ -15,6 +15,8 @@ List deptOutput(BoardBaseRequest request); + BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request); + List workload(BoardBaseRequest request); List deptComprehensive(BoardDeptComprehensiveRequest request); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java index 5577e2a..91fc765 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java @@ -151,12 +151,11 @@ BigDecimal personalCertificatesTotal = BigDecimal.valueOf(personalCertificatesTotalOptional.get().getPersonalCertificatesTotal()); BigDecimal certificatesTotal = BigDecimal.valueOf(certificatesTotalOptional.get().getCertificatesTotal()); if (0 == (BigDecimal.ZERO).compareTo(samplesTotal) || 0 == (BigDecimal.ZERO).compareTo(certificatesTotal)) { - dto.setOutPut("0"); + dto.setOutPut(0); } else { dto.setOutPut(actualAmount.divide(samplesTotal, 2, BigDecimal.ROUND_HALF_UP) .multiply(personalCertificatesTotal) - .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP) - .toPlainString()); + .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP).intValue()); } } } @@ -167,6 +166,16 @@ } @Override + public BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request) { + List deptOutputList = deptOutput(request); + int sum = deptOutputList.stream().mapToInt(BoardDeptOutputResponse::getOutPut).sum(); + BoardDeptOutputListResponse response = new BoardDeptOutputListResponse(); + response.setOutPutTotal(sum); + response.setList(deptOutputList); + return response; + } + + @Override public List workload(BoardBaseRequest request) { Integer lastMonth = request.getMonth() - 1; Integer lastYear = request.getYear(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 6536c9b..a9ac979 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -133,8 +133,6 @@ throw new BusinessException(BusinessExceptionEnum.TRACE_SUPPLIER_SAVE_FAILED); }); - //todo:存储溯源供方业务记录,待合同模块 - TraceSupplierSaveResponse traceSupplierSaveResponse = new TraceSupplierSaveResponse(); traceSupplierSaveResponse.setId(traceSupplier.getId()); traceSupplierSaveResponse.setSupplierNo(supplierNo); @@ -180,8 +178,6 @@ saveBatchFlag2 = meterTraceSupplierStandardEquipmentService.saveBatch(equipmentList); } - //todo:更新溯源供方业务记录,待合同模块 - if (updateFlag > 0 && saveFlag && saveBatchFlag2) { return ReturnUtil.success(); } @@ -387,6 +383,7 @@ @Override public ReturnDTO traceSupplierDetail(Long id) { TraceSupplierDetailResponse detailResponse = traceSupplierMapper.selectTraceSupplierById(id); + //todo:待合同模块支出合同完成后在支出合同中增加根据溯源供方id查合同列表接口 return ReturnUtil.success(detailResponse); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java index 3d37caa..c001894 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java @@ -15,6 +15,8 @@ List deptOutput(BoardBaseRequest request); + BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request); + List workload(BoardBaseRequest request); List deptComprehensive(BoardDeptComprehensiveRequest request); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java index 5a147ff..fe9b6f0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java @@ -2,9 +2,11 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: @@ -20,4 +22,10 @@ ReturnDTO> tIdMiniReadList(); ReturnDTO> codeGunReadList(); + + ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException; + + ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException; + + ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java index 34b5362..f7a7e6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessBoardController.java @@ -49,8 +49,8 @@ */ @ApiOperation("部门产值分析") @PostMapping("/deptOutput") - public ReturnDTO> deptOutput(@RequestBody BoardBaseRequest request) { - return ReturnUtil.success(boardService.deptOutput(request)); + public ReturnDTO deptOutput(@RequestBody BoardBaseRequest request) { + return ReturnUtil.success(boardService.deptOutputList(request)); } /** diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java index 0a85d34..46d6dea 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessReadWriterController.java @@ -2,6 +2,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -13,6 +14,7 @@ import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: 读写器 @@ -41,7 +43,7 @@ /** * 大读写器 - * TCP连接 + * TCP连接,需配置和192.168.1.168一个段 * 读取读写器获取标签TID列表,用于标签绑定,前端从结果中选取一个标签传入标签绑定接口 */ @ApiOperation("获取大读写器识别的标签TID列表") @@ -63,7 +65,7 @@ /** * 有线扫码枪(二维码)(徐州、西昌均使用) - * USB串口连接(模拟COM口),USB模拟串行通讯模式 + * USB串口连接(模拟COM口),USB模拟串行通讯模式,连接后在设备管理器-端口(COM和LPT)可查看连接设备 * 目前设置:扫码一次读取一个,扫码结果无回车 * 二维码由样品编号/设备编号生成 * 扫描收入、扫描检完等,以及大读写器的补充(包括新建委托书和待收入中使用) @@ -75,9 +77,31 @@ } /** - * todo:以下3个结合接口需开发 - * 测量设备中标签识别按钮,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 - * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 - * 标签绑定功能,需要实现大读写器和小读写器识别结合的结果TID列表 + * 测量设备中标签识别按钮,实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为设备列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 */ + @ApiOperation("测量设备标签识别按钮接口") + @GetMapping("/equipment/label/readList") + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.equipmentLabelReadList(); + } + + /** + * 扫描收入、扫描检完、新建委托书、待收入等获取样品列表,需要实现接口调用有线扫码枪(二维码)和读写器设备结合的结果,识别的结果先展示为样品列表,点击某一个再查详情 + * 已实现有线扫码枪(二维码)和大读写器结合扫描 + */ + @ApiOperation("扫描收入、扫描检完、新建委托书、待收入等标签识别获取样品列表") + @GetMapping("/sample/label/readList") + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + return readWriterService.sampleLabelReadList(); + } + + /** + * 标签绑定功能,实现大读写器和小读写器识别结合的结果TID列表 + */ + @ApiOperation("大读写器和小读写器识别结合标签绑定功能") + @GetMapping("/all/tId/readList") + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + return readWriterService.allTidReadList(); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java index 2fd1d05..2ec7bfc 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentStateManageController.java @@ -109,7 +109,7 @@ @ApiOperation("设状态管理申请新建") @PostMapping("/addStateManageInfo") @ResponseBody - public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) throws Exception{ + public ReturnDTO addStateManageInfo(@RequestBody @Valid EquipmentApply meterEquipmentApply, BindingResult bindingResult) { if(bindingResult.hasErrors()){ throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -137,7 +137,7 @@ @ApiOperation("状态管理列表导出") @PostMapping("/exportStateManageList") @ResponseBody - public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) throws Exception{ + public void exportStateManageList(@RequestBody StateManageRequest request, HttpServletResponse response) { try { stateManageService.exportStateManageList(request,response); }catch (Exception e){ diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index a132505..9c31e9c 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java @@ -52,6 +52,7 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), + NO_PROPERLY_CONNECTED(500, "请正确连接扫码设备"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), @@ -63,7 +64,7 @@ SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), - READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), + READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请正确连接读写器"), READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java new file mode 100644 index 0000000..2717f92 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputListResponse.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.business.board; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/4/11 15:25 + */ +@ApiModel +@Data +public class BoardDeptOutputListResponse { + @ApiModelProperty(value = "产值总计(单位分)", dataType = "Integer") + private Integer outPutTotal; + + @ApiModelProperty(value = "产值数据列表", dataType = "List") + private List list; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java index a133482..e3ea5ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/board/BoardDeptOutputResponse.java @@ -25,8 +25,8 @@ @Data public class BoardDeptOutputResponse extends BoardBaseResponse { @ExcelProperty(value = "产值统计", order = 10) - @ApiModelProperty(value = "产值统计(单位分)", dataType = "String") - private String outPut; + @ApiModelProperty(value = "产值统计(单位分)", dataType = "Integer") + private Integer outPut; //合同实际收款金额,计算产值统计使用 @ApiModelProperty(hidden = true) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java index aee4fe2..cdfa706 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentApply.java @@ -100,7 +100,7 @@ */ @TableField("apply_unit") @ApiModelProperty(value = "申请单位", dataType = "String") - private String applyUnit; + private Long applyUnit; @TableField(exist = false) @ExcelProperty(value = "申请单位",order = 2) @@ -112,7 +112,7 @@ */ @TableField("apply_person") @ApiModelProperty(value = "申请人", dataType = "String") - private String applyPerson; + private Long applyPerson; @TableField(exist = false) @ExcelProperty(value = "申请人",order = 3) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java index e1712e9..825b77e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentUseLog.java @@ -53,7 +53,7 @@ */ @TableField("use_dept") @ApiModelProperty(value = "使用部门", dataType = "String") - private String useDept; + private Long useDept; /** * 使用部门名称 @@ -66,7 +66,7 @@ * 使用人 */ @ApiModelProperty(value = "使用人", dataType = "String") - private String usePerson; + private Long usePerson; /** * 使用人名称 @@ -139,7 +139,7 @@ @ApiModelProperty(value = "更新时间", dataType = "String", required = false) private String updateTime; - public EquipmentUseLog(Long applyId, Long equipmentId, String useDept, String usePerson, String useType, String startDate, String endDate) { + public EquipmentUseLog(Long applyId, Long equipmentId, Long useDept, Long usePerson, String useType, String startDate, String endDate) { this.applyId = applyId; this.equipmentId = equipmentId; this.useDept = useDept; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java index 8ef2d39..55fe3f9 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessReadWriterServiceImpl.java @@ -6,8 +6,10 @@ import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.MeterFixedAssetsMapper; import com.casic.missiles.mapper.customer.CustomerSampleMapper; import com.casic.missiles.model.customer.CustomerSampleInfo; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessReadWriterService; import com.casic.missiles.service.listeners.device.CodeGunDataListener; import com.casic.missiles.utils.ConvertUtils; @@ -18,17 +20,15 @@ import com.gg.reader.api.protocol.gx.*; import com.gg.reader.api.utils.UsbHidUtils; import gnu.io.SerialPort; +import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.hid4java.HidDevice; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import java.util.*; +import java.util.concurrent.*; /** * @Description: 读写器相关业务 @@ -40,6 +40,10 @@ public class BusinessReadWriterServiceImpl implements IBusinessReadWriterService { @Autowired private CustomerSampleMapper sampleMapper; + @Autowired + private MeterFixedAssetsMapper meterFixedAssetsMapper; + @Autowired + private ForkJoinPool forkJoinPool; public static SerialPort serialPort = null; @@ -55,11 +59,7 @@ Set tIds = receiveTIds(client); //查询标签样品信息 - QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.in("label_bind", tIds); - wrapper.eq("is_del", 0); - List customerSampleInfos = sampleMapper.selectList(wrapper); - List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + List resultList = queryReadSampleList(tIds); return ReturnUtil.success(resultList); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); @@ -75,9 +75,13 @@ try { //if (client.openSerial("COM11:115200", 2000)) if (!client.openTcp("192.168.1.168:8160", 0)) { - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } - return ReturnUtil.success(receiveTIds(client)); + Set tIds = receiveTIds(client); + if(CollectionUtils.isEmpty(tIds)){ + return ReturnUtil.failed(BusinessExceptionEnum.FAIL_READ_EPC_TID.getCode(), BusinessExceptionEnum.FAIL_READ_EPC_TID.getMessage()); + } + return ReturnUtil.success(tIds); } catch (InterruptedException e) { log.error("读写器循环读取事件时间设置,异常信息:{}", e.getMessage()); return ReturnUtil.failed(); @@ -93,7 +97,7 @@ try { List attachedHidDevices = UsbHidUtils.getAttachedHidDevices(); if(CollectionUtils.isEmpty(attachedHidDevices)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED.getMessage()); } //循环每个USB接口数据 for (HidDevice hidDevice : attachedHidDevices) { @@ -102,7 +106,7 @@ } } if(CollectionUtils.isEmpty(tIds)){ - throw new BusinessException(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID); + return ReturnUtil.failed(BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getCode(), BusinessExceptionEnum.READ_WRITER_NOT_CONNECTED_OR_NO_TID.getMessage()); } return ReturnUtil.success(tIds); } catch (InterruptedException e) { @@ -121,7 +125,10 @@ //添加监听器 serialPortUtil = SerialPortUtil.getSerialPortUtil(); List ports = serialPortUtil.findPort(); - log.info("有线扫码枪,当前可用串口:", ports); + log.info("有线扫码枪,当前可用串口:{}", ports); + if(CollectionUtils.isEmpty(ports)) { + return ReturnUtil.failed(BusinessExceptionEnum.NO_PROPERLY_CONNECTED.getMessage()); + } for (String port : ports) { //有线扫码枪已经设置的是一次读取一个,要是多个这里逻辑需要调整 serialPort = serialPortUtil.openPort(port, 19200, SerialPort.DATABITS_8, SerialPort.PARITY_NONE, SerialPort.PARITY_ODD); @@ -133,9 +140,9 @@ CodeGunDataListener.dataSet = new HashSet<>(); } catch (Exception e){ log.error("有线扫码枪识别失败,异常:", e.getMessage()); - throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + return ReturnUtil.failed(BusinessExceptionEnum.HANDLE_FAILED.getMessage()); } finally { - if(Objects.nonNull(serialPortUtil)){ + if(Objects.nonNull(serialPortUtil) && Objects.nonNull(serialPort)){ //删除监听器 serialPortUtil.removeListener(serialPort, new CodeGunDataListener()); serialPortUtil.closePort(serialPort); @@ -144,6 +151,121 @@ return ReturnUtil.success(resultSet); } + @Override + public ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //获取设备列表 + List firstFixedAssets = new ArrayList<>(); + List secondFixedAssets = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + QueryWrapper gunQueryWrapper = new QueryWrapper<>(); + gunQueryWrapper.eq("is_del", 0); + gunQueryWrapper.in("equipment_no", gunSet); + firstFixedAssets = meterFixedAssetsMapper.selectList(gunQueryWrapper); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + QueryWrapper tIdsQueryWrapper = new QueryWrapper<>(); + tIdsQueryWrapper.eq("is_del", 0); + tIdsQueryWrapper.in("label_bind", tIdsSet); + secondFixedAssets = meterFixedAssetsMapper.selectList(tIdsQueryWrapper); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstFixedAssets); + resultList.addAll(secondFixedAssets); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //有线扫码枪(二维码)识别设备id列表 + Set gunSet = queryGunReturnDTO(this.codeGunReadList()); + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + //样品列表 + List firstSamples = new ArrayList<>(); + List secondSamples = new ArrayList<>(); + if(!CollectionUtils.isEmpty(gunSet)){ + firstSamples = queryGunReadSampleList(gunSet); + } + if(!CollectionUtils.isEmpty(tIdsSet)){ + secondSamples = queryReadSampleList(tIdsSet); + } + List resultList = new ArrayList<>(); + resultList.addAll(firstSamples); + resultList.addAll(secondSamples); + return ReturnUtil.success(resultList); + } + + @Override + public ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException { + //异步请求大读写器 + ForkJoinTask>> taskResponse = forkJoinPool.submit(new RecursiveTask>>() { + @SneakyThrows + @Override + protected ReturnDTO> compute() { + return tIdReadList(); + } + }); + //小读写器识别tId列表 + ReturnDTO> minTIdReturnDTO = this.tIdMiniReadList(); + Set minTIdsSet = new HashSet<>(); + if (ReturnUtil.success().getCode().equals(minTIdReturnDTO.getCode()) && Objects.nonNull(minTIdReturnDTO.getData())) { + minTIdsSet.addAll(minTIdReturnDTO.getData()); + } + //大读写器识别tId列表 + Set tIdsSet = queryGunReturnDTO(taskResponse.get()); + Set resultSet = new HashSet<>(); + resultSet.addAll(tIdsSet); + resultSet.addAll(minTIdsSet); + return ReturnUtil.success(resultSet); + } + + private List queryGunReadSampleList(Set gunSet) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("sample_no", gunSet); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private List queryReadSampleList(Set tIds) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("is_del", 0); + wrapper.in("label_bind", tIds); + List customerSampleInfos = sampleMapper.selectList(wrapper); + List resultList = ConvertUtils.sourceToTarget(customerSampleInfos, ReadSampleDTO.class); + return resultList; + } + + private Set queryGunReturnDTO(ReturnDTO> setReturnDTO) { + Set gunSet = new HashSet<>(); + ReturnDTO> gunReturnDTO = setReturnDTO; + if (ReturnUtil.success().getCode().equals(gunReturnDTO.getCode()) && Objects.nonNull(gunReturnDTO.getData())) { + gunSet.addAll(gunReturnDTO.getData()); + } + return gunSet; + } + private Set receiveTIds(GClient client) throws InterruptedException { Set tIds = new HashSet<>(); //标签上报事件、结束事件订阅 @@ -165,7 +287,7 @@ } else { log.info("EPC、TID标签读取失败"); client.close(); - throw new BusinessException(BusinessExceptionEnum.FAIL_READ_EPC_TID); + return new HashSet<>(); } //连续读取,让事件接收3秒,也可采用单次读取方式(没有连续读取识别效果好) TimeUnit.SECONDS.sleep(3); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java index 5577e2a..91fc765 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/IBusinessBoardServiceImpl.java @@ -151,12 +151,11 @@ BigDecimal personalCertificatesTotal = BigDecimal.valueOf(personalCertificatesTotalOptional.get().getPersonalCertificatesTotal()); BigDecimal certificatesTotal = BigDecimal.valueOf(certificatesTotalOptional.get().getCertificatesTotal()); if (0 == (BigDecimal.ZERO).compareTo(samplesTotal) || 0 == (BigDecimal.ZERO).compareTo(certificatesTotal)) { - dto.setOutPut("0"); + dto.setOutPut(0); } else { dto.setOutPut(actualAmount.divide(samplesTotal, 2, BigDecimal.ROUND_HALF_UP) .multiply(personalCertificatesTotal) - .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP) - .toPlainString()); + .divide(certificatesTotal, 0, BigDecimal.ROUND_HALF_UP).intValue()); } } } @@ -167,6 +166,16 @@ } @Override + public BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request) { + List deptOutputList = deptOutput(request); + int sum = deptOutputList.stream().mapToInt(BoardDeptOutputResponse::getOutPut).sum(); + BoardDeptOutputListResponse response = new BoardDeptOutputListResponse(); + response.setOutPutTotal(sum); + response.setList(deptOutputList); + return response; + } + + @Override public List workload(BoardBaseRequest request) { Integer lastMonth = request.getMonth() - 1; Integer lastYear = request.getYear(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 6536c9b..a9ac979 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -133,8 +133,6 @@ throw new BusinessException(BusinessExceptionEnum.TRACE_SUPPLIER_SAVE_FAILED); }); - //todo:存储溯源供方业务记录,待合同模块 - TraceSupplierSaveResponse traceSupplierSaveResponse = new TraceSupplierSaveResponse(); traceSupplierSaveResponse.setId(traceSupplier.getId()); traceSupplierSaveResponse.setSupplierNo(supplierNo); @@ -180,8 +178,6 @@ saveBatchFlag2 = meterTraceSupplierStandardEquipmentService.saveBatch(equipmentList); } - //todo:更新溯源供方业务记录,待合同模块 - if (updateFlag > 0 && saveFlag && saveBatchFlag2) { return ReturnUtil.success(); } @@ -387,6 +383,7 @@ @Override public ReturnDTO traceSupplierDetail(Long id) { TraceSupplierDetailResponse detailResponse = traceSupplierMapper.selectTraceSupplierById(id); + //todo:待合同模块支出合同完成后在支出合同中增加根据溯源供方id查合同列表接口 return ReturnUtil.success(detailResponse); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java index 3d37caa..c001894 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessBoardService.java @@ -15,6 +15,8 @@ List deptOutput(BoardBaseRequest request); + BoardDeptOutputListResponse deptOutputList(BoardBaseRequest request); + List workload(BoardBaseRequest request); List deptComprehensive(BoardDeptComprehensiveRequest request); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java index 5a147ff..fe9b6f0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessReadWriterService.java @@ -2,9 +2,11 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.dispatch.ReadSampleDTO; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import java.util.List; import java.util.Set; +import java.util.concurrent.ExecutionException; /** * @Description: @@ -20,4 +22,10 @@ ReturnDTO> tIdMiniReadList(); ReturnDTO> codeGunReadList(); + + ReturnDTO> equipmentLabelReadList() throws ExecutionException, InterruptedException; + + ReturnDTO> sampleLabelReadList() throws ExecutionException, InterruptedException; + + ReturnDTO> allTidReadList() throws ExecutionException, InterruptedException; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/EquipmentManagingEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/EquipmentManagingEventPostProcessor.java index f5cfb15..99d28fb 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/EquipmentManagingEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/EquipmentManagingEventPostProcessor.java @@ -57,7 +57,7 @@ EquipmentApply equipmentApply = equipmentApplyMapper.selectById(id); // 新增状态变更记录 for (EquipmentApplyEquipment equipment : equipmentApplyEquipments) { - EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, Long.parseLong(equipmentApply.getApplyPerson())); + EquipmentStateChangeLog stateChangeLog = new EquipmentStateChangeLog(Long.parseLong(id), Long.parseLong(equipment.getEquipmentId()), state, DateUtils.format(new Date()), null, equipmentApply.getApplyPerson()); if (stateChangeLogMapper.insert(stateChangeLog) <= 0) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); }