diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java new file mode 100644 index 0000000..7c266af --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java @@ -0,0 +1,42 @@ +package com.casic.missiles.model.business; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Data +@TableName("business_site_executive_info_equipment_relation") +public class BusinessSiteExecutiveInfoEquipmentRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private Long id; + + /** + * 现场检测审批id + */ + @TableField("site_executive_info_id") + private Long siteExecutiveInfoId; + + /** + * 检测设备id + */ + @TableField("equipment_id") + private Long equipmentId; + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java index dddb150..10759c0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveEquipmentRelationMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-测量设备关联表 服务实现类 @@ -17,4 +25,49 @@ @Service public class BusinessSiteExecutiveEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveEquipmentRelationService { + + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + + @Override + public boolean saveBatch(Long siteExecutiveId, List equipmentInfoList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + equipmentInfoList.forEach(assets -> { + BusinessSiteExecutiveEquipmentRelation siteExecutiveEquipmentRelation = new BusinessSiteExecutiveEquipmentRelation(); + siteExecutiveEquipmentRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveEquipmentRelation.setEquipmentNo(assets.getEquipmentNo()); + siteExecutiveEquipmentRelation.setEquipmentId(assets.getId()); + list.add(siteExecutiveEquipmentRelation); + }); + return this.saveBatch(list); + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public List getEquipmentsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return equipmentFixedAssetsService.list(list.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + } + return null; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java new file mode 100644 index 0000000..7c266af --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java @@ -0,0 +1,42 @@ +package com.casic.missiles.model.business; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Data +@TableName("business_site_executive_info_equipment_relation") +public class BusinessSiteExecutiveInfoEquipmentRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private Long id; + + /** + * 现场检测审批id + */ + @TableField("site_executive_info_id") + private Long siteExecutiveInfoId; + + /** + * 检测设备id + */ + @TableField("equipment_id") + private Long equipmentId; + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java index dddb150..10759c0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveEquipmentRelationMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-测量设备关联表 服务实现类 @@ -17,4 +25,49 @@ @Service public class BusinessSiteExecutiveEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveEquipmentRelationService { + + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + + @Override + public boolean saveBatch(Long siteExecutiveId, List equipmentInfoList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + equipmentInfoList.forEach(assets -> { + BusinessSiteExecutiveEquipmentRelation siteExecutiveEquipmentRelation = new BusinessSiteExecutiveEquipmentRelation(); + siteExecutiveEquipmentRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveEquipmentRelation.setEquipmentNo(assets.getEquipmentNo()); + siteExecutiveEquipmentRelation.setEquipmentId(assets.getId()); + list.add(siteExecutiveEquipmentRelation); + }); + return this.saveBatch(list); + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public List getEquipmentsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return equipmentFixedAssetsService.list(list.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + } + return null; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java new file mode 100644 index 0000000..f8bd8eb --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.Impl.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoEquipmentRelationMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Service +public class BusinessSiteExecutiveInfoEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveInfoEquipmentRelationService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java index 6dccd49..319cbad 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java @@ -1,27 +1,40 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.meter.MeterDictEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -50,6 +63,10 @@ private RuntimeService runtimeService; @Autowired private ApprovalOperateService approvalOperateService; + @Autowired + private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private IBusinessSiteExecutiveStaffRelationService siteExecutiveStaffRelationService; @Override public List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception { @@ -59,7 +76,7 @@ }); request.setCreateUserId(user.getId()); List responseList = handleApprovalStatus(page, request); - if(CollectionUtils.isEmpty(responseList)){ + if (CollectionUtils.isEmpty(responseList)) { return new ArrayList<>(); } for (SiteExecutiveApprovalListResponse response : responseList) { @@ -69,6 +86,130 @@ } + @Override + public ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())) { + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + BusinessSiteExecutiveInfo siteExecutiveInfo = new BusinessSiteExecutiveInfo(); + siteExecutiveInfo.setId(request.getId()); + siteExecutiveInfo.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + siteExecutiveInfo.setProcessId(processInstance.getId()); + //siteExecutiveInfo.setSubmitDate(DateUtil.formatDateTime(new Date())); + siteExecutiveInfo.setUpdateTime(DateUtil.formatDateTime(new Date())); + int row = this.baseMapper.updateById(siteExecutiveInfo); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getCode(), BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + initSiteExecutiveInfo(siteExecutiveInfo); + if (this.baseMapper.insert(siteExecutiveInfo) > 0) { + //加入现场检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(siteExecutiveInfo.getId()); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + baseApprovalService.failUpdate(siteExecutiveInfo.getProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //删除数据库记录 + if (this.baseMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteBatchSiteExecutive(List ids) { + + if (baseMapper.deleteBatchIds(ids) > 0) { + //删除检测人员绑定关系 + siteExecutiveStaffRelationService.deleteBySiteExecutiveIds(ids); + //删除监测设备绑定关系 + siteExecutiveEquipmentRelationService.deleteBySiteExecutiveIds(ids); + return ReturnUtil.success(); + } + return ReturnUtil.failed("删除失败"); + } + + @Override + public ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + //加入检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private void initSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + Long maxNo = this.baseMapper.selectMaxCode(); + String siteExecutiveNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.SITE_EXECUTIVE_PREFIX, maxNo); + AuthUser authUser = ShiroKit.getUser(); + siteExecutiveInfo.setCreateUser(authUser.getId()); + siteExecutiveInfo.setSiteExecutiveNo(siteExecutiveNo); + siteExecutiveInfo.setCreateTime(DateUtil.formatDateTime(new Date())); + } + + @Override + public BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id) { + BusinessSiteExecutiveInfo siteExecutiveInfo = this.baseMapper.selectById(id); + + if (siteExecutiveInfo != null) { + //查询是否有关联的检测人员 + siteExecutiveInfo.setMeterStaffList(siteExecutiveStaffRelationService.getStaffsByExecutiveInfoId(id)); + //查询是否有关联的监测设备 + siteExecutiveInfo.setEquipmentInfoList(siteExecutiveEquipmentRelationService.getEquipmentsByExecutiveInfoId(id)); + if(StringUtils.isNotEmpty(siteExecutiveInfo.getTaskSource())){ + siteExecutiveInfo.setTaskSourceName(dictService.getDictNameByCode(MeterDictEnum.TASK_SOURCE,siteExecutiveInfo.getTaskSource())); + } + } + return siteExecutiveInfo; + } + private List handleApprovalStatus(Page page, SiteExecutiveApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java new file mode 100644 index 0000000..7c266af --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java @@ -0,0 +1,42 @@ +package com.casic.missiles.model.business; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Data +@TableName("business_site_executive_info_equipment_relation") +public class BusinessSiteExecutiveInfoEquipmentRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private Long id; + + /** + * 现场检测审批id + */ + @TableField("site_executive_info_id") + private Long siteExecutiveInfoId; + + /** + * 检测设备id + */ + @TableField("equipment_id") + private Long equipmentId; + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java index dddb150..10759c0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveEquipmentRelationMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-测量设备关联表 服务实现类 @@ -17,4 +25,49 @@ @Service public class BusinessSiteExecutiveEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveEquipmentRelationService { + + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + + @Override + public boolean saveBatch(Long siteExecutiveId, List equipmentInfoList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + equipmentInfoList.forEach(assets -> { + BusinessSiteExecutiveEquipmentRelation siteExecutiveEquipmentRelation = new BusinessSiteExecutiveEquipmentRelation(); + siteExecutiveEquipmentRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveEquipmentRelation.setEquipmentNo(assets.getEquipmentNo()); + siteExecutiveEquipmentRelation.setEquipmentId(assets.getId()); + list.add(siteExecutiveEquipmentRelation); + }); + return this.saveBatch(list); + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public List getEquipmentsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return equipmentFixedAssetsService.list(list.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + } + return null; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java new file mode 100644 index 0000000..f8bd8eb --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.Impl.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoEquipmentRelationMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Service +public class BusinessSiteExecutiveInfoEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveInfoEquipmentRelationService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java index 6dccd49..319cbad 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java @@ -1,27 +1,40 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.meter.MeterDictEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -50,6 +63,10 @@ private RuntimeService runtimeService; @Autowired private ApprovalOperateService approvalOperateService; + @Autowired + private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private IBusinessSiteExecutiveStaffRelationService siteExecutiveStaffRelationService; @Override public List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception { @@ -59,7 +76,7 @@ }); request.setCreateUserId(user.getId()); List responseList = handleApprovalStatus(page, request); - if(CollectionUtils.isEmpty(responseList)){ + if (CollectionUtils.isEmpty(responseList)) { return new ArrayList<>(); } for (SiteExecutiveApprovalListResponse response : responseList) { @@ -69,6 +86,130 @@ } + @Override + public ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())) { + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + BusinessSiteExecutiveInfo siteExecutiveInfo = new BusinessSiteExecutiveInfo(); + siteExecutiveInfo.setId(request.getId()); + siteExecutiveInfo.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + siteExecutiveInfo.setProcessId(processInstance.getId()); + //siteExecutiveInfo.setSubmitDate(DateUtil.formatDateTime(new Date())); + siteExecutiveInfo.setUpdateTime(DateUtil.formatDateTime(new Date())); + int row = this.baseMapper.updateById(siteExecutiveInfo); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getCode(), BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + initSiteExecutiveInfo(siteExecutiveInfo); + if (this.baseMapper.insert(siteExecutiveInfo) > 0) { + //加入现场检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(siteExecutiveInfo.getId()); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + baseApprovalService.failUpdate(siteExecutiveInfo.getProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //删除数据库记录 + if (this.baseMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteBatchSiteExecutive(List ids) { + + if (baseMapper.deleteBatchIds(ids) > 0) { + //删除检测人员绑定关系 + siteExecutiveStaffRelationService.deleteBySiteExecutiveIds(ids); + //删除监测设备绑定关系 + siteExecutiveEquipmentRelationService.deleteBySiteExecutiveIds(ids); + return ReturnUtil.success(); + } + return ReturnUtil.failed("删除失败"); + } + + @Override + public ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + //加入检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private void initSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + Long maxNo = this.baseMapper.selectMaxCode(); + String siteExecutiveNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.SITE_EXECUTIVE_PREFIX, maxNo); + AuthUser authUser = ShiroKit.getUser(); + siteExecutiveInfo.setCreateUser(authUser.getId()); + siteExecutiveInfo.setSiteExecutiveNo(siteExecutiveNo); + siteExecutiveInfo.setCreateTime(DateUtil.formatDateTime(new Date())); + } + + @Override + public BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id) { + BusinessSiteExecutiveInfo siteExecutiveInfo = this.baseMapper.selectById(id); + + if (siteExecutiveInfo != null) { + //查询是否有关联的检测人员 + siteExecutiveInfo.setMeterStaffList(siteExecutiveStaffRelationService.getStaffsByExecutiveInfoId(id)); + //查询是否有关联的监测设备 + siteExecutiveInfo.setEquipmentInfoList(siteExecutiveEquipmentRelationService.getEquipmentsByExecutiveInfoId(id)); + if(StringUtils.isNotEmpty(siteExecutiveInfo.getTaskSource())){ + siteExecutiveInfo.setTaskSourceName(dictService.getDictNameByCode(MeterDictEnum.TASK_SOURCE,siteExecutiveInfo.getTaskSource())); + } + } + return siteExecutiveInfo; + } + private List handleApprovalStatus(Page page, SiteExecutiveApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java index cdac240..7869717 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java @@ -1,11 +1,20 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveStaffRelationMapper; +import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; import com.casic.missiles.model.business.BusinessSiteExecutiveStaffRelation; +import com.casic.missiles.model.meter.MeterStaff; import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-计量人员关联表 服务实现类 @@ -17,4 +26,47 @@ @Service public class BusinessSiteExecutiveStaffRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveStaffRelationService { + @Resource + private MeterStaffMapper meterStaffMapper; + + @Override + public boolean saveBatch(Long siteExecutiveId, List meterStaffList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + meterStaffList.forEach(meterStaff -> { + BusinessSiteExecutiveStaffRelation siteExecutiveStaffRelation = new BusinessSiteExecutiveStaffRelation(); + siteExecutiveStaffRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveStaffRelation.setStaffId(meterStaff.getId()); + list.add(siteExecutiveStaffRelation); + }); + return this.saveBatch(list); + } + + @Override + public List getStaffsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return meterStaffMapper.selectBatchIds(list.stream().map(BusinessSiteExecutiveStaffRelation::getStaffId).collect(Collectors.toList())); + } + return null; + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java index 97ccbdf..aa58548 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; + +import java.util.List; /** *

@@ -13,4 +16,11 @@ */ public interface IBusinessSiteExecutiveEquipmentRelationService extends IService { + boolean saveBatch(Long siteExecutiveId, List equipmentInfoList); + + List getEquipmentsByExecutiveInfoId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveIds(List siteExecutiveIds); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java new file mode 100644 index 0000000..7c266af --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java @@ -0,0 +1,42 @@ +package com.casic.missiles.model.business; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Data +@TableName("business_site_executive_info_equipment_relation") +public class BusinessSiteExecutiveInfoEquipmentRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private Long id; + + /** + * 现场检测审批id + */ + @TableField("site_executive_info_id") + private Long siteExecutiveInfoId; + + /** + * 检测设备id + */ + @TableField("equipment_id") + private Long equipmentId; + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java index dddb150..10759c0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveEquipmentRelationMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-测量设备关联表 服务实现类 @@ -17,4 +25,49 @@ @Service public class BusinessSiteExecutiveEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveEquipmentRelationService { + + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + + @Override + public boolean saveBatch(Long siteExecutiveId, List equipmentInfoList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + equipmentInfoList.forEach(assets -> { + BusinessSiteExecutiveEquipmentRelation siteExecutiveEquipmentRelation = new BusinessSiteExecutiveEquipmentRelation(); + siteExecutiveEquipmentRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveEquipmentRelation.setEquipmentNo(assets.getEquipmentNo()); + siteExecutiveEquipmentRelation.setEquipmentId(assets.getId()); + list.add(siteExecutiveEquipmentRelation); + }); + return this.saveBatch(list); + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public List getEquipmentsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return equipmentFixedAssetsService.list(list.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + } + return null; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java new file mode 100644 index 0000000..f8bd8eb --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.Impl.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoEquipmentRelationMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Service +public class BusinessSiteExecutiveInfoEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveInfoEquipmentRelationService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java index 6dccd49..319cbad 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java @@ -1,27 +1,40 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.meter.MeterDictEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -50,6 +63,10 @@ private RuntimeService runtimeService; @Autowired private ApprovalOperateService approvalOperateService; + @Autowired + private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private IBusinessSiteExecutiveStaffRelationService siteExecutiveStaffRelationService; @Override public List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception { @@ -59,7 +76,7 @@ }); request.setCreateUserId(user.getId()); List responseList = handleApprovalStatus(page, request); - if(CollectionUtils.isEmpty(responseList)){ + if (CollectionUtils.isEmpty(responseList)) { return new ArrayList<>(); } for (SiteExecutiveApprovalListResponse response : responseList) { @@ -69,6 +86,130 @@ } + @Override + public ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())) { + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + BusinessSiteExecutiveInfo siteExecutiveInfo = new BusinessSiteExecutiveInfo(); + siteExecutiveInfo.setId(request.getId()); + siteExecutiveInfo.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + siteExecutiveInfo.setProcessId(processInstance.getId()); + //siteExecutiveInfo.setSubmitDate(DateUtil.formatDateTime(new Date())); + siteExecutiveInfo.setUpdateTime(DateUtil.formatDateTime(new Date())); + int row = this.baseMapper.updateById(siteExecutiveInfo); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getCode(), BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + initSiteExecutiveInfo(siteExecutiveInfo); + if (this.baseMapper.insert(siteExecutiveInfo) > 0) { + //加入现场检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(siteExecutiveInfo.getId()); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + baseApprovalService.failUpdate(siteExecutiveInfo.getProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //删除数据库记录 + if (this.baseMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteBatchSiteExecutive(List ids) { + + if (baseMapper.deleteBatchIds(ids) > 0) { + //删除检测人员绑定关系 + siteExecutiveStaffRelationService.deleteBySiteExecutiveIds(ids); + //删除监测设备绑定关系 + siteExecutiveEquipmentRelationService.deleteBySiteExecutiveIds(ids); + return ReturnUtil.success(); + } + return ReturnUtil.failed("删除失败"); + } + + @Override + public ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + //加入检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private void initSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + Long maxNo = this.baseMapper.selectMaxCode(); + String siteExecutiveNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.SITE_EXECUTIVE_PREFIX, maxNo); + AuthUser authUser = ShiroKit.getUser(); + siteExecutiveInfo.setCreateUser(authUser.getId()); + siteExecutiveInfo.setSiteExecutiveNo(siteExecutiveNo); + siteExecutiveInfo.setCreateTime(DateUtil.formatDateTime(new Date())); + } + + @Override + public BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id) { + BusinessSiteExecutiveInfo siteExecutiveInfo = this.baseMapper.selectById(id); + + if (siteExecutiveInfo != null) { + //查询是否有关联的检测人员 + siteExecutiveInfo.setMeterStaffList(siteExecutiveStaffRelationService.getStaffsByExecutiveInfoId(id)); + //查询是否有关联的监测设备 + siteExecutiveInfo.setEquipmentInfoList(siteExecutiveEquipmentRelationService.getEquipmentsByExecutiveInfoId(id)); + if(StringUtils.isNotEmpty(siteExecutiveInfo.getTaskSource())){ + siteExecutiveInfo.setTaskSourceName(dictService.getDictNameByCode(MeterDictEnum.TASK_SOURCE,siteExecutiveInfo.getTaskSource())); + } + } + return siteExecutiveInfo; + } + private List handleApprovalStatus(Page page, SiteExecutiveApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java index cdac240..7869717 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java @@ -1,11 +1,20 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveStaffRelationMapper; +import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; import com.casic.missiles.model.business.BusinessSiteExecutiveStaffRelation; +import com.casic.missiles.model.meter.MeterStaff; import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-计量人员关联表 服务实现类 @@ -17,4 +26,47 @@ @Service public class BusinessSiteExecutiveStaffRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveStaffRelationService { + @Resource + private MeterStaffMapper meterStaffMapper; + + @Override + public boolean saveBatch(Long siteExecutiveId, List meterStaffList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + meterStaffList.forEach(meterStaff -> { + BusinessSiteExecutiveStaffRelation siteExecutiveStaffRelation = new BusinessSiteExecutiveStaffRelation(); + siteExecutiveStaffRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveStaffRelation.setStaffId(meterStaff.getId()); + list.add(siteExecutiveStaffRelation); + }); + return this.saveBatch(list); + } + + @Override + public List getStaffsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return meterStaffMapper.selectBatchIds(list.stream().map(BusinessSiteExecutiveStaffRelation::getStaffId).collect(Collectors.toList())); + } + return null; + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java index 97ccbdf..aa58548 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; + +import java.util.List; /** *

@@ -13,4 +16,11 @@ */ public interface IBusinessSiteExecutiveEquipmentRelationService extends IService { + boolean saveBatch(Long siteExecutiveId, List equipmentInfoList); + + List getEquipmentsByExecutiveInfoId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveIds(List siteExecutiveIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java new file mode 100644 index 0000000..1da43da --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface IBusinessSiteExecutiveInfoEquipmentRelationService extends IService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java index 656ef37..c9637c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java @@ -2,9 +2,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import java.util.List; @@ -13,10 +16,25 @@ * 现场检测表 服务类 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ public interface IBusinessSiteExecutiveInfoService extends IService { List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo); + + ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request); + + ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo); + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO deleteBatchSiteExecutive(List ids); + + ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo); + + BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java index 5b36a79..68929b2 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveInfoController.java @@ -1,14 +1,17 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.core.base.controller.ExportController; import com.casic.missiles.core.page.PageFactory; import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.ReturnDTO; -import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.*; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.exception.BusinessException; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; @@ -16,21 +19,20 @@ import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import javax.validation.Valid; import java.util.List; +import java.util.Objects; /** *

* 现场检测表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @Api(tags = "现场检测接口") @@ -53,44 +55,95 @@ page.setRecords(responseList); return ReturnUtil.success(super.packForBT(page)); } -/* + @ApiOperation("现场检测审批保存(保存至草稿箱)") @PostMapping("/save") @ResponseBody - - - @ApiOperation("现场检测编辑") - @PostMapping("/draftUpdate") - @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(siteExecutiveInfoService.saveSiteExecutiveInfo(siteExecutiveInfo)); + } @ApiOperation("现场检测提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") @PostMapping("/submit") @ResponseBody + public ReturnDTO siteExecutiveInfoSubmit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.siteExecutiveInfoSubmit(request); + } - @ApiOperation("现场检测删除(草稿也调用该接口)") - @PostMapping("/delete") + /** + * 审批操作-编辑 + * 驳回的流程放置在未通过列表中,实现进行编辑后自动审核通过发起人节点 + */ + @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.failUpdate(siteExecutiveInfo); + } + + /** + * 草稿箱文件编辑 + */ + @ApiOperation("草稿箱文件更新") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessSiteExecutiveInfo siteExecutiveInfo, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(siteExecutiveInfo.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.draftUpdate(siteExecutiveInfo); + + } @ApiOperation("现场检测批量删除") @PostMapping("/batchDelete") @ResponseBody - + public ReturnDTO siteExecutiveBatchDelete(@RequestBody @Valid IdsDTO idsDTO) { + Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return siteExecutiveInfoService.deleteBatchSiteExecutive(idsDTO.getIds()); + } @ApiOperation("现场检测详情") @PostMapping("/detail") @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return ReturnUtil.success(siteExecutiveInfoService.siteExecutiveInfoDetail(idDTO.getId())); + } - + /** + * 删除(发起者或具有删除权限的用户可以删除,已通过/未通过状态不可删除) + * 前端控制按钮权限 + */ @ApiOperation("审批操作-删除") @PostMapping("/approval/operate/delete") @ResponseBody - - - @ApiOperation("未通过现场检测编辑(驳回后的现场检测重新编辑,仅未通过列表中的编辑按钮可调用)") - @PostMapping("/failUpdate") - @ResponseBody - */ + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return siteExecutiveInfoService.approvalDelete(request); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java index afb98d8..79d3d6f 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessSiteExecutiveLogController.java @@ -1,18 +1,100 @@ package com.casic.missiles.controller.business; +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.originRecord.OriginRecordRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOriginalRecord; +import com.casic.missiles.model.business.BusinessSiteExecutiveLog; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOriginalRecordService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveLogService; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.Objects; + /** *

* 现场检测记录表 前端控制器 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ @RestController @RequestMapping("/business/siteExecutive/log") public class BusinessSiteExecutiveLogController { + @Resource + private IBusinessSiteExecutiveLogService siteExecutiveLogService; + +// @ApiOperation("现场检测记录表查询") +// @PostMapping("/listPage") +// public ReturnDTO> originalListPage(@RequestBody @Valid OriginRecordRequest request, BindingResult bindingResult) throws Exception { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// Page page = PageFactory.defaultPage(); +// return ReturnUtil.success(super.packForBT(siteExecutiveLogService.originListPage(page, request))); +// } +// +// +// @ApiOperation("现场检测记录表详情") +// @PostMapping("/detail") +// public ReturnDTO originalDetail(@RequestBody @Valid IdDTO idDTO) throws Exception{ +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(businessOriginalRecordService.originalDetail(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表更新") +// @PostMapping("/update") +// public ReturnDTO updateOriginal(@RequestBody @Valid BusinessOriginalRecord businessOriginalRecord, BindingResult bindingResult) { +// Assert.isFalse(Objects.isNull(businessOriginalRecord.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(businessOriginalRecordService.updateOriginal(businessOriginalRecord)); +// } + +// @ApiOperation("现场检测记录表新增") +// @PostMapping("/add") +// public ReturnDTO addOriginal(@RequestBody @Valid BusinessSiteExecutiveLog businessSiteExecutiveLog, BindingResult bindingResult) { +// Assert.isFalse(bindingResult.hasErrors(), () -> { +// throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); +// }); +// return ReturnUtil.success(siteExecutiveLogService.addOriginal(businessSiteExecutiveLog)); +// } + +// @ApiOperation("现场检测记录表删除") +// @PostMapping("/delete") +// public ReturnDTO deleteOriginal(@RequestBody @Valid IdDTO idDTO) { +// Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return ReturnUtil.success(siteExecutiveLogService.deleteOriginal(idDTO.getId())); +// } +// +// @ApiOperation("现场检测记录表导出") +// @PostMapping("/export") +// public void exportOriginal(@RequestBody @Valid OriginRecordRequest request, HttpServletResponse response) { +// siteExecutiveLogService.originExport(request, response); +// } } 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 2cc4a24..fe155b8 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 @@ -61,6 +61,7 @@ AGAIN_PRINT_SUBMIT_FAILED(2414, "再次打印提交处理失败"), LOGIN_USER_NOT_STAFF(2415, "登录用户非计量人员"), CERTIFICATE_REPORT_SUBMIT_FAILED(3401, "证书报告提交处理失败"), + SITE_EXECUTIVE__SUBMIT_FAILED(3402, "现场检测审核提交处理失败"), FAIL_READ_EPC_TID(2416, "标签信息读取失败,请重新操作"), READ_WRITER_NOT_CONNECTED(2417, "标签信息读取失败,请连接读写器"), diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java index 09270ca..2d56cf5 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -51,6 +51,8 @@ String OUTSOURCER_PREFIX = "fbf"; //分包项目 String OUTSOURCE_PROJECT_PREFIX = "fbxm"; + //现场检测 + String SITE_EXECUTIVE_PREFIX = "xcjc"; //下载中心 String DOWNLOAD_NO = "xzzx"; diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java index 7e2475d..142ba8d 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/business/MonitorCodeEnum.java @@ -43,7 +43,7 @@ public static MonitorCodeEnum getByCode(String code) { try { for (MonitorCodeEnum temp : values()) { - if (temp.code .equals(code)) { + if (temp.code.equals(code)) { return temp; } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java index c2af7d9..1d34512 100644 --- a/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/meter/MeterDictEnum.java @@ -46,4 +46,7 @@ //证书类型 String CERTIFICATION_CLASS= "certificationClass"; + //现场检测-任务来源 + String TASK_SOURCE= "taskSource"; + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java index 947f383..9cbeac6 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessCertificateReportMapper.java @@ -5,18 +5,13 @@ import com.casic.missiles.dto.business.certificate.CertificateMonitorResponse; import com.casic.missiles.dto.business.certificate.CertificateReportApprovalRequest; import com.casic.missiles.dto.business.certificate.CertificateReportResponse; -import com.casic.missiles.dto.business.print.CertificateListRequest; -import com.casic.missiles.dto.business.print.CertificateListResponse; import com.casic.missiles.dto.customer.CertificationResponse; import com.casic.missiles.dto.customer.sample.CustomerSampleIdRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListRequest; -import com.casic.missiles.dto.meter.TraceSupplierApprovalListResponse; import com.casic.missiles.model.business.BusinessCertificateReport; -import com.casic.missiles.model.meter.MeterTraceSupplier; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; -import org.apache.ibatis.annotations.Select; /** *

@@ -41,4 +36,11 @@ BusinessCertificateReport detailById( @Param("id") Long id); + @Select("SELECT count(id) from business_certificate_report where approval_status =4 and certificate_report_code = #{sampleId} and order_id=#{orderId}") + Long selectSampleCertifications(Long sampleId,Long orderId); + + @Select("SELECT IFNULL(sum(require_certifications),0) FROM business_lab_executive_info blei where blei.measure_status = 4 and blei.sample_id = #{sampleId} and blei.order_id = #{orderId}") + Long selectSampleCertificationAlls(Long sampleId,Long orderId); + + } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java new file mode 100644 index 0000000..2841ed1 --- /dev/null +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.java @@ -0,0 +1,16 @@ +package com.casic.missiles.mapper.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + *

+ * Mapper 接口 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface BusinessSiteExecutiveInfoEquipmentRelationMapper extends BaseMapper { + +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java index 7c98c55..34605b0 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessSiteExecutiveInfoMapper.java @@ -6,6 +6,7 @@ import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; import java.util.List; @@ -22,4 +23,7 @@ List selectDraftListForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request); List selectBatchForApproval(Page page, @Param("request") SiteExecutiveApprovalListRequest request, @Param("businessKeys") List businessKeys); + + @Select("SELECT IFNULL(max(RIGHT(site_executive_no, 12)), 0) from business_site_executive_info") + Long selectMaxCode(); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml index 45758ed..3f77383 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessCertificateReportMapper.xml @@ -239,7 +239,7 @@ SELECT bcr.*, ss.sign_name AS signName, - ss.sign_name AS approvalSignName, + ss1.sign_name AS approvalSignName, st.template_name AS templateName FROM business_certificate_report bcr LEFT JOIN system_sign ss ON bcr.sign_id = ss.id diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml new file mode 100644 index 0000000..3ee8fbd --- /dev/null +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessSiteExecutiveInfoEquipmentRelationMapper.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + id, site_executive_info_id, equipment_id + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java new file mode 100644 index 0000000..f6b2bd6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecuteLogRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel +public class SiteExecuteLogRequest { + + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "负责人", dataType = "String") + private String directorName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "导出ids(查询不用传)", dataType = "List") + private List ids; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java index ec99721..f96a510 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfo.java @@ -3,10 +3,13 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; +import com.casic.missiles.model.meter.MeterStaff; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; +import java.util.List; /** *

@@ -116,4 +119,11 @@ @TableField("update_time") private String updateTime; + @TableField(exist = false) + @ApiModelProperty(value = "携带仪器设备", dataType = "List") + private List equipmentInfoList; + + @TableField(exist = false) + @ApiModelProperty(value = "现场测试、校准或检定人员", dataType = "List") + private List meterStaffList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java new file mode 100644 index 0000000..7c266af --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessSiteExecutiveInfoEquipmentRelation.java @@ -0,0 +1,42 @@ +package com.casic.missiles.model.business; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import java.io.Serializable; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +/** + *

+ * + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Data +@TableName("business_site_executive_info_equipment_relation") +public class BusinessSiteExecutiveInfoEquipmentRelation implements Serializable { + + private static final long serialVersionUID = 1L; + + @TableId("id") + private Long id; + + /** + * 现场检测审批id + */ + @TableField("site_executive_info_id") + private Long siteExecutiveInfoId; + + /** + * 检测设备id + */ + @TableField("equipment_id") + private Long equipmentId; + + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java index dddb150..10759c0 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveEquipmentRelationServiceImpl.java @@ -1,11 +1,19 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveEquipmentRelationMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; +import com.casic.missiles.service.equipment.IEquipmentFixedAssetsService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-测量设备关联表 服务实现类 @@ -17,4 +25,49 @@ @Service public class BusinessSiteExecutiveEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveEquipmentRelationService { + + @Resource + private IEquipmentFixedAssetsService equipmentFixedAssetsService; + + @Override + public boolean saveBatch(Long siteExecutiveId, List equipmentInfoList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + equipmentInfoList.forEach(assets -> { + BusinessSiteExecutiveEquipmentRelation siteExecutiveEquipmentRelation = new BusinessSiteExecutiveEquipmentRelation(); + siteExecutiveEquipmentRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveEquipmentRelation.setEquipmentNo(assets.getEquipmentNo()); + siteExecutiveEquipmentRelation.setEquipmentId(assets.getId()); + list.add(siteExecutiveEquipmentRelation); + }); + return this.saveBatch(list); + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public List getEquipmentsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return equipmentFixedAssetsService.list(list.stream().map(BusinessSiteExecutiveEquipmentRelation::getEquipmentId).collect(Collectors.toList())); + } + return null; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java new file mode 100644 index 0000000..f8bd8eb --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoEquipmentRelationServiceImpl.java @@ -0,0 +1,20 @@ +package com.casic.missiles.service.Impl.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoEquipmentRelationMapper; +import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoEquipmentRelationService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + *

+ * 服务实现类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +@Service +public class BusinessSiteExecutiveInfoEquipmentRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveInfoEquipmentRelationService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java index 6dccd49..319cbad 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveInfoServiceImpl.java @@ -1,27 +1,40 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; import com.casic.missiles.core.model.auth.AuthUser; import com.casic.missiles.core.shiro.ShiroKit; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.dto.flowable.AllApproveDTO; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.dto.flowable.ToBeApprovedDTO; import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.enums.meter.MeterDictEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveEquipmentRelationService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; +import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; import com.casic.missiles.utils.DictCodeUtils; +import com.casic.missiles.utils.NumberGeneratorUtil; +import org.apache.commons.lang3.StringUtils; import org.flowable.engine.RuntimeService; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -50,6 +63,10 @@ private RuntimeService runtimeService; @Autowired private ApprovalOperateService approvalOperateService; + @Autowired + private IBusinessSiteExecutiveEquipmentRelationService siteExecutiveEquipmentRelationService; + @Autowired + private IBusinessSiteExecutiveStaffRelationService siteExecutiveStaffRelationService; @Override public List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception { @@ -59,7 +76,7 @@ }); request.setCreateUserId(user.getId()); List responseList = handleApprovalStatus(page, request); - if(CollectionUtils.isEmpty(responseList)){ + if (CollectionUtils.isEmpty(responseList)) { return new ArrayList<>(); } for (SiteExecutiveApprovalListResponse response : responseList) { @@ -69,6 +86,130 @@ } + @Override + public ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())) { + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + String formId = request.getFormId(); + //2.根据流程定义id启动流程实例 + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + BusinessSiteExecutiveInfo siteExecutiveInfo = new BusinessSiteExecutiveInfo(); + siteExecutiveInfo.setId(request.getId()); + siteExecutiveInfo.setApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + siteExecutiveInfo.setProcessId(processInstance.getId()); + //siteExecutiveInfo.setSubmitDate(DateUtil.formatDateTime(new Date())); + siteExecutiveInfo.setUpdateTime(DateUtil.formatDateTime(new Date())); + int row = this.baseMapper.updateById(siteExecutiveInfo); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getCode(), BusinessExceptionEnum.SITE_EXECUTIVE__SUBMIT_FAILED.getMessage()); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + initSiteExecutiveInfo(siteExecutiveInfo); + if (this.baseMapper.insert(siteExecutiveInfo) > 0) { + //加入现场检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(siteExecutiveInfo.getId()); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + baseApprovalService.failUpdate(siteExecutiveInfo.getProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //删除数据库记录 + if (this.baseMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteBatchSiteExecutive(List ids) { + + if (baseMapper.deleteBatchIds(ids) > 0) { + //删除检测人员绑定关系 + siteExecutiveStaffRelationService.deleteBySiteExecutiveIds(ids); + //删除监测设备绑定关系 + siteExecutiveEquipmentRelationService.deleteBySiteExecutiveIds(ids); + return ReturnUtil.success(); + } + return ReturnUtil.failed("删除失败"); + } + + @Override + public ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo) { + if (this.baseMapper.updateById(siteExecutiveInfo) > 0) { + //加入检测人员绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getMeterStaffList()) && siteExecutiveInfo.getMeterStaffList().size() > 0) { + siteExecutiveStaffRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getMeterStaffList()); + } + //加入所用设备绑定 + if (ObjectUtil.isNotEmpty(siteExecutiveInfo.getEquipmentInfoList()) && siteExecutiveInfo.getEquipmentInfoList().size() > 0) { + siteExecutiveEquipmentRelationService.saveBatch(siteExecutiveInfo.getId(), siteExecutiveInfo.getEquipmentInfoList()); + } + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private void initSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo) { + Long maxNo = this.baseMapper.selectMaxCode(); + String siteExecutiveNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.SITE_EXECUTIVE_PREFIX, maxNo); + AuthUser authUser = ShiroKit.getUser(); + siteExecutiveInfo.setCreateUser(authUser.getId()); + siteExecutiveInfo.setSiteExecutiveNo(siteExecutiveNo); + siteExecutiveInfo.setCreateTime(DateUtil.formatDateTime(new Date())); + } + + @Override + public BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id) { + BusinessSiteExecutiveInfo siteExecutiveInfo = this.baseMapper.selectById(id); + + if (siteExecutiveInfo != null) { + //查询是否有关联的检测人员 + siteExecutiveInfo.setMeterStaffList(siteExecutiveStaffRelationService.getStaffsByExecutiveInfoId(id)); + //查询是否有关联的监测设备 + siteExecutiveInfo.setEquipmentInfoList(siteExecutiveEquipmentRelationService.getEquipmentsByExecutiveInfoId(id)); + if(StringUtils.isNotEmpty(siteExecutiveInfo.getTaskSource())){ + siteExecutiveInfo.setTaskSourceName(dictService.getDictNameByCode(MeterDictEnum.TASK_SOURCE,siteExecutiveInfo.getTaskSource())); + } + } + return siteExecutiveInfo; + } + private List handleApprovalStatus(Page page, SiteExecutiveApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java index cdac240..7869717 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessSiteExecutiveStaffRelationServiceImpl.java @@ -1,11 +1,20 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.mapper.business.BusinessSiteExecutiveStaffRelationMapper; +import com.casic.missiles.mapper.meter.MeterStaffMapper; +import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; import com.casic.missiles.model.business.BusinessSiteExecutiveStaffRelation; +import com.casic.missiles.model.meter.MeterStaff; import com.casic.missiles.service.business.IBusinessSiteExecutiveStaffRelationService; import org.springframework.stereotype.Service; +import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + /** *

* 外场检测-计量人员关联表 服务实现类 @@ -17,4 +26,47 @@ @Service public class BusinessSiteExecutiveStaffRelationServiceImpl extends ServiceImpl implements IBusinessSiteExecutiveStaffRelationService { + @Resource + private MeterStaffMapper meterStaffMapper; + + @Override + public boolean saveBatch(Long siteExecutiveId, List meterStaffList) { + //先删除所有的绑定关系 + deleteBySiteExecutiveId(siteExecutiveId); + //新写入绑定关系 + List list = new ArrayList<>(); + meterStaffList.forEach(meterStaff -> { + BusinessSiteExecutiveStaffRelation siteExecutiveStaffRelation = new BusinessSiteExecutiveStaffRelation(); + siteExecutiveStaffRelation.setSiteExecutiveId(siteExecutiveId); + siteExecutiveStaffRelation.setStaffId(meterStaff.getId()); + list.add(siteExecutiveStaffRelation); + }); + return this.saveBatch(list); + } + + @Override + public List getStaffsByExecutiveInfoId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + List list = this.baseMapper.selectList(queryWrapper); + if (list != null && list.size() > 0) { + return meterStaffMapper.selectBatchIds(list.stream().map(BusinessSiteExecutiveStaffRelation::getStaffId).collect(Collectors.toList())); + } + return null; + } + + + @Override + public Boolean deleteBySiteExecutiveId(Long siteExecutiveId) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("site_executive_id", siteExecutiveId); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } + + @Override + public Boolean deleteBySiteExecutiveIds(List siteExecutiveIds) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.in("site_executive_id", siteExecutiveIds); + return this.baseMapper.delete(queryWrapper) > 0 ? true : false; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java index 97ccbdf..aa58548 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveEquipmentRelationService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.model.business.BusinessSiteExecutiveEquipmentRelation; +import com.casic.missiles.model.equipment.EquipmentFixedAssets; + +import java.util.List; /** *

@@ -13,4 +16,11 @@ */ public interface IBusinessSiteExecutiveEquipmentRelationService extends IService { + boolean saveBatch(Long siteExecutiveId, List equipmentInfoList); + + List getEquipmentsByExecutiveInfoId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveIds(List siteExecutiveIds); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java new file mode 100644 index 0000000..1da43da --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoEquipmentRelationService.java @@ -0,0 +1,16 @@ +package com.casic.missiles.service.business; + +import com.casic.missiles.model.business.BusinessSiteExecutiveInfoEquipmentRelation; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + *

+ * 服务类 + *

+ * + * @author wangpeng + * @since 2023-04-03 + */ +public interface IBusinessSiteExecutiveInfoEquipmentRelationService extends IService { + +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java index 656ef37..c9637c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveInfoService.java @@ -2,9 +2,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; -import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; +import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; import java.util.List; @@ -13,10 +16,25 @@ * 现场检测表 服务类 *

* - * @author wangpeng + * @author zt * @since 2023-03-25 */ public interface IBusinessSiteExecutiveInfoService extends IService { List siteExecutiveApprovalListPage(SiteExecutiveApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveSiteExecutiveInfo(BusinessSiteExecutiveInfo siteExecutiveInfo); + + ReturnDTO siteExecutiveInfoSubmit(BaseApprovalSubmitRequest request); + + ReturnDTO failUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo); + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO deleteBatchSiteExecutive(List ids); + + ReturnDTO draftUpdate(BusinessSiteExecutiveInfo siteExecutiveInfo); + + BusinessSiteExecutiveInfo siteExecutiveInfoDetail(Long id); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveStaffRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveStaffRelationService.java index 119dcab..f369934 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveStaffRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessSiteExecutiveStaffRelationService.java @@ -2,6 +2,9 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.model.business.BusinessSiteExecutiveStaffRelation; +import com.casic.missiles.model.meter.MeterStaff; + +import java.util.List; /** *

@@ -13,4 +16,12 @@ */ public interface IBusinessSiteExecutiveStaffRelationService extends IService { + boolean saveBatch(Long siteExecutiveId, List meterStaffList); + + List getStaffsByExecutiveInfoId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveId(Long siteExecutiveId); + + Boolean deleteBySiteExecutiveIds(List siteExecutiveIds); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CertificateReportEventPostProcessor.java b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CertificateReportEventPostProcessor.java index 1a19ab4..5322230 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CertificateReportEventPostProcessor.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/listeners/processor/CertificateReportEventPostProcessor.java @@ -5,9 +5,14 @@ import com.alibaba.fastjson.JSONObject; import com.casic.missiles.dto.flowable.NotifyEventStatusDTO; import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.enums.business.MeasureTypeEnum; import com.casic.missiles.enums.notifyevent.ActionStatusBeanEnum; +import com.casic.missiles.enums.sample.SampleStatusEnum; import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.mapper.business.BusinessOrderMapper; +import com.casic.missiles.mapper.business.BusinessOrderSampleRelationMapper; +import com.casic.missiles.model.business.BusinessOrder; import com.casic.missiles.service.listeners.NotifyEventPostProcessor; import com.casic.missiles.mapper.business.BusinessCertificatePrintMapper; import com.casic.missiles.mapper.business.BusinessCertificateReportMapper; @@ -21,6 +26,7 @@ import com.google.gson.JsonObject; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Service; import java.util.Date; @@ -43,17 +49,20 @@ }); BusinessCertificateReportMapper certificateReportMapper = SpringContextUtil.getBean(BusinessCertificateReportMapper.class); CustomerSampleMapper sampleMapper = SpringContextUtil.getBean(CustomerSampleMapper.class); + BusinessOrderMapper orderMapper = SpringContextUtil.getBean(BusinessOrderMapper.class); + BusinessOrderSampleRelationMapper orderSampleRelationMapper = SpringContextUtil.getBean(BusinessOrderSampleRelationMapper.class); BusinessCertificateReport certificateReport = new BusinessCertificateReport(); certificateReport.setId(id); - //审批状态为通过 + //设置审批状态为通过 certificateReport.setApprovalStatus(ApprovalStatusEnum.PASSED); certificateReport.setUpdateTime(DateUtil.formatDateTime(new Date())); int row = certificateReportMapper.updateById(certificateReport); - //更新样品有效期 + //更新样品有效期和待归还状态 BusinessCertificateReport certificateReport1 = certificateReportMapper.selectById(id); - if (certificateReport1.getSampleId() != null) { + if (certificateReport1.getSampleId() != null&&certificateReport1.getOrderId()!= null) { CustomerSampleInfo sampleInfo = sampleMapper.selectById(certificateReport1.getSampleId()); + BusinessOrder businessOrder = orderMapper.selectById(certificateReport1.getOrderId()); if (sampleInfo != null) { //比较哪个时间更早 String endTime = sampleInfo.getValidDeadline(); @@ -64,6 +73,14 @@ sampleInfo.setValidDeadline(StringUtils.isNotEmpty(endTime) ? endTime : certificateReport1.getExpirationDate()); int rs = sampleMapper.updateById(sampleInfo); if (row < 1 || rs < 1) throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + //若样品是自检或现场检查方式、已全部检定完成更新样品待归还状态 + if (MeasureTypeEnum.INSIDE_MEASURE.equals(sampleInfo.getMeasureType())&&businessOrder!=null) { + //获取样品已取得的证书不小于应出具的总数时更新样品待归还状态 + if(certificateReportMapper.selectSampleCertifications(sampleInfo.getId(), businessOrder.getId())>= + certificateReportMapper.selectSampleCertificationAlls(sampleInfo.getId(), businessOrder.getId())) { + orderSampleRelationMapper.updateByOrderIdAndSampleId(businessOrder.getId(),sampleInfo.getId(), SampleStatusEnum.TO_GIVE_BACK); + } + } } }