diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@ - SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@ - SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@ - SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java new file mode 100644 index 0000000..8160c2f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/20 11:22 + */ +@Data +@ApiModel +public class UpdateExecutiveListDTO { + @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") + private Long id; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + @NotNull(message = "检测顺序不能为空") + private Integer measureSequence; + + @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") + private String measureStatus; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java new file mode 100644 index 0000000..8160c2f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/20 11:22 + */ +@Data +@ApiModel +public class UpdateExecutiveListDTO { + @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") + private Long id; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + @NotNull(message = "检测顺序不能为空") + private Integer measureSequence; + + @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") + private String measureStatus; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java index 6a50280..1c72cc0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java @@ -26,5 +26,5 @@ @NotEmpty(message = "实验室检测列表不能为空") @ApiModelProperty(value = "实验室检测列表", dataType = "List") - private List executiveList; + private List executiveList; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java new file mode 100644 index 0000000..8160c2f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/20 11:22 + */ +@Data +@ApiModel +public class UpdateExecutiveListDTO { + @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") + private Long id; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + @NotNull(message = "检测顺序不能为空") + private Integer measureSequence; + + @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") + private String measureStatus; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java index 6a50280..1c72cc0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java @@ -26,5 +26,5 @@ @NotEmpty(message = "实验室检测列表不能为空") @ApiModelProperty(value = "实验室检测列表", dataType = "List") - private List executiveList; + private List executiveList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java new file mode 100644 index 0000000..6499ca6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 9:12 + */ +@Data +@ApiModel +public class UpdateExecutiveRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "检定人员不能为空") + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "应出具证书总数", dataType = "Integer") + private Integer requireCertifications; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java new file mode 100644 index 0000000..8160c2f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/20 11:22 + */ +@Data +@ApiModel +public class UpdateExecutiveListDTO { + @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") + private Long id; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + @NotNull(message = "检测顺序不能为空") + private Integer measureSequence; + + @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") + private String measureStatus; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java index 6a50280..1c72cc0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java @@ -26,5 +26,5 @@ @NotEmpty(message = "实验室检测列表不能为空") @ApiModelProperty(value = "实验室检测列表", dataType = "List") - private List executiveList; + private List executiveList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java new file mode 100644 index 0000000..6499ca6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 9:12 + */ +@Data +@ApiModel +public class UpdateExecutiveRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "检定人员不能为空") + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "应出具证书总数", dataType = "Integer") + private Integer requireCertifications; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java index 9f91158..afdc42a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java @@ -19,9 +19,13 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.*; import com.casic.missiles.mapper.meter.MeterOrganizeMapper; -import com.casic.missiles.model.business.*; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessLabExecutiveInfo; +import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; +import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; import com.casic.missiles.service.business.IBusinessLabExecutiveTemplateInfoService; +import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.extern.slf4j.Slf4j; @@ -120,12 +124,15 @@ } @Override - public SampleHandOutDetailResponse handOutListDetail(SampleHandOutDetailRequest handOutDetailRequest) throws Exception{ + public SampleHandOutDetailResponse handOutListDetail(SampleHandOutDetailRequest request) throws Exception{ //根据样品id和委托书id查询样品、委托书、委托方 - SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(handOutDetailRequest); + SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(request.getOrderId(), request.getSampleId()); + if(Objects.isNull(sampleDetail)){ + throw new BusinessException(BusinessExceptionEnum.NON_EXIST_ORDER_OR_SAMPLE); + } //根据样品id和委托书id查询检定流程、退回信息 - List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(handOutDetailRequest); - List measureSendBackDTOS = labExecutiveOperateLogMapper.selectExecutiveOperateLogList(handOutDetailRequest); + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(request.getOrderId(), request.getSampleId()); + List measureSendBackDTOS = labExecutiveOperateLogMapper.selectExecutiveOperateLogList(request.getOrderId(), request.getSampleId()); sampleDetail.setMeasureProcessList(measureProcessDTOS); sampleDetail.setMeasureSendBackList(measureSendBackDTOS); DictCodeUtils.convertDictCodeToName(sampleDetail); @@ -305,7 +312,7 @@ } @Override - public ReturnDTO sampleReceive(List requestList) { + public ReturnDTO sampleReceive(List requestList) { //扫描收入会显示扫进来哪些,检测人员确定要扫描的样品后,调用接口,接口中查询是否在该用户的待检测中有该样品,没有则返回提示信息,有则更新状态 //该接口前应该有个根据标签查询样品信息的接口(查样品和委托书关联表中最新的委托书的样品列表) AuthUser user = ShiroKit.getUser(); @@ -314,7 +321,10 @@ }); Long userId = user.getId(); //查询扫描样品中为该用户待检测中的样品列表 - List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE); + List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE); + if(CollectionUtils.isEmpty(preList)){ + throw new BusinessException(BusinessExceptionEnum.RECEIVE_SAMPLE_NOT_EXIST); + } int updateFlag = labExecutiveInfoMapper.updateForSampleOperate(preList, userId, MeasureStatusEnum.IN_MEASURE); if(updateFlag > 0){ return ReturnUtil.success(); @@ -324,7 +334,7 @@ @Override @Transactional - public ReturnDTO sampleExecutiveComplete(List requestList) { + public ReturnDTO sampleExecutiveComplete(List requestList) { //查询是否在该用户的检测中有该样品,没有则返回提示信息,有则更新检测状态、更新样品状态(判断是否全部实验室检测完成) AuthUser user = ShiroKit.getUser(); Assert.isFalse(Objects.isNull(user), () -> { @@ -332,23 +342,23 @@ }); Long userId = user.getId(); //查询扫描样品中为该用户检测中的样品列表 - List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE); + List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE); if(CollectionUtils.isEmpty(preList)){ throw new BusinessException(BusinessExceptionEnum.COMPLETE_SAMPLE_NOT_EXIST); } int updateFlag = labExecutiveInfoMapper.updateForSampleOperate(preList, userId, MeasureStatusEnum.MEASURE_COMPLETE); if(updateFlag > 0){ - preList.forEach(pre -> { //是否全部实验室完成,所有实验室无检测完外的其他状态或空才是样品的检测完(有终止状态会把样品状态直接更新为待归还,有退回的状态会从表中删除加入到log表) QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", pre.getOrderId()); wrapper.eq("sample_id", pre.getSampleId()); - List labExecutiveInfos = labExecutiveInfoMapper.selectList(wrapper); + List labExecutiveInfos = labExecutiveInfoMapper.selectList(wrapper);//可查到updateFlag更新后的值 List unExecutiveInfos = labExecutiveInfos.stream().filter(lab -> StringUtils.isEmpty(lab.getMeasureStatus()) || !StringUtils.equals(MeasureStatusEnum.MEASURE_COMPLETE, lab.getMeasureStatus()) ).collect(Collectors.toList()); - if(0 == (CollectionUtils.isEmpty(unExecutiveInfos) ? 0 : unExecutiveInfos.size())){ + //全部实验室检测完成 + if(CollectionUtils.isEmpty(unExecutiveInfos)){ //更新样品状态为检测完 orderSampleRelationMapper.updateByOrderIdAndSampleId(pre.getOrderId(), pre.getSampleId(), SampleStatusEnum.MEASURE_COMPLETE); // TODO: 2023/2/17 委托书中所有样品检测完更新委托书接收状态为检测完成,需求待定 @@ -393,8 +403,8 @@ @Override public ReturnDTO updateExecutiveList(UpdateExecutiveListRequest request) { //删除前端已删除的ids - List executiveList = request.getExecutiveList(); - List ids = executiveList.stream().map(UpdateExecutiveDTO::getId).filter(Objects::nonNull).collect(Collectors.toList()); + List executiveList = request.getExecutiveList(); + List ids = executiveList.stream().map(UpdateExecutiveListDTO::getId).filter(Objects::nonNull).collect(Collectors.toList()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", request.getOrderId()); wrapper.eq("sample_id", request.getSampleId()); @@ -406,7 +416,7 @@ List updateList = new ArrayList<>(); //新增之前不存在的实验室列表(根据id判断) List addList = new ArrayList<>(); - for (UpdateExecutiveDTO executiveDTO : executiveList) { + for (UpdateExecutiveListDTO executiveDTO : executiveList) { if(StringUtils.isNotEmpty(executiveDTO.getMeasureStatus())) continue; if(Objects.isNull(executiveDTO.getId())){ BusinessLabExecutiveInfo labExecutiveInfo = new BusinessLabExecutiveInfo(); @@ -431,6 +441,77 @@ return ReturnUtil.success(); } + @Override + public ReturnDTO updateExecutive(UpdateExecutiveRequest request) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if(request.getMeasurePersonId() != user.getId()){ + throw new BusinessException(BusinessExceptionEnum.CANNOT_CHANGE_MEASURE_INFO); + } + BusinessLabExecutiveInfo executiveInfo = new BusinessLabExecutiveInfo(); + executiveInfo.setId(request.getId()); + executiveInfo.setRequireCertifications(request.getRequireCertifications()); + if(labExecutiveInfoMapper.updateById(executiveInfo) > 0){ + return ReturnUtil.success(); + } + log.info("更新实验室应出具证书信息失败,主键id:{}", request.getId()); + return ReturnUtil.failed(); + } + + @Override + public ExecutiveDetailResponse executiveDetail(ExecutiveDetailRequest request) throws Exception{ + //根据样品id和委托书id查询样品、委托书、委托方 + SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(request.getOrderId(), request.getSampleId()); + if(Objects.isNull(sampleDetail)){ + throw new BusinessException(BusinessExceptionEnum.NON_EXIST_ORDER_OR_SAMPLE); + } + ExecutiveDetailResponse detailResponse = ConvertUtils.sourceToTarget(sampleDetail, ExecutiveDetailResponse.class); + //根据样品id和委托书id查询检定流程 + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(request.getOrderId(), request.getSampleId()); + detailResponse.setMeasureProcessList(measureProcessDTOS); + DictCodeUtils.convertDictCodeToName(detailResponse); + return detailResponse; + } + + @Override + @Transactional + public ReturnDTO sampleExecutiveSendBack(ExecutiveSendBackRequest request) { + //查询是否在该用户的检测中有该样品,没有则返回提示信息,有则更新检测状态、更新样品状态(判断是否全部实验室检测完成) + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + //删除实验室检测列表中退回数据 + int deleteFlag = labExecutiveInfoMapper.deleteById(request.getId()); + //退回操作记录表中增加数据 + BusinessLabExecutiveOperateLog operateLog = new BusinessLabExecutiveOperateLog(); + operateLog.setOrderId(request.getOrderId()); + operateLog.setSampleId(request.getSampleId()); + operateLog.setMeasureDeptId(request.getMeasureSegmentId()); + operateLog.setMeasurePersonId(request.getMeasurePersonId()); + operateLog.setOperatePersonId(userId); + operateLog.setOperatePersonName(user.getName()); + operateLog.setMeasureStatus(MeasureStatusEnum.SEND_BACK); + operateLog.setOperateReason(request.getOperateReason()); + int insertFlag = labExecutiveOperateLogMapper.insert(operateLog); + if(deleteFlag > 0 && insertFlag > 0){ + //退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + //更新所有状态为空的实验室检测的序号为当前减1 + int seqUpdateFlag = labExecutiveInfoMapper.updateForSendBack(request.getOrderId(), request.getSampleId()); + //更新所有状态为空的实验室检测中序号最小的记录的状态为待分配 + Long id = labExecutiveInfoMapper.selectMinSeq(request.getOrderId(), request.getSampleId()); + BusinessLabExecutiveInfo info = new BusinessLabExecutiveInfo(); + info.setId(id); + info.setMeasureStatus(MeasureStatusEnum.TO_ALLOCATE); + int statusUpdateFlag = labExecutiveInfoMapper.updateById(info); + if(seqUpdateFlag > 0 && statusUpdateFlag > 0) return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + private QueryWrapper getOperateLogWrapper(SampleHandOutListResponse handOut) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", handOut.getOrderId()); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java index c14c3be..aa330f9 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessLabExecutiveInfoController.java @@ -7,6 +7,7 @@ import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; +import com.casic.missiles.enums.ExportEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -25,9 +26,9 @@ *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 前端控制器 * 样品状态(任务收发&任务分发使用,委托书和样品关联表中的状态): - * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 + * 1:待收入;2:待分发;3:检测中;4:检测完成;5:待归还;6:已归还;7:无需检测;8:已超期 * 实验室检定状态(实验室检测使用,实验室检定信息记录表中的状态): - * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) + * 1:待分配(负责人);2:待检测(检定人);3:检测完成;4:退回;5:终止(已收入中点击终止更新实验室中待分配和待检测的的状态为已终止) *

* * @author wangpeng @@ -135,7 +136,7 @@ @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") @PostMapping("/myExecutive/receive") @ResponseBody - public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -148,7 +149,7 @@ @ApiOperation("实验室检测-负责人/检定人扫描检完(检测中->检测完)") @PostMapping("/myExecutive/complete") @ResponseBody - public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { + public ReturnDTO sampleExecutiveComplete(@RequestBody @Valid List requestList, BindingResult bindingResult) { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } @@ -158,25 +159,49 @@ /** * 实验室检测-部门检测/我的检测 编辑(只能修改应出具证书) */ + @ApiOperation("实验室检测-部门检测/我的检测 编辑(只能修改应出具证书)") + @PostMapping("/executive/update") + @ResponseBody + public ReturnDTO updateExecutive(@RequestBody @Valid UpdateExecutiveRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.updateExecutive(request); + } /** * 实验室检测-部门检测/我的检测 详情 */ + @ApiOperation("实验室检测-部门检测/我的检测 详情") + @PostMapping("/executive/detail") + @ResponseBody + public ReturnDTO executiveDetail(@RequestBody @Valid ExecutiveDetailRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.executiveDetail(request)); + } /** * 实验室检测-部门检测/我的检测 退回(待检测/检测中->退回) - * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1,) - * 可能出现最后一个检测的实验室退回,这样的情况是否需要把样品状态改为检测完,还是等分发员再增加实验室或增加个分发员点击完成的按钮 + * 退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + * 最后一个检测的实验室退回,等分发员再增加实验室或设备收发中的已收入直接手动点击完成 */ - - - + @ApiOperation("实验室检测-部门检测/我的检测 退回(待检测/检测中->退回)") + @PostMapping("/executive/sendBack") + @ResponseBody + public ReturnDTO executiveSendBack(@RequestBody @Valid ExecutiveSendBackRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleExecutiveSendBack(request); + } /** * 分发员编辑实验室检测列表 */ @ApiOperation("分发员编辑实验室检测列表") - @PostMapping("/handOut/updateExecutiveList") + @PostMapping("/handOut/updateList") @ResponseBody public ReturnDTO updateExecutiveList(@RequestBody @Valid UpdateExecutiveListRequest request, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -185,9 +210,23 @@ return labExecutiveInfoService.updateExecutiveList(request); } - /** - * 各列表导出 + * 各状态列表导出 */ + @ApiOperation("任务分发-各状态列表导出") + @PostMapping("/handOut/listExport") + @ResponseBody + public void export(@RequestBody @Valid SampleHandOutListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + page.setCurrent(1); + page.setSearchCount(false); + page.setSize(Integer.MAX_VALUE); + Page responsePage = labExecutiveInfoService.handOutListPage(page, request); + List list = responsePage.getRecords(); + super.exportExcel(SampleHandOutListResponse.class, list, ExportEnum.HANDOUT_EXPORT.getSheetName()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index 9637b3a..7f8c1e7 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -79,7 +79,7 @@ @ApiOperation("文件导出") @PostMapping("/listExport") @ResponseBody - public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { + public void export(@RequestBody @Valid FileListRequest request, BindingResult bindingResult) throws IOException { if (bindingResult.hasErrors()) { throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); } 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 9e3d9fd..0c1cf2d 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 @@ -53,7 +53,9 @@ HANDLE_FAILED(500, "操作失败"), QRCODE_FAILED(2409, "二维码生成失败"), RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"), - COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"); + COMPLETE_SAMPLE_NOT_EXIST(2411, "检测中不存在扫描收入的样品"), + CANNOT_CHANGE_MEASURE_INFO(2412, "无法更改非当前登录用户的检测信息"), + NON_EXIST_ORDER_OR_SAMPLE(2413, "不存在该委托单或该委托单下的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java index 06a3fd8..a43d9c9 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ExportEnum.java @@ -36,7 +36,8 @@ DISPATCH_DATA("dispatchData", "dispatchData", "设备收发"), ENVIRONMENT_DATA("environmentData", "environmentData", "环境记录单"), ORIGIN_DATA("originData", "originData", "原始记录"), - ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"); + ADVICE_EXPORT("adviceData", "adviceData", "客户反馈"), + HANDOUT_EXPORT("handoutData", "handoutData", "任务分发列表"); ExportEnum(String fileName, String sheetName, String description) { this.fileName = fileName; diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java index e4cd952..2ce14af 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveInfoMapper.java @@ -22,13 +22,17 @@ Integer getMeasureNumberStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); - List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); Page selectListByDeptIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("deptId") Long deptId, @Param("status") String status, @Param("statusList") List statusList); Page selectListByUserIdAndStatus(Page page, @Param("request") SampleLabExecutiveListRequest request, @Param("userId") Long userId, @Param("status") String status); - int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); + int updateForSampleOperate(@Param("list") List list, @Param("userId") Long userId, @Param("status") String status); - List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + List selectListForSampleOperate(@Param("list") List requestList, @Param("userId") Long userId, @Param("status") String status); + + int updateForSendBack(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); + + Long selectMinSeq(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java index ed6f4a1..2bcc4e1 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveOperateLogMapper.java @@ -2,7 +2,6 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.casic.missiles.dto.business.MeasureSendBackDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; import org.apache.ibatis.annotations.Param; @@ -19,5 +18,5 @@ */ public interface BusinessLabExecutiveOperateLogMapper extends BaseMapper { - List selectExecutiveOperateLogList(@Param("request") SampleHandOutDetailRequest request); + List selectExecutiveOperateLogList(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java index 235c95f..bddf56f 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOrderSampleRelationMapper.java @@ -5,7 +5,6 @@ import com.casic.missiles.dto.business.SampleHandOutDetailResponse; import com.casic.missiles.dto.business.SampleHandOutListRequest; import com.casic.missiles.dto.business.SampleHandOutListResponse; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; import com.casic.missiles.dto.business.dispatch.DeviceDispatchDTO; import com.casic.missiles.dto.business.dispatch.DeviceDispatchVO; import com.casic.missiles.dto.customer.sample.CustomerSampleListVO; @@ -28,7 +27,7 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); - SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + SampleHandOutDetailResponse selectSampleDetail(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId, @Param("status") String status); diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml index 92402b7..87613eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -31,8 +31,8 @@ - csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status + blei.id AS id, csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, blei.require_certifications, blei.measure_status @@ -161,7 +161,7 @@
- SELECT order_id, sample_id FROM business_lab_executive_info WHERE measure_person_id = #{userId} @@ -171,4 +171,27 @@ (#{item.orderId}, #{item.sampleId}) + + + UPDATE business_lab_executive_info + SET measure_sequence = measure_sequence - 1 + WHERE (measure_status IS NULL OR measure_status = "") + AND order_id = #{orderId} + AND sample_id = #{sampleId} + + + + diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml index 9f6c97f..0a0b861 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -25,8 +25,8 @@ FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID WHERE measure_status = 4 - AND bleoi.order_id = #{request.orderId} - AND bleoi.sample_id = #{request.sampleId} + AND bleoi.order_id = #{orderId} + AND bleoi.sample_id = #{sampleId} ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index c9b53d4..a2b0806 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -18,7 +18,7 @@ csi.id AS sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, bo.order_code AS orderNo, bo.id AS orderId, - bo.customer_id, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status + bo.customer_id, bo.customer_no, bo.customer_name, bo.deliverer, bo.is_urgent, csi.sample_belong, bo.require_over_time, bosr.sample_status @@ -136,6 +136,12 @@ AND csi.sample_belong = #{request.sampleBelong} + + AND csi.id IN + + #{item} + + ORDER BY bosr.update_time DESC @@ -146,8 +152,8 @@ JOIN customer_sample_info csi ON bosr.sample_id = csi.id JOIN business_order bo ON bosr.order_id = bo.id WHERE bo.is_del = 0 AND csi.is_del = 0 - AND bosr.order_id = #{request.orderId} - AND bosr.sample_id = #{request.sampleId} + AND bosr.order_id = #{orderId} + AND bosr.sample_id = #{sampleId} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java new file mode 100644 index 0000000..8817b91 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:00 + */ +@Data +@ApiModel +public class ExecutiveDetailRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java new file mode 100644 index 0000000..35452b9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveDetailResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * @Description: 任务分发-详情 + * @Author: wangpeng + * @Date: 2023/2/9 11:41 + */ +@Data +@ApiModel +public class ExecutiveDetailResponse { + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "样品型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "生产厂家", dataType = "String") + private String manufacturer; + + @ApiModelProperty(value = "厂家国别", dataType = "String") + private String manufacturerCountry; + + @ApiModelProperty(value = "出厂年月", dataType = "String") + private String manufacturingDate; + + @ApiModelProperty(value = "ABC", dataType = "String") + private String abc; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String customerPhone; + + //需求中有,建议去掉,否则多关联一张表 +// @ApiModelProperty(value = "委托方邮编", dataType = "String") +// private String postalCode; + +// @ApiModelProperty(value = "委托方公司地址-国家", dataType = "String") +// private String addressCountry; +// +// @ApiModelProperty(value = "委托方公司地址-省", dataType = "String") +// private String addressProvince; +// +// @ApiModelProperty(value = "委托方公司地址-市", dataType = "String") +// private String addressCity; +// +// @ApiModelProperty(value = "委托方公司地址-区", dataType = "String") +// private String addressArea; + + @ApiModelProperty(value = "委托方公司地址-详细地址", dataType = "String") + private String customerAddress; + +// @ApiModelProperty(value = "委托方公司地址-国家名字", dataType = "String") +// private String addressCountryName; +// +// @ApiModelProperty(value = "委托方公司地址-省名字", dataType = "String") +// private String addressProvinceName; +// +// @ApiModelProperty(value = "委托方公司地址-市名字", dataType = "String") +// private String addressCityName; +// +// @ApiModelProperty(value = "委托方公司地址-区名字", dataType = "String") +// private String addressAreaName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private String orderId; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + + @ApiModelProperty(value = "送样人", dataType = "String") + private String deliverer; + + @ApiModelProperty(value = "送样人联系方式", dataType = "String") + private String delivererTel; + + @ApiModelProperty(value = "预约送达时间", dataType = "String") + private String planDeliverTime; + + @ApiModelProperty(value = "要求检完时间", dataType = "String") + private String requireOverTime; + + @ApiModelProperty(value = "检定项目", dataType = "String") + private String measureContent; + + @ApiModelProperty(value = "检定周期(月)", dataType = "String") + private String measurePeriod; + + @ApiModelProperty(value = "检定日期", dataType = "String") + private String measureLastDate; + + @ApiModelProperty(value = "有效日期", dataType = "String") + private String effectiveDate; + + //需求中已删除该字段展示,不展示整个样品的检定结果,只在证书里展示各证书的检定结果 +// @ApiModelProperty(value = "检定结果", dataType = "String") +// private String measureResult; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(value = "说明书", dataType = "String") + private String minioFileName; + + @ApiModelProperty(value = "检定方式(字典code)", dataType = "String") + @DictCodeField(message = "检定方式不合法", cacheName = MeterDictCode.MEASURE_TYPE) + private String measureType; + + @ApiModelProperty(value = "检定方式(字典value)", dataType = "String") + private String measureTypeName; + + @ApiModelProperty(value = "标签绑定", dataType = "String") + private String labelBind; + + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java new file mode 100644 index 0000000..832f707 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/ExecutiveSendBackRequest.java @@ -0,0 +1,38 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 10:29 + */ +@Data +@ApiModel +public class ExecutiveSendBackRequest { + @NotNull(message = "实验室检测id不能为空") + @ApiModelProperty(value = "实验室检测id", dataType = "Long") + private Long id; + + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "退回原因", dataType = "Long") + private String operateReason; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java deleted file mode 100644 index 15f2fe9..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleOperateRequest.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 - * @Author: wangpeng - * @Date: 2023/2/15 15:31 - */ -@Data -@ApiModel -public class MySampleOperateRequest { - @NotNull(message = "委托书id不能为空") - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @NotNull(message = "样品id不能为空") - @ApiModelProperty(value = "样品id", dataType = "Long") - private Long sampleId; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java index 5a9d04a..7daf5b9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListRequest.java @@ -7,6 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotBlank; +import java.util.List; @Data @ApiModel @@ -44,4 +45,7 @@ @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") private String sampleBelong; + @ApiModelProperty(value = "筛选样品ids(sampleId列表,导出使用)", dataType = "List") + private List ids; + } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java index 0e34812..d2a665e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutListResponse.java @@ -46,9 +46,12 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) @@ -91,7 +94,7 @@ @ExcelProperty(value = "分发性质", order = 14) private String handOutProperty; - @JSONField(serialize = false) + @ApiModelProperty(value = "委托书id", dataType = "String") private Long orderId; @JSONField(serialize = false) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java index 89f18b9..9e31fa0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -22,6 +22,8 @@ @ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) @ExcelIgnoreUnannotated public class SampleLabExecutiveListResponse { + @ApiModelProperty(value = "实验室检测id(退回操作中使用)", dataType = "Long") + private Long id; @ApiModelProperty(value = "样品id", dataType = "Long") private Long sampleId; @@ -46,9 +48,13 @@ @ExcelProperty(value = "委托书编号", order = 4) private String orderNo; + @ApiModelProperty(value = "委托方id", dataType = "String") +// @ExcelProperty(value = "委托方id", order = 5) + private Long customerId; + @ApiModelProperty(value = "委托方代码", dataType = "String") @ExcelProperty(value = "委托方代码", order = 5) - private String customerId; + private String customerNo; @ApiModelProperty(value = "委托方名称", dataType = "String") @ExcelProperty(value = "委托方名称", order = 6) diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java new file mode 100644 index 0000000..86f3ebc --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleOperateRequest.java @@ -0,0 +1,24 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 实验室检测-我的检测-检定人扫描收入请求实体 + * @Author: wangpeng + * @Date: 2023/2/15 15:31 + */ +@Data +@ApiModel +public class SampleOperateRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java deleted file mode 100644 index eb1210a..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveDTO.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.casic.missiles.dto.business; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; - -/** - * @Description: - * @Author: wangpeng - * @Date: 2023/2/20 11:22 - */ -@Data -@ApiModel -public class UpdateExecutiveDTO { - @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") - private Long id; - - @NotNull(message = "检定环节不能为空") - @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") - private Long measureSegmentId; - - @ApiModelProperty(value = "检定人员id", dataType = "Long") - private Long measurePersonId; - - @ApiModelProperty(value = "检测顺序", dataType = "Integer") - @NotNull(message = "检测顺序不能为空") - private Integer measureSequence; - - @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") - private String measureStatus; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java new file mode 100644 index 0000000..8160c2f --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListDTO.java @@ -0,0 +1,33 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/20 11:22 + */ +@Data +@ApiModel +public class UpdateExecutiveListDTO { + @ApiModelProperty(value = "主键id(有则必传)", dataType = "Long") + private Long id; + + @NotNull(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + @NotNull(message = "检测顺序不能为空") + private Integer measureSequence; + + @ApiModelProperty(value = "检定状态(字典code)(流程中不能编辑的节点必传参数)", dataType = "String") + private String measureStatus; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java index 6a50280..1c72cc0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveListRequest.java @@ -26,5 +26,5 @@ @NotEmpty(message = "实验室检测列表不能为空") @ApiModelProperty(value = "实验室检测列表", dataType = "List") - private List executiveList; + private List executiveList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java new file mode 100644 index 0000000..6499ca6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/UpdateExecutiveRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: + * @Author: wangpeng + * @Date: 2023/2/21 9:12 + */ +@Data +@ApiModel +public class UpdateExecutiveRequest { + @NotNull(message = "id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @NotNull(message = "检定人员不能为空") + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + + @ApiModelProperty(value = "应出具证书总数", dataType = "Integer") + private Integer requireCertifications; +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java index 9f91158..afdc42a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessLabExecutiveInfoServiceImpl.java @@ -19,9 +19,13 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.*; import com.casic.missiles.mapper.meter.MeterOrganizeMapper; -import com.casic.missiles.model.business.*; +import com.casic.missiles.model.business.BusinessCertificateReport; +import com.casic.missiles.model.business.BusinessLabExecutiveInfo; +import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; +import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; import com.casic.missiles.service.business.IBusinessLabExecutiveTemplateInfoService; +import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import lombok.extern.slf4j.Slf4j; @@ -120,12 +124,15 @@ } @Override - public SampleHandOutDetailResponse handOutListDetail(SampleHandOutDetailRequest handOutDetailRequest) throws Exception{ + public SampleHandOutDetailResponse handOutListDetail(SampleHandOutDetailRequest request) throws Exception{ //根据样品id和委托书id查询样品、委托书、委托方 - SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(handOutDetailRequest); + SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(request.getOrderId(), request.getSampleId()); + if(Objects.isNull(sampleDetail)){ + throw new BusinessException(BusinessExceptionEnum.NON_EXIST_ORDER_OR_SAMPLE); + } //根据样品id和委托书id查询检定流程、退回信息 - List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(handOutDetailRequest); - List measureSendBackDTOS = labExecutiveOperateLogMapper.selectExecutiveOperateLogList(handOutDetailRequest); + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(request.getOrderId(), request.getSampleId()); + List measureSendBackDTOS = labExecutiveOperateLogMapper.selectExecutiveOperateLogList(request.getOrderId(), request.getSampleId()); sampleDetail.setMeasureProcessList(measureProcessDTOS); sampleDetail.setMeasureSendBackList(measureSendBackDTOS); DictCodeUtils.convertDictCodeToName(sampleDetail); @@ -305,7 +312,7 @@ } @Override - public ReturnDTO sampleReceive(List requestList) { + public ReturnDTO sampleReceive(List requestList) { //扫描收入会显示扫进来哪些,检测人员确定要扫描的样品后,调用接口,接口中查询是否在该用户的待检测中有该样品,没有则返回提示信息,有则更新状态 //该接口前应该有个根据标签查询样品信息的接口(查样品和委托书关联表中最新的委托书的样品列表) AuthUser user = ShiroKit.getUser(); @@ -314,7 +321,10 @@ }); Long userId = user.getId(); //查询扫描样品中为该用户待检测中的样品列表 - List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE); + List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.TO_MEASURE); + if(CollectionUtils.isEmpty(preList)){ + throw new BusinessException(BusinessExceptionEnum.RECEIVE_SAMPLE_NOT_EXIST); + } int updateFlag = labExecutiveInfoMapper.updateForSampleOperate(preList, userId, MeasureStatusEnum.IN_MEASURE); if(updateFlag > 0){ return ReturnUtil.success(); @@ -324,7 +334,7 @@ @Override @Transactional - public ReturnDTO sampleExecutiveComplete(List requestList) { + public ReturnDTO sampleExecutiveComplete(List requestList) { //查询是否在该用户的检测中有该样品,没有则返回提示信息,有则更新检测状态、更新样品状态(判断是否全部实验室检测完成) AuthUser user = ShiroKit.getUser(); Assert.isFalse(Objects.isNull(user), () -> { @@ -332,23 +342,23 @@ }); Long userId = user.getId(); //查询扫描样品中为该用户检测中的样品列表 - List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE); + List preList = labExecutiveInfoMapper.selectListForSampleOperate(requestList, userId, MeasureStatusEnum.IN_MEASURE); if(CollectionUtils.isEmpty(preList)){ throw new BusinessException(BusinessExceptionEnum.COMPLETE_SAMPLE_NOT_EXIST); } int updateFlag = labExecutiveInfoMapper.updateForSampleOperate(preList, userId, MeasureStatusEnum.MEASURE_COMPLETE); if(updateFlag > 0){ - preList.forEach(pre -> { //是否全部实验室完成,所有实验室无检测完外的其他状态或空才是样品的检测完(有终止状态会把样品状态直接更新为待归还,有退回的状态会从表中删除加入到log表) QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", pre.getOrderId()); wrapper.eq("sample_id", pre.getSampleId()); - List labExecutiveInfos = labExecutiveInfoMapper.selectList(wrapper); + List labExecutiveInfos = labExecutiveInfoMapper.selectList(wrapper);//可查到updateFlag更新后的值 List unExecutiveInfos = labExecutiveInfos.stream().filter(lab -> StringUtils.isEmpty(lab.getMeasureStatus()) || !StringUtils.equals(MeasureStatusEnum.MEASURE_COMPLETE, lab.getMeasureStatus()) ).collect(Collectors.toList()); - if(0 == (CollectionUtils.isEmpty(unExecutiveInfos) ? 0 : unExecutiveInfos.size())){ + //全部实验室检测完成 + if(CollectionUtils.isEmpty(unExecutiveInfos)){ //更新样品状态为检测完 orderSampleRelationMapper.updateByOrderIdAndSampleId(pre.getOrderId(), pre.getSampleId(), SampleStatusEnum.MEASURE_COMPLETE); // TODO: 2023/2/17 委托书中所有样品检测完更新委托书接收状态为检测完成,需求待定 @@ -393,8 +403,8 @@ @Override public ReturnDTO updateExecutiveList(UpdateExecutiveListRequest request) { //删除前端已删除的ids - List executiveList = request.getExecutiveList(); - List ids = executiveList.stream().map(UpdateExecutiveDTO::getId).filter(Objects::nonNull).collect(Collectors.toList()); + List executiveList = request.getExecutiveList(); + List ids = executiveList.stream().map(UpdateExecutiveListDTO::getId).filter(Objects::nonNull).collect(Collectors.toList()); QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", request.getOrderId()); wrapper.eq("sample_id", request.getSampleId()); @@ -406,7 +416,7 @@ List updateList = new ArrayList<>(); //新增之前不存在的实验室列表(根据id判断) List addList = new ArrayList<>(); - for (UpdateExecutiveDTO executiveDTO : executiveList) { + for (UpdateExecutiveListDTO executiveDTO : executiveList) { if(StringUtils.isNotEmpty(executiveDTO.getMeasureStatus())) continue; if(Objects.isNull(executiveDTO.getId())){ BusinessLabExecutiveInfo labExecutiveInfo = new BusinessLabExecutiveInfo(); @@ -431,6 +441,77 @@ return ReturnUtil.success(); } + @Override + public ReturnDTO updateExecutive(UpdateExecutiveRequest request) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if(request.getMeasurePersonId() != user.getId()){ + throw new BusinessException(BusinessExceptionEnum.CANNOT_CHANGE_MEASURE_INFO); + } + BusinessLabExecutiveInfo executiveInfo = new BusinessLabExecutiveInfo(); + executiveInfo.setId(request.getId()); + executiveInfo.setRequireCertifications(request.getRequireCertifications()); + if(labExecutiveInfoMapper.updateById(executiveInfo) > 0){ + return ReturnUtil.success(); + } + log.info("更新实验室应出具证书信息失败,主键id:{}", request.getId()); + return ReturnUtil.failed(); + } + + @Override + public ExecutiveDetailResponse executiveDetail(ExecutiveDetailRequest request) throws Exception{ + //根据样品id和委托书id查询样品、委托书、委托方 + SampleHandOutDetailResponse sampleDetail = orderSampleRelationMapper.selectSampleDetail(request.getOrderId(), request.getSampleId()); + if(Objects.isNull(sampleDetail)){ + throw new BusinessException(BusinessExceptionEnum.NON_EXIST_ORDER_OR_SAMPLE); + } + ExecutiveDetailResponse detailResponse = ConvertUtils.sourceToTarget(sampleDetail, ExecutiveDetailResponse.class); + //根据样品id和委托书id查询检定流程 + List measureProcessDTOS = labExecutiveInfoMapper.selectExecutiveList(request.getOrderId(), request.getSampleId()); + detailResponse.setMeasureProcessList(measureProcessDTOS); + DictCodeUtils.convertDictCodeToName(detailResponse); + return detailResponse; + } + + @Override + @Transactional + public ReturnDTO sampleExecutiveSendBack(ExecutiveSendBackRequest request) { + //查询是否在该用户的检测中有该样品,没有则返回提示信息,有则更新检测状态、更新样品状态(判断是否全部实验室检测完成) + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + //删除实验室检测列表中退回数据 + int deleteFlag = labExecutiveInfoMapper.deleteById(request.getId()); + //退回操作记录表中增加数据 + BusinessLabExecutiveOperateLog operateLog = new BusinessLabExecutiveOperateLog(); + operateLog.setOrderId(request.getOrderId()); + operateLog.setSampleId(request.getSampleId()); + operateLog.setMeasureDeptId(request.getMeasureSegmentId()); + operateLog.setMeasurePersonId(request.getMeasurePersonId()); + operateLog.setOperatePersonId(userId); + operateLog.setOperatePersonName(user.getName()); + operateLog.setMeasureStatus(MeasureStatusEnum.SEND_BACK); + operateLog.setOperateReason(request.getOperateReason()); + int insertFlag = labExecutiveOperateLogMapper.insert(operateLog); + if(deleteFlag > 0 && insertFlag > 0){ + //退回后会将下一个要执行的实验室检测状态更新为待分配,将后面的实验室顺序变更为连续(都进行减1) + //更新所有状态为空的实验室检测的序号为当前减1 + int seqUpdateFlag = labExecutiveInfoMapper.updateForSendBack(request.getOrderId(), request.getSampleId()); + //更新所有状态为空的实验室检测中序号最小的记录的状态为待分配 + Long id = labExecutiveInfoMapper.selectMinSeq(request.getOrderId(), request.getSampleId()); + BusinessLabExecutiveInfo info = new BusinessLabExecutiveInfo(); + info.setId(id); + info.setMeasureStatus(MeasureStatusEnum.TO_ALLOCATE); + int statusUpdateFlag = labExecutiveInfoMapper.updateById(info); + if(seqUpdateFlag > 0 && statusUpdateFlag > 0) return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + private QueryWrapper getOperateLogWrapper(SampleHandOutListResponse handOut) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("order_id", handOut.getOrderId()); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessLabExecutiveInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessLabExecutiveInfoService.java index 29b2949..d709c42 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessLabExecutiveInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessLabExecutiveInfoService.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.business.ExecutiveDetailRequest; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; @@ -30,9 +31,15 @@ Page myLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) throws Exception; - ReturnDTO sampleReceive(List requestList); + ReturnDTO sampleReceive(List requestList); - ReturnDTO sampleExecutiveComplete(List requestList); + ReturnDTO sampleExecutiveComplete(List requestList); ReturnDTO updateExecutiveList(UpdateExecutiveListRequest requestList); + + ReturnDTO updateExecutive(UpdateExecutiveRequest request); + + ExecutiveDetailResponse executiveDetail(ExecutiveDetailRequest request) throws Exception; + + ReturnDTO sampleExecutiveSendBack(ExecutiveSendBackRequest request); }