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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java index 0452c0c..3080b28 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java @@ -76,7 +76,7 @@ * 是否自动检定(使用自动检定软件/手动检定) */ @TableField("is_auto") - private Boolean isAuto; + private Integer isAuto; /** * 应出具证书总数 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java index 0452c0c..3080b28 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java @@ -76,7 +76,7 @@ * 是否自动检定(使用自动检定软件/手动检定) */ @TableField("is_auto") - private Boolean isAuto; + private Integer isAuto; /** * 应出具证书总数 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java index 5cd5d1e..23629ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java @@ -134,6 +134,14 @@ @TableField("phone") private String phone; + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + @TableField("is_lab") + private Integer isLab; + + @ApiModelProperty(value = "实验室能力", dataType = "String") + @TableField("lab_capacity") + private String labCapacity; + /** * 备注 */ 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java index 0452c0c..3080b28 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java @@ -76,7 +76,7 @@ * 是否自动检定(使用自动检定软件/手动检定) */ @TableField("is_auto") - private Boolean isAuto; + private Integer isAuto; /** * 应出具证书总数 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java index 5cd5d1e..23629ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java @@ -134,6 +134,14 @@ @TableField("phone") private String phone; + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + @TableField("is_lab") + private Integer isLab; + + @ApiModelProperty(value = "实验室能力", dataType = "String") + @TableField("lab_capacity") + private String labCapacity; + /** * 备注 */ 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 09c5074..4cdc384 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 @@ -1,17 +1,20 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; -import com.casic.missiles.enums.CurrentSegmentEnum; -import com.casic.missiles.enums.HandOutPropertyEnum; -import com.casic.missiles.enums.MeasureStatusEnum; -import com.casic.missiles.enums.SampleStatusEnum; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveInfoMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveOperateLogMapper; -import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.enums.*; +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.BusinessCertificateReport; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; @@ -20,10 +23,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -44,6 +48,10 @@ private BusinessOrderSampleRelationMapper orderSampleRelationMapper; @Autowired private BusinessLabExecutiveOperateLogMapper labExecutiveOperateLogMapper; + @Autowired + private BusinessLabExecutiveTemplateInfoMapper labExecutiveTemplateInfoMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; @Override public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{ @@ -75,7 +83,7 @@ if (Objects.isNull(handOutLabExecutiveDTO)) break; handOut.setCurrentSegment(handOutLabExecutiveDTO.getDeptName()); Long measureDeptId = handOutLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, measureDeptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), measureDeptId)); handOut.setRequireCertifications(handOutLabExecutiveDTO.getRequireCertifications()); break; //检测完状态,分发性质:无,当前检定环节:完成,已出具证书:无,出具证书总数:无 @@ -92,7 +100,7 @@ HandOutLabExecutiveDTO overLabExecutiveDTO = getHandOutLabExecutiveDTO(orderId, sampleId); handOut.setCurrentSegment(overLabExecutiveDTO.getDeptName()); Long deptId = overLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, deptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), deptId)); handOut.setRequireCertifications(overLabExecutiveDTO.getRequireCertifications()); break; } @@ -116,6 +124,177 @@ } + @Override + public List handOutInitList(SampleHandOutInitListRequest handOutInitListRequest) { + //是否存在样品的实验室检定信息标准模板 + //后续可采用该方式和模板分类方式实现自动分发 + List initListResponses = labExecutiveTemplateInfoMapper.selectExecutiveList(handOutInitListRequest); + if(!CollectionUtils.isEmpty(initListResponses)){ + return initListResponses; + } + //根据样品的检定项目去关键字匹配实验室能力信息 + String[] split = handOutInitListRequest.getMeasureContent().split(","); + List list = Arrays.asList(split); + //返回列表分发员需要调整,后续不建议采用该方式实现自动分发 + List initListResponseList = organizeMapper.selectListByLabCapacity(list); + String now = DateUtil.now(); + initListResponseList.forEach(response -> { + response.setUpdateTime(now); + }); + return initListResponseList; + } + + @Override + @Transactional + public ReturnDTO handOut(SampleHandOutRequest handOutRequest) { + Long orderId = handOutRequest.getOrderId(); + Long sampleId = handOutRequest.getSampleId(); + List measureProcessList = handOutRequest.getMeasureProcessList(); + List sortedList = measureProcessList.stream().sorted(Comparator.comparing(HandOutProcessDTO::getMeasureSequence)).collect(Collectors.toList()); + //检定流程加入实验室记录表 + List labExecutiveInfos = new ArrayList<>(); + for (int i = 0; i < sortedList.size(); i++) { + BusinessLabExecutiveInfo labExecutiveInfo = new BusinessLabExecutiveInfo(); + if(0 == i){ + //将第一个置为待分配(负责人可查看) + labExecutiveInfo.setMeasureStatus(MeasureStatusEnum.TO_ALLOCATE); + } + HandOutProcessDTO handOutProcessDTO = sortedList.get(i); + labExecutiveInfo.setOrderId(orderId); + labExecutiveInfo.setSampleId(sampleId); + labExecutiveInfo.setMeasureDeptId(handOutProcessDTO.getMeasureSegmentId()); + labExecutiveInfo.setMeasurePersonId(handOutProcessDTO.getMeasurePersonId()); + labExecutiveInfo.setMeasureSequence(handOutProcessDTO.getMeasureSequence()); + labExecutiveInfo.setIsAuto(0);//默认手动检定 + labExecutiveInfo.setRequireCertifications(handOutProcessDTO.getRequireCertifications()); + labExecutiveInfo.setCreateUser(ShiroKit.getUser().getId()); + labExecutiveInfos.add(labExecutiveInfo); + } + //更新样品状态为检测中 + int updateFlag = orderSampleRelationMapper.updateByOrderIdAndSampleId(orderId, sampleId); + if(this.saveBatch(labExecutiveInfos) && updateFlag> 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Page deptLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + //本级部门主管可见本部门的检测 + //根据用户id查询,用户角色中TIPS为director即为主管,取用户的部门id + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Map resultMap = SqlRunner.db().selectOne( + "SELECT su.DEPT_ID as deptId, sd.SIMPLE_NAME AS deptName FROM sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + + "JOIN sys_dept sd ON su.DEPT_ID = sd.ID" + + "WHERE su.ID = {0}" + + "AND sr.TIPS = {1}", String.valueOf(user.getId()), "director"); + if(CollectionUtils.isEmpty(resultMap) || Objects.isNull(resultMap.get("deptId"))){ + return new Page<>(); + } + Long deptId = (Long) resultMap.get("deptId"); + String deptName = (String) resultMap.get("deptName"); + //获取部门下的各检测状态列表 + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询待分配状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.TO_ALLOCATE, null); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(deptName); + }); + break; + + //检测中,查询待检测和检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表(检测中,待检测无),证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + List statusList = new ArrayList<>(); + statusList.add(MeasureStatusEnum.TO_MEASURE); + statusList.add(MeasureStatusEnum.IN_MEASURE); + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId,null, statusList); + resultPage.getRecords().parallelStream().forEach(lab -> { + lab.setCurrentSegment(deptName); + //查询证书报告表 + if(MeasureStatusEnum.IN_MEASURE.equals(lab.getMeasureStatus())){ + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), deptId); + lab.setAlreadyCertifications(alreadyCertificateNum); + } + }); + break; + + //检测完,查询检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.MEASURE_COMPLETE, null); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public Page myLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询本人待检测状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.TO_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + }); + break; + + //检测中,查询本人检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表,证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.IN_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + //本实验室在一个流程中若有多次检测,这里的证书信息是多次的总和,已出具的是当前本人的(后续根据需求定义调整) + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), lab.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + }); + break; + + //检测完,查询本人检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.MEASURE_COMPLETE); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public ReturnDTO sampleReceive(List requestList) { + //扫描收入会显示扫进来哪些,检测人员确定要扫描的样品后,调用接口,接口中查询是否在该用户的待检测中有该样品,没有则返回提示信息,有则更新状态 + //该接口前应该有个根据标签查询样品信息的接口(查样品和委托书关联表中最新的委托书的样品列表) + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + int updateFlag = labExecutiveInfoMapper.updateForSampleReceive(requestList, userId); + if(updateFlag > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.RECEIVE_SAMPLE_NOT_EXIST); + } + private QueryWrapper getOperateLogWrapper(SampleHandOutListResponse handOut) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("orderId", handOut.getOrderId()); @@ -124,10 +303,10 @@ return wrapper; } - private QueryWrapper getCertificateReportWrapper(SampleHandOutListResponse handOut, Long deptId) { + private QueryWrapper getCertificateReportWrapper(Long orderId, Long sampleId, Long deptId) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("orderId", handOut.getOrderId()); - wrapper.eq("sampleId", handOut.getSampleId()); + wrapper.eq("orderId", orderId); + wrapper.eq("sampleId", sampleId); wrapper.eq("measure_dept_id", deptId); return wrapper; } @@ -142,9 +321,24 @@ return handOutLabExecutiveDTO; } - private Integer getAlreadyCertificateNum(SampleHandOutListResponse handOut, Long measureDeptId) { - Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(handOut, measureDeptId)); + private Integer getAlreadyCertificateNum(Long orderId, Long sampleId, Long measureDeptId) { + Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(orderId, sampleId, measureDeptId)); return aLong.intValue(); } + private void enrichLabExecutiveRecords(Page resultPage) { + resultPage.getRecords().parallelStream().forEach(lab -> { + List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(lab.getOrderId(), lab.getSampleId()); + //未在进行中的实验室则为检测完成(可能存在终止的情况,也算为检测完成) + if (CollectionUtils.isEmpty(labExecutiveList)) { + lab.setCurrentSegment(CurrentSegmentEnum.COMPLETE); + } else { + HandOutLabExecutiveDTO dto = labExecutiveList.get(0); + lab.setCurrentSegment(dto.getDeptName()); + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), dto.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + lab.setRequireCertifications(dto.getRequireCertifications()); + } + }); + } } 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java index 0452c0c..3080b28 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java @@ -76,7 +76,7 @@ * 是否自动检定(使用自动检定软件/手动检定) */ @TableField("is_auto") - private Boolean isAuto; + private Integer isAuto; /** * 应出具证书总数 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java index 5cd5d1e..23629ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java @@ -134,6 +134,14 @@ @TableField("phone") private String phone; + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + @TableField("is_lab") + private Integer isLab; + + @ApiModelProperty(value = "实验室能力", dataType = "String") + @TableField("lab_capacity") + private String labCapacity; + /** * 备注 */ 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 09c5074..4cdc384 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 @@ -1,17 +1,20 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; -import com.casic.missiles.enums.CurrentSegmentEnum; -import com.casic.missiles.enums.HandOutPropertyEnum; -import com.casic.missiles.enums.MeasureStatusEnum; -import com.casic.missiles.enums.SampleStatusEnum; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveInfoMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveOperateLogMapper; -import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.enums.*; +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.BusinessCertificateReport; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; @@ -20,10 +23,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -44,6 +48,10 @@ private BusinessOrderSampleRelationMapper orderSampleRelationMapper; @Autowired private BusinessLabExecutiveOperateLogMapper labExecutiveOperateLogMapper; + @Autowired + private BusinessLabExecutiveTemplateInfoMapper labExecutiveTemplateInfoMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; @Override public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{ @@ -75,7 +83,7 @@ if (Objects.isNull(handOutLabExecutiveDTO)) break; handOut.setCurrentSegment(handOutLabExecutiveDTO.getDeptName()); Long measureDeptId = handOutLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, measureDeptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), measureDeptId)); handOut.setRequireCertifications(handOutLabExecutiveDTO.getRequireCertifications()); break; //检测完状态,分发性质:无,当前检定环节:完成,已出具证书:无,出具证书总数:无 @@ -92,7 +100,7 @@ HandOutLabExecutiveDTO overLabExecutiveDTO = getHandOutLabExecutiveDTO(orderId, sampleId); handOut.setCurrentSegment(overLabExecutiveDTO.getDeptName()); Long deptId = overLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, deptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), deptId)); handOut.setRequireCertifications(overLabExecutiveDTO.getRequireCertifications()); break; } @@ -116,6 +124,177 @@ } + @Override + public List handOutInitList(SampleHandOutInitListRequest handOutInitListRequest) { + //是否存在样品的实验室检定信息标准模板 + //后续可采用该方式和模板分类方式实现自动分发 + List initListResponses = labExecutiveTemplateInfoMapper.selectExecutiveList(handOutInitListRequest); + if(!CollectionUtils.isEmpty(initListResponses)){ + return initListResponses; + } + //根据样品的检定项目去关键字匹配实验室能力信息 + String[] split = handOutInitListRequest.getMeasureContent().split(","); + List list = Arrays.asList(split); + //返回列表分发员需要调整,后续不建议采用该方式实现自动分发 + List initListResponseList = organizeMapper.selectListByLabCapacity(list); + String now = DateUtil.now(); + initListResponseList.forEach(response -> { + response.setUpdateTime(now); + }); + return initListResponseList; + } + + @Override + @Transactional + public ReturnDTO handOut(SampleHandOutRequest handOutRequest) { + Long orderId = handOutRequest.getOrderId(); + Long sampleId = handOutRequest.getSampleId(); + List measureProcessList = handOutRequest.getMeasureProcessList(); + List sortedList = measureProcessList.stream().sorted(Comparator.comparing(HandOutProcessDTO::getMeasureSequence)).collect(Collectors.toList()); + //检定流程加入实验室记录表 + List labExecutiveInfos = new ArrayList<>(); + for (int i = 0; i < sortedList.size(); i++) { + BusinessLabExecutiveInfo labExecutiveInfo = new BusinessLabExecutiveInfo(); + if(0 == i){ + //将第一个置为待分配(负责人可查看) + labExecutiveInfo.setMeasureStatus(MeasureStatusEnum.TO_ALLOCATE); + } + HandOutProcessDTO handOutProcessDTO = sortedList.get(i); + labExecutiveInfo.setOrderId(orderId); + labExecutiveInfo.setSampleId(sampleId); + labExecutiveInfo.setMeasureDeptId(handOutProcessDTO.getMeasureSegmentId()); + labExecutiveInfo.setMeasurePersonId(handOutProcessDTO.getMeasurePersonId()); + labExecutiveInfo.setMeasureSequence(handOutProcessDTO.getMeasureSequence()); + labExecutiveInfo.setIsAuto(0);//默认手动检定 + labExecutiveInfo.setRequireCertifications(handOutProcessDTO.getRequireCertifications()); + labExecutiveInfo.setCreateUser(ShiroKit.getUser().getId()); + labExecutiveInfos.add(labExecutiveInfo); + } + //更新样品状态为检测中 + int updateFlag = orderSampleRelationMapper.updateByOrderIdAndSampleId(orderId, sampleId); + if(this.saveBatch(labExecutiveInfos) && updateFlag> 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Page deptLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + //本级部门主管可见本部门的检测 + //根据用户id查询,用户角色中TIPS为director即为主管,取用户的部门id + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Map resultMap = SqlRunner.db().selectOne( + "SELECT su.DEPT_ID as deptId, sd.SIMPLE_NAME AS deptName FROM sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + + "JOIN sys_dept sd ON su.DEPT_ID = sd.ID" + + "WHERE su.ID = {0}" + + "AND sr.TIPS = {1}", String.valueOf(user.getId()), "director"); + if(CollectionUtils.isEmpty(resultMap) || Objects.isNull(resultMap.get("deptId"))){ + return new Page<>(); + } + Long deptId = (Long) resultMap.get("deptId"); + String deptName = (String) resultMap.get("deptName"); + //获取部门下的各检测状态列表 + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询待分配状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.TO_ALLOCATE, null); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(deptName); + }); + break; + + //检测中,查询待检测和检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表(检测中,待检测无),证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + List statusList = new ArrayList<>(); + statusList.add(MeasureStatusEnum.TO_MEASURE); + statusList.add(MeasureStatusEnum.IN_MEASURE); + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId,null, statusList); + resultPage.getRecords().parallelStream().forEach(lab -> { + lab.setCurrentSegment(deptName); + //查询证书报告表 + if(MeasureStatusEnum.IN_MEASURE.equals(lab.getMeasureStatus())){ + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), deptId); + lab.setAlreadyCertifications(alreadyCertificateNum); + } + }); + break; + + //检测完,查询检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.MEASURE_COMPLETE, null); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public Page myLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询本人待检测状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.TO_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + }); + break; + + //检测中,查询本人检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表,证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.IN_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + //本实验室在一个流程中若有多次检测,这里的证书信息是多次的总和,已出具的是当前本人的(后续根据需求定义调整) + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), lab.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + }); + break; + + //检测完,查询本人检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.MEASURE_COMPLETE); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public ReturnDTO sampleReceive(List requestList) { + //扫描收入会显示扫进来哪些,检测人员确定要扫描的样品后,调用接口,接口中查询是否在该用户的待检测中有该样品,没有则返回提示信息,有则更新状态 + //该接口前应该有个根据标签查询样品信息的接口(查样品和委托书关联表中最新的委托书的样品列表) + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + int updateFlag = labExecutiveInfoMapper.updateForSampleReceive(requestList, userId); + if(updateFlag > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.RECEIVE_SAMPLE_NOT_EXIST); + } + private QueryWrapper getOperateLogWrapper(SampleHandOutListResponse handOut) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("orderId", handOut.getOrderId()); @@ -124,10 +303,10 @@ return wrapper; } - private QueryWrapper getCertificateReportWrapper(SampleHandOutListResponse handOut, Long deptId) { + private QueryWrapper getCertificateReportWrapper(Long orderId, Long sampleId, Long deptId) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("orderId", handOut.getOrderId()); - wrapper.eq("sampleId", handOut.getSampleId()); + wrapper.eq("orderId", orderId); + wrapper.eq("sampleId", sampleId); wrapper.eq("measure_dept_id", deptId); return wrapper; } @@ -142,9 +321,24 @@ return handOutLabExecutiveDTO; } - private Integer getAlreadyCertificateNum(SampleHandOutListResponse handOut, Long measureDeptId) { - Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(handOut, measureDeptId)); + private Integer getAlreadyCertificateNum(Long orderId, Long sampleId, Long measureDeptId) { + Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(orderId, sampleId, measureDeptId)); return aLong.intValue(); } + private void enrichLabExecutiveRecords(Page resultPage) { + resultPage.getRecords().parallelStream().forEach(lab -> { + List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(lab.getOrderId(), lab.getSampleId()); + //未在进行中的实验室则为检测完成(可能存在终止的情况,也算为检测完成) + if (CollectionUtils.isEmpty(labExecutiveList)) { + lab.setCurrentSegment(CurrentSegmentEnum.COMPLETE); + } else { + HandOutLabExecutiveDTO dto = labExecutiveList.get(0); + lab.setCurrentSegment(dto.getDeptName()); + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), dto.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + lab.setRequireCertifications(dto.getRequireCertifications()); + } + }); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java index 33611bd..aed3363 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java @@ -160,6 +160,7 @@ wrapper.like(StringUtils.isNotBlank(request.getMeterMajor()), "meter_major", request.getMeterMajor()); wrapper.like(StringUtils.isNotBlank(request.getOrganizeType()), "organize_type", request.getOrganizeType()); wrapper.eq(!Objects.isNull(request.getPDeptId()), "p_dept_id", request.getPDeptId()); + wrapper.eq(!Objects.isNull(request.getIsLab()), "is_lab", request.getIsLab()); wrapper.apply(StringUtils.isNotBlank(request.getCreateStartTime()),//apply方法传入参数名不能为空 "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateStartTime().split(" ")[0]); wrapper.apply(StringUtils.isNotBlank(request.getCreateEndTime()), 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 c3420c5..edc0169 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 @@ -6,10 +6,7 @@ import com.casic.missiles.core.page.PageInfoBT; import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.ReturnUtil; -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.*; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessLabExecutiveInfoService; @@ -22,6 +19,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; +import java.util.List; /** *

@@ -47,7 +45,7 @@ * 任务分发-查询各状态列表(待分发、检测中、检测完、已超期) */ @ApiOperation("任务分发-查询各状态列表") - @PostMapping("/handOutList") + @PostMapping("/handOut/list") @ResponseBody public ReturnDTO> queryHandOutList(@RequestBody @Valid SampleHandOutListRequest handOutListRequest, BindingResult bindingResult) throws Exception { if (bindingResult.hasErrors()) { @@ -62,7 +60,7 @@ * 任务分发-详情 */ @ApiOperation("任务分发-详情") - @PostMapping("/handOutDetail") + @PostMapping("/handOut/detail") @ResponseBody public ReturnDTO queryHandOutDetail(@RequestBody @Valid SampleHandOutDetailRequest handOutDetailRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { @@ -72,25 +70,77 @@ } /** - * 任务分发-标签绑定 + * 任务分发-标签绑定(复用设备收发中的标签绑定) */ /** + * 任务分发-获取初始化检定流程(实验室列表) + */ + @ApiOperation("任务分发-获取初始化检定流程") + @PostMapping("/handOut/initList") + @ResponseBody + public ReturnDTO> queryInitList(@RequestBody @Valid SampleHandOutInitListRequest handOutInitListRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(labExecutiveInfoService.handOutInitList(handOutInitListRequest)); + } + + /** * 任务分发-分发 */ - - - /** - * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) - */ + @ApiOperation("任务分发-分发") + @PostMapping("/handOut/execute") + @ResponseBody + public ReturnDTO handOut(@RequestBody @Valid SampleHandOutRequest handOutRequest, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.handOut(handOutRequest); + } /** * 实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完) */ + @ApiOperation("实验室检测-部门检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/deptExecutive/List") + @ResponseBody + public ReturnDTO> queryDeptExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.deptLabExecutiveListPage(page, labExecutiveListRequest))); + } + + /** + * 实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完) + */ + @ApiOperation("实验室检测-我的检测-查询各状态列表(待检测、检测中、检测完)") + @PostMapping("/myExecutive/List") + @ResponseBody + public ReturnDTO> queryMyExecutiveList(@RequestBody @Valid SampleLabExecutiveListRequest labExecutiveListRequest, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(labExecutiveListRequest); + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(labExecutiveInfoService.myLabExecutiveListPage(page, labExecutiveListRequest))); + } /** * 实验室检测-我的检测-检定人扫描收入(待检测->检测中) */ + @ApiOperation("实验室检测-我的检测-检定人扫描收入(待检测->检测中)") + @PostMapping("/myExecutive/receive") + @ResponseBody + public ReturnDTO sampleReceive(@RequestBody @Valid List requestList, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return labExecutiveInfoService.sampleReceive(requestList); + } /** * 实验室检测-负责人/检定人检测完按钮(检测中->检测完) 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 c5c4bb0..4f241f9 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 @@ -51,7 +51,8 @@ FILE_SUBMIT_FAILED(2407, "文件提交处理失败"), FLOW_NO_JOIN_FLOWABLE(2408, "该流程暂未接入Flowable,请重试"), HANDLE_FAILED(500, "操作失败"), - QRCODE_FAILED(2409, "二维码生成失败"); + QRCODE_FAILED(2409, "二维码生成失败"), + RECEIVE_SAMPLE_NOT_EXIST(2410, "待检测中不存在扫描收入的样品"); private Integer code; private String message; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java index cf08c61..367cc15 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/MeasureStatusEnum.java @@ -8,6 +8,8 @@ public interface MeasureStatusEnum { String TO_ALLOCATE = "1"; //待分配 String TO_MEASURE = "2"; //待检测 - String MEASURE_COMPLETE = "3"; //检测完成 - String SEND_BACK = "4"; //退回 + String IN_MEASURE = "3"; //检测中 + String MEASURE_COMPLETE = "4"; //检测完成 + String SEND_BACK = "5"; //退回 + String TERMINATED = "6"; //已终止 } 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 07da262..49887d3 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 @@ -1,9 +1,8 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.casic.missiles.dto.business.HandOutLabExecutiveDTO; -import com.casic.missiles.dto.business.MeasureProcessDTO; -import com.casic.missiles.dto.business.SampleHandOutDetailRequest; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import org.apache.ibatis.annotations.Param; @@ -22,4 +21,10 @@ List selectListByInMeasureStatus(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); List selectExecutiveList(@Param("request") SampleHandOutDetailRequest request); + + 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 updateForSampleReceive(@Param("list") List list, @Param("userId") Long userId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java index 43d4cae..63c2005 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessLabExecutiveTemplateInfoMapper.java @@ -1,7 +1,12 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListRequest; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.business.BusinessLabExecutiveTemplateInfo; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +18,6 @@ */ public interface BusinessLabExecutiveTemplateInfoMapper extends BaseMapper { + List selectExecutiveList(@Param("request") SampleHandOutInitListRequest request); + } 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 ecc1669..92102d3 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 @@ -26,4 +26,6 @@ Page getSampleListByStatus(@Param("page") Page page, @Param("request") DeviceDispatchDTO request); SampleHandOutDetailResponse selectSampleDetail(@Param("request") SampleHandOutDetailRequest request); + + int updateByOrderIdAndSampleId(@Param("orderId") Long orderId, @Param("sampleId") Long sampleId); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java index 209962b..6b34914 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/meter/MeterOrganizeMapper.java @@ -2,7 +2,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.SampleHandOutInitListResponse; import com.casic.missiles.model.meter.MeterOrganize; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -15,4 +19,6 @@ public interface MeterOrganizeMapper extends BaseMapper { Long selectMaxOrganizeNo(); + + List selectListByLabCapacity(@Param("list") List list); } 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 0c4e748..7f9dba2 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveInfoMapper.xml @@ -30,6 +30,12 @@ id, order_id, sample_id, measure_dept_id, measure_person_id, measure_item, measure_sequence, execute_sequence, measure_status, is_auto, require_certifications, operate_time, start_time, end_time, remark, is_del, create_user, create_time, update_time + + + 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 + + + + + + + + + UPDATE business_lab_executive_info blei + SET measure_status = 3 + WHERE measure_person_id = #{userId} + AND order_id IN + + #{item.orderId} + + AND sample_id IN + + #{item.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 d3e2b05..9f6c97f 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveOperateLogMapper.xml @@ -24,7 +24,9 @@ bleoi.operate_person_name AS sendBackPerson, bleoi.operate_reason AS sendBackReason, bleoi.create_time AS sendBackTime FROM business_lab_executive_operate_log bleoi JOIN sys_dept sd ON bleoi.measure_dept_id = sd.ID - WHERE bleoi.order_id = #{request.orderId} + WHERE measure_status = 4 + AND bleoi.order_id = #{request.orderId} AND bleoi.sample_id = #{request.sampleId} + ORDER BY bleoi.create_time ASC diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml index 4a35f01..654889d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessLabExecutiveTemplateInfoMapper.xml @@ -24,4 +24,14 @@ id, template_code, sample_type_id, sample_id, measure_dept_id, measure_person_id, measure_item, execute_sequence, remark, is_del, create_user, create_time, update_time + 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 cf45164..b57623d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -95,6 +95,7 @@ JOIN business_order_sample_relation bosr ON bo.id = bosr.order_id JOIN customer_sample_info csi ON csi.id = bosr.sample_id WHERE bo.is_del = 0 + AND bosr.measure_type = 1 AND (bosr.sample_status = 2 OR bosr.sample_status = 3) AND bo.require_over_time < NOW() @@ -129,6 +130,7 @@ AND csi.sample_belong = #{request.sampleBelong} + ORDER BY bosr.update_time DESC + + UPDATE business_order_sample_relation + SET sample_status = 3 + WHERE order_id = #{orderId} AND sample_id = #{sampleId} + diff --git a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml index 45ec790..734ec74 100644 --- a/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/meter/MeterOrganizeMapper.xml @@ -2,6 +2,16 @@ + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java index bdbdb1b..74ae0b0 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/constants/MeterDictCode.java @@ -87,26 +87,27 @@ //规模类型 String COMPANY_SCALE = "companySize"; // - String GRADE="grade"; + String GRADE = "grade"; //规模类型 String BUSINESS_SCALE = "businessSize"; //整体评价 String EVALUATION = "evaluation"; //投诉类型 String ADVICE_TYPE = "adviceType"; - //样品所属 - String SAMPLE_BELONG="sampleBelong"; - + String SAMPLE_BELONG = "sampleBelong"; //鉴定类别 - String MEASURE_CATEGORY="measureCategory"; - - //检定方式 - String MEASURE_TYPE="measureType"; - + String MEASURE_CATEGORY = "measureCategory"; + //检定方式 + String MEASURE_TYPE = "measureType"; //样品状态 - String SAMPLE_STATUS="sampleStatus"; + String SAMPLE_STATUS = "sampleStatus"; + /** + * 业务管理 + */ //委托书状态 - String ORDER_STATUS="orderStatus"; + String ORDER_STATUS = "orderStatus"; + //检测状态 + String MEASURE_STATUS = "measureStatus"; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.java new file mode 100644 index 0000000..4d95c37 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/HandOutProcessDTO.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.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 分发检定流程实体 + * @Author: wangpeng + * @Date: 2023/2/14 14:27 + */ +@Data +@ApiModel +public class HandOutProcessDTO { + @NotNull(message = "检定环节id不能为空") + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @NotBlank(message = "检定环节不能为空") + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id(可能有)", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员(可能有)", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "应出具证书总数(可能有)", dataType = "Integer") + private Integer requireCertifications; + @NotNull(message = "检测顺序不能为空") + @ApiModelProperty(value = "检测顺序", dataType = "Integer") + private Integer measureSequence; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.java new file mode 100644 index 0000000..c4e89f6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/MySampleReceiveRequest.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 MySampleReceiveRequest { + @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/SampleHandOutInitListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java new file mode 100644 index 0000000..2e249eb --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListRequest.java @@ -0,0 +1,29 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 初始化获取初始化检定流程请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:33 + */ +@Data +@ApiModel +public class SampleHandOutInitListRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotBlank(message = "检定项目不能为空") + @ApiModelProperty(value = "检定项目(各项目逗号分割)", dataType = "String") + private String measureContent; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java new file mode 100644 index 0000000..515dcf3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutInitListResponse.java @@ -0,0 +1,25 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 初始化获取初始化检定流程响应实体 + * @Author: wangpeng + * @Date: 2023/2/13 14:27 + */ +@Data +@ApiModel +public class SampleHandOutInitListResponse { + @ApiModelProperty(value = "检定环节,实验室id", dataType = "Long") + private Long measureSegmentId; + @ApiModelProperty(value = "检定环节,实验室名字", dataType = "String") + private String measureSegment; + @ApiModelProperty(value = "检定人员id", dataType = "Long") + private Long measurePersonId; + @ApiModelProperty(value = "检定人员", dataType = "String") + private String measurePerson; + @ApiModelProperty(value = "更新时间", dataType = "String") + private String updateTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java new file mode 100644 index 0000000..7cc0f22 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleHandOutRequest.java @@ -0,0 +1,30 @@ +package com.casic.missiles.dto.business; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * @Description: 分发请求实体 + * @Author: wangpeng + * @Date: 2023/2/13 15:53 + */ +@Data +@ApiModel +public class SampleHandOutRequest { + @NotNull(message = "委托书id不能为空") + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @NotNull(message = "样品id不能为空") + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @NotEmpty(message = "检定流程不能为空") + @ApiModelProperty(value = "检定流程", dataType = "List") + private List measureProcessList; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java new file mode 100644 index 0000000..50fd183 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListRequest.java @@ -0,0 +1,47 @@ +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 javax.validation.constraints.NotBlank; + +@Data +@ApiModel +public class SampleLabExecutiveListRequest { + @NotBlank(message = "检测状态不能为空") + @DictCodeField(message = "检测状态不合法", cacheName = MeterDictCode.MEASURE_STATUS) + @ApiModelProperty(value = "检测状态(字典code,2:待检测,3:检测中,4:检测完成)", dataType = "String") + private String measureStatus; + + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderNo; + + @ApiModelProperty(value = "委托方编号", dataType = "String") + private String customerNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "应检定开始时间", dataType = "String") + private String startTime; + + @ApiModelProperty(value = "应检定结束时间", dataType = "String") + private String endTime; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + private String isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") + private String sampleBelong; + +} 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 new file mode 100644 index 0000000..c39d9ce --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/SampleLabExecutiveListResponse.java @@ -0,0 +1,105 @@ +package com.casic.missiles.dto.business; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import com.fasterxml.jackson.annotation.JsonIgnore; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +public class SampleLabExecutiveListResponse { + + @ApiModelProperty(value = "样品id", dataType = "Long") + private Long sampleId; + + @ApiModelProperty(value = "样品编号", dataType = "String") + @ExcelProperty(value = "样品编号", order = 0) + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + @ExcelProperty(value = "样品名称", order = 1) + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + @ExcelProperty(value = "样品型号", order = 2) + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + @ExcelProperty(value = "出厂编号", order = 3) + private String manufacturingNo; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + @ExcelProperty(value = "委托书编号", order = 4) + private String orderNo; + + @ApiModelProperty(value = "委托方代码", dataType = "String") + @ExcelProperty(value = "委托方代码", order = 5) + private String customerId; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + @ExcelProperty(value = "委托方名称", order = 6) + private String customerName; + + @ApiModelProperty(value = "送检人", dataType = "String") + @ExcelProperty(value = "送检人", order = 7) + private String deliverer; + + @ApiModelProperty(value = "是否加急(1是0否null全部)", dataType = "Integer") + @ExcelProperty(value = "是否加急", order = 8) + private Integer isUrgent; + + @DictCodeField(message = "样品属性不合法", cacheName = MeterDictCode.SAMPLE_BELONG) + @ApiModelProperty(value = "样品属性(字典code)", dataType = "String") +// @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelong; + + @ApiModelProperty(value = "样品属性(字典value)", dataType = "String") + @ExcelProperty(value = "样品属性", order = 9) + private String sampleBelongName; + + @ApiModelProperty(value = "应检完时间", dataType = "String") + @ExcelProperty(value = "应检完时间", order = 10) + private String requireOverTime; + + @ApiModelProperty(value = "当前检定环节", dataType = "String") + @ExcelProperty(value = "当前检定环节", order = 11) + private String currentSegment; + + @ApiModelProperty(value = "已出具证书", dataType = "Integer") + @ExcelProperty(value = "已出具证书", order = 12) + private Integer alreadyCertifications; + + @ApiModelProperty(value = "应出具证书", dataType = "Integer") + @ExcelProperty(value = "应出具证书", order = 13) + private Integer requireCertifications; + + @ApiModelProperty(value = "分发性质", dataType = "String") + @ExcelProperty(value = "分发性质", order = 14) + private String handOutProperty; + + @JsonIgnore + private Long orderId; + + @JsonIgnore + private String measureStatus; + + @JsonIgnore + private Long measureDeptId; + + @JsonIgnore + private String measureDeptName; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java index ae33057..ef22ecf 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/meter/OrganizeListRequest.java @@ -55,4 +55,7 @@ */ @ApiModelProperty(value = "所属科室(工程组列表参数)", dataType = "Long") private Long pDeptId; + + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + private Integer isLab; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java index 8225599..cb9fe38 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/system/SignAddRequest.java @@ -5,7 +5,6 @@ import lombok.Data; import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotEmpty; import java.util.List; /** @@ -34,7 +33,7 @@ * 签章/签名负责人 */ @ApiModelProperty(value = "负责人", dataType = "String", required = true) - @NotBlank(message = "负责人不能为空") +// @NotBlank(message = "负责人不能为空") private String signDirector; /** @@ -58,6 +57,6 @@ private String minioFileName; @ApiModelProperty(value = "可使用人列表", dataType = "List") - @NotEmpty(message = "可使用人不能为空") +// @NotEmpty(message = "可使用人不能为空") private List userIdList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java index 0452c0c..3080b28 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessLabExecutiveInfo.java @@ -76,7 +76,7 @@ * 是否自动检定(使用自动检定软件/手动检定) */ @TableField("is_auto") - private Boolean isAuto; + private Integer isAuto; /** * 应出具证书总数 diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java index 5cd5d1e..23629ce 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterOrganize.java @@ -134,6 +134,14 @@ @TableField("phone") private String phone; + @ApiModelProperty(value = "是否为实验室", dataType = "Integer") + @TableField("is_lab") + private Integer isLab; + + @ApiModelProperty(value = "实验室能力", dataType = "String") + @TableField("lab_capacity") + private String labCapacity; + /** * 备注 */ 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 09c5074..4cdc384 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 @@ -1,17 +1,20 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; +import com.casic.missiles.core.model.auth.AuthUser; +import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.*; -import com.casic.missiles.enums.CurrentSegmentEnum; -import com.casic.missiles.enums.HandOutPropertyEnum; -import com.casic.missiles.enums.MeasureStatusEnum; -import com.casic.missiles.enums.SampleStatusEnum; -import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveInfoMapper; -import com.casic.missiles.mapper.business.BusinessLabExecutiveOperateLogMapper; -import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.enums.*; +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.BusinessCertificateReport; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; import com.casic.missiles.model.business.BusinessLabExecutiveOperateLog; @@ -20,10 +23,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -44,6 +48,10 @@ private BusinessOrderSampleRelationMapper orderSampleRelationMapper; @Autowired private BusinessLabExecutiveOperateLogMapper labExecutiveOperateLogMapper; + @Autowired + private BusinessLabExecutiveTemplateInfoMapper labExecutiveTemplateInfoMapper; + @Autowired + private MeterOrganizeMapper organizeMapper; @Override public Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception{ @@ -75,7 +83,7 @@ if (Objects.isNull(handOutLabExecutiveDTO)) break; handOut.setCurrentSegment(handOutLabExecutiveDTO.getDeptName()); Long measureDeptId = handOutLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, measureDeptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), measureDeptId)); handOut.setRequireCertifications(handOutLabExecutiveDTO.getRequireCertifications()); break; //检测完状态,分发性质:无,当前检定环节:完成,已出具证书:无,出具证书总数:无 @@ -92,7 +100,7 @@ HandOutLabExecutiveDTO overLabExecutiveDTO = getHandOutLabExecutiveDTO(orderId, sampleId); handOut.setCurrentSegment(overLabExecutiveDTO.getDeptName()); Long deptId = overLabExecutiveDTO.getMeasureDeptId(); - handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut, deptId)); + handOut.setAlreadyCertifications(getAlreadyCertificateNum(handOut.getOrderId(), handOut.getSampleId(), deptId)); handOut.setRequireCertifications(overLabExecutiveDTO.getRequireCertifications()); break; } @@ -116,6 +124,177 @@ } + @Override + public List handOutInitList(SampleHandOutInitListRequest handOutInitListRequest) { + //是否存在样品的实验室检定信息标准模板 + //后续可采用该方式和模板分类方式实现自动分发 + List initListResponses = labExecutiveTemplateInfoMapper.selectExecutiveList(handOutInitListRequest); + if(!CollectionUtils.isEmpty(initListResponses)){ + return initListResponses; + } + //根据样品的检定项目去关键字匹配实验室能力信息 + String[] split = handOutInitListRequest.getMeasureContent().split(","); + List list = Arrays.asList(split); + //返回列表分发员需要调整,后续不建议采用该方式实现自动分发 + List initListResponseList = organizeMapper.selectListByLabCapacity(list); + String now = DateUtil.now(); + initListResponseList.forEach(response -> { + response.setUpdateTime(now); + }); + return initListResponseList; + } + + @Override + @Transactional + public ReturnDTO handOut(SampleHandOutRequest handOutRequest) { + Long orderId = handOutRequest.getOrderId(); + Long sampleId = handOutRequest.getSampleId(); + List measureProcessList = handOutRequest.getMeasureProcessList(); + List sortedList = measureProcessList.stream().sorted(Comparator.comparing(HandOutProcessDTO::getMeasureSequence)).collect(Collectors.toList()); + //检定流程加入实验室记录表 + List labExecutiveInfos = new ArrayList<>(); + for (int i = 0; i < sortedList.size(); i++) { + BusinessLabExecutiveInfo labExecutiveInfo = new BusinessLabExecutiveInfo(); + if(0 == i){ + //将第一个置为待分配(负责人可查看) + labExecutiveInfo.setMeasureStatus(MeasureStatusEnum.TO_ALLOCATE); + } + HandOutProcessDTO handOutProcessDTO = sortedList.get(i); + labExecutiveInfo.setOrderId(orderId); + labExecutiveInfo.setSampleId(sampleId); + labExecutiveInfo.setMeasureDeptId(handOutProcessDTO.getMeasureSegmentId()); + labExecutiveInfo.setMeasurePersonId(handOutProcessDTO.getMeasurePersonId()); + labExecutiveInfo.setMeasureSequence(handOutProcessDTO.getMeasureSequence()); + labExecutiveInfo.setIsAuto(0);//默认手动检定 + labExecutiveInfo.setRequireCertifications(handOutProcessDTO.getRequireCertifications()); + labExecutiveInfo.setCreateUser(ShiroKit.getUser().getId()); + labExecutiveInfos.add(labExecutiveInfo); + } + //更新样品状态为检测中 + int updateFlag = orderSampleRelationMapper.updateByOrderIdAndSampleId(orderId, sampleId); + if(this.saveBatch(labExecutiveInfos) && updateFlag> 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public Page deptLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + //本级部门主管可见本部门的检测 + //根据用户id查询,用户角色中TIPS为director即为主管,取用户的部门id + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Map resultMap = SqlRunner.db().selectOne( + "SELECT su.DEPT_ID as deptId, sd.SIMPLE_NAME AS deptName FROM sys_role sr " + + "JOIN sys_ru_relation srr ON sr.ID = srr.ROLEID " + + "JOIN sys_user su ON srr.USERID = su.ID " + + "JOIN sys_dept sd ON su.DEPT_ID = sd.ID" + + "WHERE su.ID = {0}" + + "AND sr.TIPS = {1}", String.valueOf(user.getId()), "director"); + if(CollectionUtils.isEmpty(resultMap) || Objects.isNull(resultMap.get("deptId"))){ + return new Page<>(); + } + Long deptId = (Long) resultMap.get("deptId"); + String deptName = (String) resultMap.get("deptName"); + //获取部门下的各检测状态列表 + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询待分配状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.TO_ALLOCATE, null); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(deptName); + }); + break; + + //检测中,查询待检测和检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表(检测中,待检测无),证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + List statusList = new ArrayList<>(); + statusList.add(MeasureStatusEnum.TO_MEASURE); + statusList.add(MeasureStatusEnum.IN_MEASURE); + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId,null, statusList); + resultPage.getRecords().parallelStream().forEach(lab -> { + lab.setCurrentSegment(deptName); + //查询证书报告表 + if(MeasureStatusEnum.IN_MEASURE.equals(lab.getMeasureStatus())){ + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), deptId); + lab.setAlreadyCertifications(alreadyCertificateNum); + } + }); + break; + + //检测完,查询检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByDeptIdAndStatus(page, labExecutiveListRequest, deptId, MeasureStatusEnum.MEASURE_COMPLETE, null); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public Page myLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + String measureStatus = labExecutiveListRequest.getMeasureStatus(); + Page resultPage = new Page<>(); + switch (measureStatus) { + //待检测,查询本人待检测状态 + //当前检定环节:具体实验室,已出具证书:无,出具证书总数:无 + case MeasureStatusEnum.TO_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.TO_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + }); + break; + + //检测中,查询本人检测中 + //当前检定环节:具体实验室,已出具证书:查询证书报告表,证书总数:具体实验室 + case MeasureStatusEnum.IN_MEASURE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.IN_MEASURE); + resultPage.getRecords().forEach(lab -> { + lab.setCurrentSegment(lab.getMeasureDeptName()); + //本实验室在一个流程中若有多次检测,这里的证书信息是多次的总和,已出具的是当前本人的(后续根据需求定义调整) + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), lab.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + }); + break; + + //检测完,查询本人检测完,当前检定环节:其他实验室/检测完,已出具证书:查询证书报告表/无,证书总数:具体实验室/无 + case MeasureStatusEnum.MEASURE_COMPLETE: + resultPage = labExecutiveInfoMapper.selectListByUserIdAndStatus(page, labExecutiveListRequest, userId, MeasureStatusEnum.MEASURE_COMPLETE); + //查询样品检定到的其他实验室或样品检测完成 + enrichLabExecutiveRecords(resultPage); + break; + } + return resultPage; + } + + @Override + public ReturnDTO sampleReceive(List requestList) { + //扫描收入会显示扫进来哪些,检测人员确定要扫描的样品后,调用接口,接口中查询是否在该用户的待检测中有该样品,没有则返回提示信息,有则更新状态 + //该接口前应该有个根据标签查询样品信息的接口(查样品和委托书关联表中最新的委托书的样品列表) + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + Long userId = user.getId(); + int updateFlag = labExecutiveInfoMapper.updateForSampleReceive(requestList, userId); + if(updateFlag > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.RECEIVE_SAMPLE_NOT_EXIST); + } + private QueryWrapper getOperateLogWrapper(SampleHandOutListResponse handOut) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("orderId", handOut.getOrderId()); @@ -124,10 +303,10 @@ return wrapper; } - private QueryWrapper getCertificateReportWrapper(SampleHandOutListResponse handOut, Long deptId) { + private QueryWrapper getCertificateReportWrapper(Long orderId, Long sampleId, Long deptId) { QueryWrapper wrapper = new QueryWrapper<>(); - wrapper.eq("orderId", handOut.getOrderId()); - wrapper.eq("sampleId", handOut.getSampleId()); + wrapper.eq("orderId", orderId); + wrapper.eq("sampleId", sampleId); wrapper.eq("measure_dept_id", deptId); return wrapper; } @@ -142,9 +321,24 @@ return handOutLabExecutiveDTO; } - private Integer getAlreadyCertificateNum(SampleHandOutListResponse handOut, Long measureDeptId) { - Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(handOut, measureDeptId)); + private Integer getAlreadyCertificateNum(Long orderId, Long sampleId, Long measureDeptId) { + Long aLong = certificateReportMapper.selectCount(getCertificateReportWrapper(orderId, sampleId, measureDeptId)); return aLong.intValue(); } + private void enrichLabExecutiveRecords(Page resultPage) { + resultPage.getRecords().parallelStream().forEach(lab -> { + List labExecutiveList = labExecutiveInfoMapper.selectListByInMeasureStatus(lab.getOrderId(), lab.getSampleId()); + //未在进行中的实验室则为检测完成(可能存在终止的情况,也算为检测完成) + if (CollectionUtils.isEmpty(labExecutiveList)) { + lab.setCurrentSegment(CurrentSegmentEnum.COMPLETE); + } else { + HandOutLabExecutiveDTO dto = labExecutiveList.get(0); + lab.setCurrentSegment(dto.getDeptName()); + Integer alreadyCertificateNum = getAlreadyCertificateNum(lab.getOrderId(), lab.getSampleId(), dto.getMeasureDeptId()); + lab.setAlreadyCertifications(alreadyCertificateNum); + lab.setRequireCertifications(dto.getRequireCertifications()); + } + }); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java index 33611bd..aed3363 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterOrganizeServiceImpl.java @@ -160,6 +160,7 @@ wrapper.like(StringUtils.isNotBlank(request.getMeterMajor()), "meter_major", request.getMeterMajor()); wrapper.like(StringUtils.isNotBlank(request.getOrganizeType()), "organize_type", request.getOrganizeType()); wrapper.eq(!Objects.isNull(request.getPDeptId()), "p_dept_id", request.getPDeptId()); + wrapper.eq(!Objects.isNull(request.getIsLab()), "is_lab", request.getIsLab()); wrapper.apply(StringUtils.isNotBlank(request.getCreateStartTime()),//apply方法传入参数名不能为空 "{0} <= DATE_FORMAT(create_time,'%Y-%m-%d')", request.getCreateStartTime().split(" ")[0]); wrapper.apply(StringUtils.isNotBlank(request.getCreateEndTime()), 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 c286be6..58a0a23 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,12 +2,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; -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.ReturnDTO; +import com.casic.missiles.dto.business.*; import com.casic.missiles.model.business.BusinessLabExecutiveInfo; +import java.util.List; + /** *

* 业务管理-实验室检定信息记录表(用于流程中的实验室分配及后续检定过程查询) 服务类 @@ -21,4 +21,14 @@ Page handOutListPage(Page page, SampleHandOutListRequest handOutListRequest) throws Exception; SampleHandOutDetailResponse handOutListDetail(SampleHandOutDetailRequest SampleHandOutDetailRequest); + + List handOutInitList(SampleHandOutInitListRequest handOutInitListRequest); + + ReturnDTO handOut(SampleHandOutRequest handOutRequest); + + Page deptLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest); + + Page myLabExecutiveListPage(Page page, SampleLabExecutiveListRequest labExecutiveListRequest); + + ReturnDTO sampleReceive(List requestList); }