diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectMapper.xml index bb2932f..f35e05d 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectMapper.xml @@ -23,6 +23,7 @@ + @@ -32,4 +33,70 @@ id, project_no, project_name, applicant_id, applicant_name, applicant_time, pre_cost, outsourcer_id, outsource_reason, pre_start_time, pre_end_time, minio_file_name, apply_approval_status, apply_process_id, check_approval_status, check_process_id, check_conclusion, check_time, remark, create_time, update_time + + + + + + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 91850c5..6536c9b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -189,6 +189,7 @@ } @Override + @Transactional public ReturnDTO submitTraceSupplier(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 91850c5..6536c9b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -189,6 +189,7 @@ } @Override + @Transactional public ReturnDTO submitTraceSupplier(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java index 85f3d80..cf97666 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java @@ -1,8 +1,17 @@ package com.casic.missiles.service.business; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.model.business.BusinessOutsourceProject; +import java.util.List; + /** *

* 分包项目表 服务类 @@ -13,4 +22,19 @@ */ public interface IBusinessOutsourceProjectService extends IService { + List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveProject(BusinessOutsourceProject outsourceProject); + + ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject); + + ReturnDTO submitProject(BaseApprovalSubmitRequest request); + + ReturnDTO deleteProject(Long id); + + ReturnDTO projectDetail(Long id) throws Exception; + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 91850c5..6536c9b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -189,6 +189,7 @@ } @Override + @Transactional public ReturnDTO submitTraceSupplier(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java index 85f3d80..cf97666 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java @@ -1,8 +1,17 @@ package com.casic.missiles.service.business; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.model.business.BusinessOutsourceProject; +import java.util.List; + /** *

* 分包项目表 服务类 @@ -13,4 +22,19 @@ */ public interface IBusinessOutsourceProjectService extends IService { + List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveProject(BusinessOutsourceProject outsourceProject); + + ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject); + + ReturnDTO submitProject(BaseApprovalSubmitRequest request); + + ReturnDTO deleteProject(Long id); + + ReturnDTO projectDetail(Long id) throws Exception; + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java index 7f2c4ea..26ac0f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java @@ -1,8 +1,14 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import java.util.List; + /** *

* 分包方-能力表 服务类 @@ -13,4 +19,11 @@ */ public interface IBusinessOutsourcerAbilityService extends IService { + Page listPage(Page page, OutsourcerAbilityListRequest request); + + List list(OutsourcerAbilityListRequest request); + + ReturnDTO addAbility(BusinessOutsourcerAbility ability); + + ReturnDTO deleteAbility(IdDTO idDto); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 91850c5..6536c9b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -189,6 +189,7 @@ } @Override + @Transactional public ReturnDTO submitTraceSupplier(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java index 85f3d80..cf97666 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java @@ -1,8 +1,17 @@ package com.casic.missiles.service.business; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.model.business.BusinessOutsourceProject; +import java.util.List; + /** *

* 分包项目表 服务类 @@ -13,4 +22,19 @@ */ public interface IBusinessOutsourceProjectService extends IService { + List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveProject(BusinessOutsourceProject outsourceProject); + + ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject); + + ReturnDTO submitProject(BaseApprovalSubmitRequest request); + + ReturnDTO deleteProject(Long id); + + ReturnDTO projectDetail(Long id) throws Exception; + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java index 7f2c4ea..26ac0f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java @@ -1,8 +1,14 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import java.util.List; + /** *

* 分包方-能力表 服务类 @@ -13,4 +19,11 @@ */ public interface IBusinessOutsourcerAbilityService extends IService { + Page listPage(Page page, OutsourcerAbilityListRequest request); + + List list(OutsourcerAbilityListRequest request); + + ReturnDTO addAbility(BusinessOutsourcerAbility ability); + + ReturnDTO deleteAbility(IdDTO idDto); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java index 317585f..3848657 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java @@ -1,8 +1,14 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import java.util.List; + /** *

* 分包方-人员信息表 服务类 @@ -13,4 +19,11 @@ */ public interface IBusinessOutsourcerUserInfoService extends IService { + Page listPage(Page page, OutsourcerUserListRequest request); + + List list(OutsourcerUserListRequest request); + + ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo); + + ReturnDTO deleteUser(IdDTO idDto); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java index e4c96c3..0c4aa69 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java @@ -1,7 +1,34 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.BaseApprovalSubmitRequest; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProject; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +import com.casic.missiles.utils.DictCodeUtils; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; /** *

@@ -11,8 +38,112 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j @RestController @RequestMapping("/business/outsourceProject") -public class BusinessOutsourceProjectController { +public class BusinessOutsourceProjectController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + @ApiOperation("分包项目审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> outsourcerApprovalListPage(@RequestBody @Valid OutsourceProjectApprovalListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(request); + Page page = PageFactory.defaultPage(); + List responseList = projectService.projectApprovalListPage(request, page); + page.setRecords(responseList); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("分包项目审批保存(保存至草稿箱)") + @PostMapping("/save") + @ResponseBody + public ReturnDTO save(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProject(outsourceProject); + } + + @ApiOperation("草稿箱分包项目编辑") + @PostMapping("/draftUpdate") + @ResponseBody + public ReturnDTO draftUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) throws Exception { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.draftUpdate(outsourceProject); + } + + @ApiOperation("分包项目提交(未调用过保存接口保存至草稿箱需先调用保存接口,再调用该接口)") + @PostMapping("/submit") + @ResponseBody + public ReturnDTO submit(@RequestBody @Valid BaseApprovalSubmitRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.submitProject(request); + } + + @ApiOperation("分包项目删除(草稿删除也调用该接口)") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.deleteProject(idDTO.getId()); + } + +// @ApiOperation("分包项目批量删除") +// @PostMapping("/batchDelete") +// @ResponseBody +// public ReturnDTO batchDelete(@RequestBody @Valid IdsDTO idsDTO) { +// Assert.isFalse(CollectionUtils.isEmpty(idsDTO.getIds()), () -> { +// throw new BusinessException(BusinessExceptionEnum.ID_NULL); +// }); +// return projectService.deleteBatchProject(idsDTO.getIds()); +// } + + @ApiOperation("分包项目详情") + @PostMapping("/detail") + @ResponseBody + public ReturnDTO supplierDetail(@RequestBody @Valid IdDTO idDTO) throws Exception { + Assert.isFalse(Objects.isNull(idDTO.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + return projectService.projectDetail(idDTO.getId()); + } + + @ApiOperation("分包项目审批操作-删除") + @PostMapping("/approval/operate/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody @Valid ApprovalDeleteRequest request, BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.approvalDelete(request); + } + + @ApiOperation("未通过分包项目编辑(驳回后的分包项目重新编辑,仅未通过列表中的编辑按钮可调用)") + @PostMapping("/failUpdate") + @ResponseBody + public ReturnDTO failUpdate(@RequestBody @Valid BusinessOutsourceProject outsourceProject, BindingResult bindingResult) { + Assert.isFalse(Objects.isNull(outsourceProject.getId()), () -> { + throw new BusinessException(BusinessExceptionEnum.ID_NULL); + }); + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return projectService.failUpdate(outsourceProject); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java index 4225471..537a66b 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerAbilityController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方业务能力") +@Slf4j @RestController @RequestMapping("/business/outsourcerAbility") -public class BusinessOutsourcerAbilityController { +public class BusinessOutsourcerAbilityController extends ExportController { + @Autowired + private IBusinessOutsourcerAbilityService abilityService; + @ApiOperation("分包方业务能力列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(abilityService.listPage(page, request))); + } + + @ApiOperation("分包方业务能力列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerAbilityListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(abilityService.list(request)); + } + + @ApiOperation("业务能力新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerAbility ability) { + return abilityService.addAbility(ability); + } + + @ApiOperation("业务能力删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return abilityService.deleteAbility(idDto); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java index f7ab7c6..1e3e4ac 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerController.java @@ -131,7 +131,7 @@ return outsourcerInfoService.submitOutsourcer(request); } - @ApiOperation("分包方档案删除(草稿也调用该接口)") + @ApiOperation("分包方档案删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java index 460846d..f5ea3a6 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourcerUserInfoController.java @@ -1,7 +1,26 @@ package com.casic.missiles.controller.business; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +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.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.exception.BusinessException; +import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import com.casic.missiles.model.exception.enums.CoreExceptionEnum; +import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; /** *

@@ -11,8 +30,46 @@ * @author wangpeng * @since 2023-03-25 */ +@Api(tags = "分包管理接口-分包方人员") +@Slf4j @RestController @RequestMapping("/business/outsourcerUser") -public class BusinessOutsourcerUserInfoController { +public class BusinessOutsourcerUserInfoController extends ExportController { + @Autowired + private IBusinessOutsourcerUserInfoService userInfoService; + @ApiOperation("分包方人员列表(分页)") + @PostMapping("/listPage") + @ResponseBody + public ReturnDTO> userListPage(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + Page page = PageFactory.defaultPage(); + return ReturnUtil.success(super.packForBT(userInfoService.listPage(page, request))); + } + + @ApiOperation("分包方人员列表") + @PostMapping("/list") + @ResponseBody + public ReturnDTO> userList(@RequestBody @Valid OutsourcerUserListRequest request, BindingResult bindingResult) throws Exception { + if (bindingResult.hasErrors()) { + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + return ReturnUtil.success(userInfoService.list(request)); + } + + @ApiOperation("人员新增") + @PostMapping("/add") + @ResponseBody + public ReturnDTO add(@RequestBody BusinessOutsourcerUserInfo userInfo) { + return userInfoService.addUser(userInfo); + } + + @ApiOperation("人员删除") + @PostMapping("/delete") + @ResponseBody + public ReturnDTO delete(@RequestBody IdDTO idDto) { + return userInfoService.deleteUser(idDto); + } } 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 e622a36..5b36a79 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 @@ -8,7 +8,7 @@ import com.casic.missiles.dto.ReturnUtil; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.model.exception.enums.CoreExceptionEnum; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.utils.DictCodeUtils; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java index c95d6dc..a25eb00 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterFileController.java @@ -142,7 +142,7 @@ return meterFileService.updateFile(idDTO.getId()); } - @ApiOperation("文件删除(草稿也调用该接口)") + @ApiOperation("文件删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java index d773a83..5d77839 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTraceSupplierController.java @@ -129,7 +129,7 @@ return null; } - @ApiOperation("溯源供方删除(草稿也调用该接口)") + @ApiOperation("溯源供方删除(草稿删除也调用该接口)") @PostMapping("/delete") @ResponseBody public ReturnDTO supplierDelete(@RequestBody @Valid IdDTO idDTO) { diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java index de6976b..17e9234 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/meter/MeterTrainController.java @@ -133,7 +133,7 @@ return null; } - @ApiOperation("培训计划删除(草稿也调用该接口)") + @ApiOperation("培训计划删除(草稿删除也调用该接口)") @PostMapping("/plan/delete") @ResponseBody public ReturnDTO planDelete(@RequestBody @Valid IdDTO idDTO) { 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 b8d9573..394626e 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 @@ -66,7 +66,9 @@ READ_WRITER_NOT_CONNECTED_OR_NO_TID(2418, "连接读写器失败或无可识别标签"), OUTSOURCER_SAVE_FAILED(2419, "分包方保存至草稿箱失败"), - OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"); + OUTSOURCER_SUBMIT_FAILED(2420, "分包方提交处理失败"), + OUTSOURCE_PROJECT_SAVE_FAILED(2421, "分包项目保存至草稿箱失败"), + OUTSOURCE_PROJECT_SUBMIT_FAILED(2422, "分包项目提交处理失败"); private Integer code; private String message; 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 4cc50be..dfe0628 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 @@ -49,5 +49,7 @@ String LAB_EXECUTIVE_TEMPLATE_PREFIX = "sysjcmb"; //分包方 String OUTSOURCER_PREFIX = "fbf"; + //分包项目 + String OUTSOURCE_PROJECT_PREFIX = "fbxm"; } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java index faf61fa..b1724d8 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectMapper.java @@ -1,7 +1,13 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.model.business.BusinessOutsourceProject; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +19,11 @@ */ public interface BusinessOutsourceProjectMapper extends BaseMapper { + List selectDraftListForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request); + + List selectBatchForApproval(Page page, @Param("request") OutsourceProjectApprovalListRequest request, @Param("businessKey") List businessKeys); + + Long selectMaxOutsourcerNo(); + + BusinessOutsourceProject selectProjectById(@Param("id") Long id); } 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 f023fb9..7c98c55 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import org.apache.ibatis.annotations.Param; import java.util.List; diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml index 07385fb..95012eb 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOrderSampleRelationMapper.xml @@ -26,7 +26,7 @@ bosr.sample_id, csi.sample_no, csi.sample_name, csi.sample_model, csi.manufacturing_no, csi.manufacturer, csi.manufacturer_country, csi.manufacturing_date, csi.ABC, bo.customer_id, bo.customer_no, bo.customer_name, bo.customer_phone, bo.customer_address, bo.id AS orderId, bo.order_code, bo.deliverer, bo.deliverer_tel, bo.plan_deliver_time, bo.require_over_time, bo.certifications, bosr.measure_content, csi.measure_period, - csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, csi.measure_type, csi.label_bind + csi.measure_last_time AS measureLastDate, csi.valid_deadline AS effectiveDate, bosr.remark, csi.minio_file_name, bosr.measure_type, csi.label_bind + SELECT bop.*, boi.outsourcer_name + FROM business_outsource_project bop + LEFT JOIN business_outsourcer_info boi ON bop.outsourcer_id = boi.id + WHERE bop.approval_status = #{request.approvalStatus} + AND bop.create_user = #{request.createUserId} + + and bop.project_no like concat('%',#{request.projectNo},'%') + + + and bop.project_name like concat('%',#{request.projectName},'%') + + + and bop.applicant_name like concat('%',#{request.applicantName},'%') + + + and boi.outsourcer_name like concat('%',#{request.outsourcerName},'%') + + + and bop.applicant_time >= #{request.applicantStartTime} + + + and bop.applicant_time <= #{request.applicantEndTime} + + + + + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java new file mode 100644 index 0000000..b7d61d6 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListRequest.java @@ -0,0 +1,49 @@ +package com.casic.missiles.dto.business.outsource; + +import com.casic.missiles.annotation.DictCodeField; +import com.casic.missiles.constants.MeterDictCode; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +/** + * @Description: 分包项目审批列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:21 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListRequest { + @NotEmpty(message = "审批状态类型不能为空") + @DictCodeField(message = "审批状态类型不合法", cacheName = MeterDictCode.APPROVAL_STATUS) + @ApiModelProperty(value = "审批状态类型code", dataType = "String") + private String approvalStatus; + + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "申请开始时间", dataType = "String") + private String applicantStartTime; + + @ApiModelProperty(value = "申请结束时间", dataType = "String") + private String applicantEndTime; + + @ApiModelProperty(hidden = true) + private Long createUserId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java new file mode 100644 index 0000000..3dc13d9 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectApprovalListResponse.java @@ -0,0 +1,53 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 分包项目审批列表响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 11:28 + */ +@Data +@ApiModel +public class OutsourceProjectApprovalListResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; + + @ApiModelProperty(value = "分包项目名称", dataType = "String") + private String projectName; + + @ApiModelProperty(value = "申请人名字", dataType = "String") + private String applicantName; + + @ApiModelProperty(value = "分包方名称", dataType = "String") + private String outsourcerName; + + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + private String outsourceReason; + + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + private String outsourceReasonName; + + @ApiModelProperty(value = "创建时间", dataType = "String") + private String createTime; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典code", dataType = "String") + private String applyApprovalStatus; + + @ApiModelProperty(value = "分包项目申请审批状态类型-字典value", dataType = "String") + private String applyApprovalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java new file mode 100644 index 0000000..e62f5aa --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourceProjectSaveResponse.java @@ -0,0 +1,18 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Description: 草稿保存响应实体 + * @Author: wangpeng + * @Date: 2023/3/28 15:11 + */ +@Data +public class OutsourceProjectSaveResponse { + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + @ApiModelProperty(value = "分包项目编号", dataType = "String") + private String projectNo; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java new file mode 100644 index 0000000..02eeed7 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerAbilityListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方业务能力列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/28 16:24 + */ +@Data +@ApiModel +public class OutsourcerAbilityListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java index 716c5e5..78bcc1e 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerApprovalListResponse.java @@ -108,6 +108,9 @@ @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") private String approvalStatusName; + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + /** * 任务id */ diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java new file mode 100644 index 0000000..9295307 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OutsourcerUserListRequest.java @@ -0,0 +1,21 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +/** + * @Description: 分包方人员列表请求实体 + * @Author: wangpeng + * @Date: 2023/3/27 16:24 + */ +@Data +@ApiModel +public class OutsourcerUserListRequest { + @NotNull(message = "分包方id不能为空") + @ApiModelProperty(value = "分包方id", dataType = "Long") + private Long outsourcerId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java new file mode 100644 index 0000000..f92a671 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/siteExecutive/SiteExecutiveApprovalListResponse.java @@ -0,0 +1,139 @@ +package com.casic.missiles.dto.business.siteExecutive; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + *

+ * 现场检测表 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel +@Data +public class SiteExecutiveApprovalListResponse { + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") + private Long id; + + @ExcelProperty("现场检测编号") + @ApiModelProperty(value = "现场检测编号", dataType = "String") + private String siteExecutiveNo; + + @ExcelProperty("现场检测名字") + @ApiModelProperty(value = "现场检测名字", dataType = "String") + private String siteExecutiveName; + + @ApiModelProperty(value = "负责人id", dataType = "String") + private String directorId; + + @ExcelProperty("负责人") + @ApiModelProperty(value = "负责人名字", dataType = "String") + private String directorName; + + @ExcelProperty("申请时间") + @ApiModelProperty(value = "申请时间", dataType = "String") + private String applyTime; + + @ApiModelProperty(value = "任务来源-字典code", dataType = "String") + private String taskSource; + + @ApiModelProperty(value = "任务来源-字典value", dataType = "String") + private String taskSourceName; + + @ApiModelProperty(value = "委托书id", dataType = "Long") + private Long orderId; + + @ApiModelProperty(value = "委托方id", dataType = "Long") + private Long customerId; + + @ApiModelProperty(value = "委托方名字", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") + private String fullAddress; + + @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") + private String addressCountryName; + + @ApiModelProperty(value = "公司地址-省名字", dataType = "String") + private String addressProvinceName; + + @ApiModelProperty(value = "公司地址-市名字", dataType = "String") + private String addressCityName; + + @ApiModelProperty(value = "公司地址-区名字", dataType = "String") + private String addressAreaName; + + @ApiModelProperty(value = "委托方联系人", dataType = "String") + private String director; + + @ApiModelProperty(value = "委托方电话", dataType = "String") + private String phone; + + @ApiModelProperty(value = "预计计量费用", dataType = "String") + private String preCost; + + @ApiModelProperty(value = "预计开始时间", dataType = "String") + private String preStartTime; + + @ApiModelProperty(value = "预计结束时间", dataType = "String") + private String preEndTime; + + @ApiModelProperty(value = "检测地址", dataType = "String") + private String executiveAddress; + + @ApiModelProperty(value = "现场环境条件", dataType = "String") + private String executiveEnvironment; + + @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") + private String hazardSourceAndPreventionMethod; + + @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") + private String executiveItem; + + @ApiModelProperty(value = "备注", dataType = "String") + private String remark; + + @ApiModelProperty(hidden = true) + @TableField("is_del") + private Integer isDel; + + @ApiModelProperty(value = "创建时间", dataType = "String") + @TableField("create_time") + private String createTime; + + @ApiModelProperty(hidden = true) + @TableField("update_time") + private String updateTime; + + @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") + private String approvalStatus; + + @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") + private String approvalStatusName; + + @ApiModelProperty(value = "流程实例id", dataType = "String") + private String processId; + + @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") + private String taskId; + + @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") + private Integer decisionItem; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java index be7b8d7..516fbd9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessCertificateReport.java @@ -193,7 +193,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java index c026d31..1084a81 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProject.java @@ -1,10 +1,20 @@ package com.casic.missiles.model.business; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.write.style.ColumnWidth; +import com.alibaba.excel.annotation.write.style.ContentRowHeight; +import com.alibaba.excel.annotation.write.style.ContentStyle; +import com.alibaba.excel.annotation.write.style.HeadRowHeight; +import com.alibaba.excel.enums.poi.BorderStyleEnum; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotBlank; import java.io.Serializable; /** @@ -15,132 +25,184 @@ * @author wangpeng * @since 2023-03-23 */ +@ColumnWidth(30) +@HeadRowHeight(15) +@ContentRowHeight(20) +@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) +@ExcelIgnoreUnannotated +@ApiModel @Data @TableName("business_outsource_project") public class BusinessOutsourceProject implements Serializable { private static final long serialVersionUID = 1L; + @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") @TableId("id") private Long id; /** * 分包项目编号 */ + @ExcelProperty("分包项目编号") + @ApiModelProperty(value = "分包项目编号", dataType = "String") @TableField("project_no") private String projectNo; /** * 分包项目名称 */ + @ExcelProperty("分包项目名称") + @ApiModelProperty(value = "分包项目名称", dataType = "String") @TableField("project_name") private String projectName; /** * 申请人id */ + @ApiModelProperty(value = "申请人id", dataType = "Long") @TableField("applicant_id") private Long applicantId; /** * 申请人名字 */ + @ExcelProperty("申请人名字") + @ApiModelProperty(value = "申请人名字", dataType = "String") @TableField("applicant_name") private String applicantName; /** * 申请时间 */ + @ApiModelProperty(value = "申请时间", dataType = "String") @TableField("applicant_time") private String applicantTime; /** * 预计费用 */ + @ApiModelProperty(value = "预计费用", dataType = "String") @TableField("pre_cost") private String preCost; /** * 分包方id */ + @ApiModelProperty(value = "分包方id", dataType = "String") @TableField("outsourcer_id") private Long outsourcerId; + @ExcelProperty("分包方名称") + @ApiModelProperty(hidden = true) + @TableField(exist = false) + private String outsourcerName; + /** - * 分包原因-字典 - */ + * 分包原因-字典code */ + @ApiModelProperty(value = "分包原因-字典code", dataType = "String") + @NotBlank(message = "分包原因不能为空") @TableField("outsource_reason") private String outsourceReason; /** + * 分包原因-字典value + */ + @ApiModelProperty(value = "分包原因-字典value", dataType = "String") + @ExcelProperty("分包原因") + @TableField(exist = false) + private String outsourceReasonName; + + /** * 预计开始时间 */ + @ApiModelProperty(value = "预计开始时间", dataType = "String") + @ExcelProperty("预计开始时间") @TableField("pre_start_time") private String preStartTime; /** * 预计结束时间 */ + @ApiModelProperty(value = "预计结束时间", dataType = "String") + @ExcelProperty("预计结束时间") @TableField("pre_end_time") private String preEndTime; /** * minio存储文件名 */ + @ApiModelProperty(value = "minio存储文件名", dataType = "String") @TableField("minio_file_name") private String minioFileName; /** * 申请审批状态 */ + @ApiModelProperty(hidden = true) @TableField("apply_approval_status") private String applyApprovalStatus; /** * 申请流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过申请编辑接口必传参数)", dataType = "String") @TableField("apply_process_id") private String applyProcessId; /** * 验收审批状态 */ + @ApiModelProperty(hidden = true) @TableField("check_approval_status") private String checkApprovalStatus; /** * 验收流程实例id */ + @ApiModelProperty(value = "流程实例id(未通过验收编辑接口必传参数)", dataType = "String") @TableField("check_process_id") private String checkProcessId; /** * 验收结论 */ + @ApiModelProperty(value = "验收结论", dataType = "String") + @ExcelProperty("验收结论") @TableField("check_conclusion") private String checkConclusion; /** * 验收时间 */ + @ApiModelProperty(value = "验收时间", dataType = "String") + @ExcelProperty("验收时间") @TableField("check_time") private String checkTime; /** * 备注 */ + @ApiModelProperty(value = "备注", dataType = "String") + @ExcelProperty("备注") @TableField("remark") private String remark; + @ApiModelProperty(hidden = true) + @TableField("create_user") + private Long createUser; + /** * 创建时间 */ + @ApiModelProperty(hidden = true) @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(hidden = true) @TableField("update_time") private String updateTime; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java index 604dcbf..2e1da88 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourcerInfo.java @@ -364,7 +364,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; 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 ceb3c17..d54a93a 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 @@ -93,7 +93,7 @@ @TableField("approval_status") private String approvalStatus; - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过现场检测编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java deleted file mode 100644 index e5f772c..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/SiteExecutiveApprovalListResponse.java +++ /dev/null @@ -1,140 +0,0 @@ -package com.casic.missiles.model.business; - -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.alibaba.excel.annotation.write.style.ColumnWidth; -import com.alibaba.excel.annotation.write.style.ContentRowHeight; -import com.alibaba.excel.annotation.write.style.ContentStyle; -import com.alibaba.excel.annotation.write.style.HeadRowHeight; -import com.alibaba.excel.enums.poi.BorderStyleEnum; -import com.baomidou.mybatisplus.annotation.TableField; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - *

- * 现场检测表 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@ColumnWidth(30) -@HeadRowHeight(15) -@ContentRowHeight(20) -@ContentStyle(borderLeft = BorderStyleEnum.THIN, borderBottom = BorderStyleEnum.THIN, borderTop = BorderStyleEnum.THIN, borderRight = BorderStyleEnum.THIN) -@ExcelIgnoreUnannotated -@ApiModel -@Data -public class SiteExecutiveApprovalListResponse { - @ApiModelProperty(value = "主键id(列表、更新、详情接口参数)", dataType = "Long") - private Long id; - - @ExcelProperty("现场检测编号") - @ApiModelProperty(value = "现场检测编号", dataType = "String") - private String siteExecutiveNo; - - @ExcelProperty("现场检测名字") - @ApiModelProperty(value = "现场检测名字", dataType = "String") - private String siteExecutiveName; - - @ApiModelProperty(value = "负责人id", dataType = "String") - private String directorId; - - @ExcelProperty("负责人") - @ApiModelProperty(value = "负责人名字", dataType = "String") - private String directorName; - - @ExcelProperty("申请时间") - @ApiModelProperty(value = "申请时间", dataType = "String") - private String applyTime; - - @ApiModelProperty(value = "任务来源-字典code", dataType = "String") - private String taskSource; - - @ApiModelProperty(value = "任务来源-字典value", dataType = "String") - private String taskSourceName; - - @ApiModelProperty(value = "委托书id", dataType = "Long") - private Long orderId; - - @ApiModelProperty(value = "委托方id", dataType = "Long") - private Long customerId; - - @ApiModelProperty(value = "委托方名字", dataType = "String") - private String customerName; - - @ApiModelProperty(value = "公司地址-详细地址", dataType = "String") - private String fullAddress; - - @ApiModelProperty(value = "公司地址-国家名字", dataType = "String") - private String addressCountryName; - - @ApiModelProperty(value = "公司地址-省名字", dataType = "String") - private String addressProvinceName; - - @ApiModelProperty(value = "公司地址-市名字", dataType = "String") - private String addressCityName; - - @ApiModelProperty(value = "公司地址-区名字", dataType = "String") - private String addressAreaName; - - @ApiModelProperty(value = "委托方联系人", dataType = "String") - private String director; - - @ApiModelProperty(value = "委托方电话", dataType = "String") - private String phone; - - @ApiModelProperty(value = "预计计量费用", dataType = "String") - private String preCost; - - @ApiModelProperty(value = "预计开始时间", dataType = "String") - private String preStartTime; - - @ApiModelProperty(value = "预计结束时间", dataType = "String") - private String preEndTime; - - @ApiModelProperty(value = "检测地址", dataType = "String") - private String executiveAddress; - - @ApiModelProperty(value = "现场环境条件", dataType = "String") - private String executiveEnvironment; - - @ApiModelProperty(value = "主要危害源及预防措施", dataType = "String") - private String hazardSourceAndPreventionMethod; - - @ApiModelProperty(value = "现场测试、校准或检定项目", dataType = "String") - private String executiveItem; - - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") - private String processId; - - @ApiModelProperty(value = "备注", dataType = "String") - private String remark; - - @ApiModelProperty(hidden = true) - @TableField("is_del") - private Integer isDel; - - @ApiModelProperty(value = "创建时间", dataType = "String") - @TableField("create_time") - private String createTime; - - @ApiModelProperty(hidden = true) - @TableField("update_time") - private String updateTime; - - - @ApiModelProperty(value = "审批状态类型-字典code", dataType = "String") - private String approvalStatus; - - @ApiModelProperty(value = "审批状态类型-字典value", dataType = "String") - private String approvalStatusName; - - @ApiModelProperty(value = "任务id(同意、驳回等操作使用)", dataType = "String") - private String taskId; - - @ApiModelProperty(value = "可选决策项(1同意驳回拒绝 2同意驳回 3同意拒绝,用于待审批列表同意/驳回/拒绝按钮展示)", dataType = "Integer") - private Integer decisionItem; -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java index 6f28e4d..31b8323 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/meter/MeterTraceSupplier.java @@ -289,7 +289,7 @@ /** * 流程实例id */ - @ApiModelProperty(value = "流程实例id(未通过文件编辑接口必传参数)", dataType = "String") + @ApiModelProperty(value = "流程实例id(未通过编辑接口必传参数)", dataType = "String") @TableField("process_id") private String processId; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java index d416837..09eb064 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessCertificateReportServiceImpl.java @@ -45,6 +45,7 @@ import org.flowable.engine.runtime.ProcessInstance; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; @@ -161,6 +162,7 @@ * @return */ @Override + @Transactional public ReturnDTO submitCertificateReport(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java index 11f3282..ca870c1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectServiceImpl.java @@ -1,10 +1,45 @@ package com.casic.missiles.service.Impl.business; +import cn.hutool.core.lang.Assert; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +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.BusinessOutsourceProjectMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; +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.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; /** *

@@ -16,5 +51,247 @@ */ @Service public class BusinessOutsourceProjectServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectService { + @Autowired + private IBaseApprovalService baseApprovalService; + @Autowired + private BusinessOutsourceProjectMapper projectMapper; + @Resource + private AbstractDictService dictService; + @Resource + private RuntimeService runtimeService; + @Autowired + private ApprovalOperateService approvalOperateService; + @Override + public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + request.setCreateUserId(user.getId()); + List responseList = handleApprovalStatus(page, request); + if(CollectionUtils.isEmpty(responseList)){ + return new ArrayList<>(); + } + for (OutsourceProjectApprovalListResponse response : responseList) { + DictCodeUtils.convertDictCodeToName(response); + } + return responseList; + + } + + @Override + public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + //生成编号 + Long maxNo = projectMapper.selectMaxOutsourcerNo(); + String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); + outsourceProject.setProjectNo(projectNo); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.DRAFT); //草稿箱状态 + Assert.isFalse(Objects.isNull(ShiroKit.getUser()), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + outsourceProject.setCreateUser(ShiroKit.getUser().getId()); //登录者用户id + int insertFlag = projectMapper.insert(outsourceProject); + Assert.isFalse(insertFlag <= 0, () -> { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); + }); + OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); + saveResponse.setId(outsourceProject.getId()); + saveResponse.setProjectNo(projectNo); + return ReturnUtil.success(saveResponse); + } + + @Override + @Transactional + public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + int updateFlag = projectMapper.updateById(outsourceProject); + if (updateFlag > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + //已取消后的提交需先删除原有实例 + if (StringUtils.isNotEmpty(request.getProcessId())){ + runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); + runtimeService.deleteProcessInstance(request.getProcessId(), "删除"); + } + //1.根据表单id获取流程定义id + //2.根据流程定义id启动流程实例 + String formId = request.getFormId(); + ReturnDTO returnDTO = baseApprovalService.processSubmit(formId, request.getId()); + if (ResponseData.DEFAULT_SUCCESS_CODE != returnDTO.getCode()) { + return returnDTO; + } + ProcessInstance processInstance = (ProcessInstance) returnDTO.getData(); + + BusinessOutsourceProject outsourceProject = new BusinessOutsourceProject(); + outsourceProject.setId(request.getId()); + outsourceProject.setApplyApprovalStatus(ApprovalStatusEnum.UN_DRAFT); //非草稿状态 + outsourceProject.setApplyProcessId(processInstance.getId()); + int row = projectMapper.updateById(outsourceProject); + if (row <= 0) { + throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SUBMIT_FAILED); + } + return ReturnUtil.success(); + } + + @Override + public ReturnDTO deleteProject(Long id) { + if (projectMapper.deleteById(id) > 0) { + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO projectDetail(Long id) throws Exception { + BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); + DictCodeUtils.convertDictCodeToName(detailResponse); + return ReturnUtil.success(detailResponse); + } + + @Override + public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + ReturnDTO returnDTO = approvalOperateService.delete(request); + if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { + //本地删除 + if (projectMapper.deleteById(request.getId()) > 0) { + return ReturnUtil.success(); + } + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + @Transactional + public ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject) { + AuthUser user = ShiroKit.getUser(); + Assert.isFalse(Objects.isNull(user), () -> { + throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); + }); + if (projectMapper.updateById(outsourceProject) > 0) { + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + + } + + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { + List approvalList = new ArrayList<>(); + List businessKeys = new ArrayList<>(); + List list; + switch (request.getApprovalStatus()) { + //草稿 + case ApprovalStatusEnum.DRAFT: + list = projectMapper.selectDraftListForApproval(page, request); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.DRAFT); + break; + //待审批,该状态维护在flowable中 + case ApprovalStatusEnum.TO_BE_APPROVED: + List toBeApprovedList = baseApprovalService.getToBeApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(toBeApprovedList)) { + businessKeys = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.TO_BE_APPROVED); + //DTO根据业务主键补全taskId + approvalList.forEach(approval -> { + toBeApprovedList.forEach(toBeApprovedDTO -> { + if (String.valueOf(approval.getId()).equals(toBeApprovedDTO.getBusinessKey())) { + approval.setTaskId(toBeApprovedDTO.getTaskId()); + //补全可选决策项 + approval.setDecisionItem(toBeApprovedDTO.getDecisionItem()); + } + }); + }); + } + break; + //审批中,该状态维护在flowable中 + case ApprovalStatusEnum.IN_APPROVED: + businessKeys = baseApprovalService.getInApprovedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.IN_APPROVED); + } + break; + //已通过,该状态维护在flowable + case ApprovalStatusEnum.PASSED: + businessKeys = baseApprovalService.getPassedList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.PASSED); + } + break; + //未通过(包括拒绝、驳回,拒绝为直接删除实例,驳回为驳回到起点),该状态维护在flowable + case ApprovalStatusEnum.FAILED: + businessKeys = baseApprovalService.getFailedList(request.getFormId()); //未通过-拒绝 + List rejectBusinessKey = baseApprovalService.getFailedRejectList(request.getFormId()); //未通过-驳回 + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.FAILED); + } + List rejectApprovalList = new ArrayList<>(); + if (!CollectionUtils.isEmpty(rejectBusinessKey)) { + List rejectList = projectMapper.selectBatchForApproval(page, request, rejectBusinessKey); + rejectApprovalList = handleApprovalListResponse(approvalList, rejectList, ApprovalStatusEnum.FAILED_REJECT); + } + //合并未通过-拒绝和未通过-驳回 + approvalList.addAll(rejectApprovalList); + break; + //已取消,该状态维护在flowable + case ApprovalStatusEnum.CANCELED: + businessKeys = baseApprovalService.getCanceledList(request.getFormId()); + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleApprovalListResponse(approvalList, list, ApprovalStatusEnum.CANCELED); + } + break; + //全部 + //区分管理员和普通用户 + //普通用户获取自己发起的(审批中、已通过、未通过、已取消),管理员获取全部(审批中、已通过、未通过、已取消) + case ApprovalStatusEnum.ALL: + List AllApproveList = baseApprovalService.getAllList(request.getFormId()); + if (!CollectionUtils.isEmpty(AllApproveList)) { + businessKeys = AllApproveList.stream().map(AllApproveDTO::getBusinessKey).collect(Collectors.toList()); + } + if (!CollectionUtils.isEmpty(businessKeys)) { + list = projectMapper.selectBatchForApproval(page, request, businessKeys); + approvalList = handleAllApprovalListResponse(approvalList, list, AllApproveList); + } + break; + } + return approvalList; + + } + + private List handleApprovalListResponse(List approvalList, List list, String status) { + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + approvalList.stream().forEach(result -> { + //审批状态两种获取方式:1、在此处设置,2、在flowable中设置业务状态,暂采取1 + result.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, status)); + }); + return approvalList; + + } + + private List handleAllApprovalListResponse(List approvalList, List list, List allApproveList) { + Map taskMap = new HashMap<>(); + approvalList = ConvertUtils.sourceToTarget(list, OutsourceProjectApprovalListResponse.class); + allApproveList.forEach(allApprove -> { + taskMap.put(allApprove.getBusinessKey(), allApprove.getStatus()); + }); + //状态补全 + approvalList.forEach(approval -> { + approval.setApplyApprovalStatusName(dictService.getDictNameByCode(MeterDictEnum.APPROVAL_STATUS, taskMap.get(String.valueOf(approval.getId())))); + approval.setApplyApprovalStatus(taskMap.get(String.valueOf(approval.getId()))); + }); + //排序 + return approvalList.stream().sorted(Comparator.comparing(OutsourceProjectApprovalListResponse::getCreateTime).reversed()).collect(Collectors.toList()); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java index e5389a1..7e2c142 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerAbilityServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerAbilityMapper; import com.casic.missiles.model.business.BusinessOutsourcerAbility; import com.casic.missiles.service.business.IBusinessOutsourcerAbilityService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,49 @@ */ @Service public class BusinessOutsourcerAbilityServiceImpl extends ServiceImpl implements IBusinessOutsourcerAbilityService { + @Autowired + private BusinessOutsourcerAbilityMapper abilityMapper; + @Override + public Page listPage(Page page, OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = abilityMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = abilityMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + + } + + @Override + public ReturnDTO addAbility(BusinessOutsourcerAbility ability) { + if(abilityMapper.insert(ability) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteAbility(IdDTO idDto) { + if(abilityMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerAbilityListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java index 142e781..eef711b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerInfoServiceImpl.java @@ -133,6 +133,7 @@ } @Override + @Transactional public ReturnDTO submitOutsourcer(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java index 9cf64c8..d9b909b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourcerUserInfoServiceImpl.java @@ -1,10 +1,24 @@ package com.casic.missiles.service.Impl.business; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; +import com.casic.missiles.enums.BusinessExceptionEnum; +import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourcerUserInfoMapper; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; import com.casic.missiles.service.business.IBusinessOutsourcerUserInfoService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; /** *

@@ -16,5 +30,48 @@ */ @Service public class BusinessOutsourcerUserInfoServiceImpl extends ServiceImpl implements IBusinessOutsourcerUserInfoService { + @Autowired + private BusinessOutsourcerUserInfoMapper userInfoMapper; + @Override + public Page listPage(Page page, OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + Page infoPage = userInfoMapper.selectPage(page, wrapper); + if(Objects.isNull(infoPage) || CollectionUtils.isEmpty(infoPage.getRecords())){ + return new Page<>(); + } + return infoPage; + } + + @Override + public List list(OutsourcerUserListRequest request) { + QueryWrapper wrapper = getWrapper(request); + List infoList = userInfoMapper.selectList(wrapper); + if(Objects.isNull(infoList)){ + return new ArrayList<>(); + } + return infoList; + } + + @Override + public ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo) { + if(userInfoMapper.insert(userInfo) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + @Override + public ReturnDTO deleteUser(IdDTO idDto) { + if(userInfoMapper.deleteById(idDto.getId()) > 0){ + return ReturnUtil.success(); + } + throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); + } + + private QueryWrapper getWrapper(OutsourcerUserListRequest request) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("outsourcer_id", request.getOutsourcerId()); + return wrapper; + } } 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 a697453..6dccd49 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 @@ -15,7 +15,7 @@ import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessSiteExecutiveInfoMapper; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import com.casic.missiles.service.IBaseApprovalService; import com.casic.missiles.service.business.IBusinessSiteExecutiveInfoService; import com.casic.missiles.service.flowable.ApprovalOperateService; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java index 36d0d1d..94aad60 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/equipment/EquipmentStandardApplyServiceImpl.java @@ -269,6 +269,7 @@ } @Override + @Transactional public ReturnDTO submitStandardEquipmentApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java index 91850c5..6536c9b 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/meter/MeterTraceSupplierServiceImpl.java @@ -189,6 +189,7 @@ } @Override + @Transactional public ReturnDTO submitTraceSupplier(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java index 85f3d80..cf97666 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectService.java @@ -1,8 +1,17 @@ package com.casic.missiles.service.business; +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.outsource.OutsourceProjectApprovalListRequest; +import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; +import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; +import com.casic.missiles.dto.flowable.ApprovalDeleteRequest; import com.casic.missiles.model.business.BusinessOutsourceProject; +import java.util.List; + /** *

* 分包项目表 服务类 @@ -13,4 +22,19 @@ */ public interface IBusinessOutsourceProjectService extends IService { + List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; + + ReturnDTO saveProject(BusinessOutsourceProject outsourceProject); + + ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject); + + ReturnDTO submitProject(BaseApprovalSubmitRequest request); + + ReturnDTO deleteProject(Long id); + + ReturnDTO projectDetail(Long id) throws Exception; + + ReturnDTO approvalDelete(ApprovalDeleteRequest request); + + ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java index 7f2c4ea..26ac0f1 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerAbilityService.java @@ -1,8 +1,14 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.outsource.OutsourcerAbilityListRequest; import com.casic.missiles.model.business.BusinessOutsourcerAbility; +import java.util.List; + /** *

* 分包方-能力表 服务类 @@ -13,4 +19,11 @@ */ public interface IBusinessOutsourcerAbilityService extends IService { + Page listPage(Page page, OutsourcerAbilityListRequest request); + + List list(OutsourcerAbilityListRequest request); + + ReturnDTO addAbility(BusinessOutsourcerAbility ability); + + ReturnDTO deleteAbility(IdDTO idDto); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java index 317585f..3848657 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourcerUserInfoService.java @@ -1,8 +1,14 @@ package com.casic.missiles.service.business; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.business.outsource.OutsourcerUserListRequest; import com.casic.missiles.model.business.BusinessOutsourcerUserInfo; +import java.util.List; + /** *

* 分包方-人员信息表 服务类 @@ -13,4 +19,11 @@ */ public interface IBusinessOutsourcerUserInfoService extends IService { + Page listPage(Page page, OutsourcerUserListRequest request); + + List list(OutsourcerUserListRequest request); + + ReturnDTO addUser(BusinessOutsourcerUserInfo userInfo); + + ReturnDTO deleteUser(IdDTO idDto); } 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 ce85b6f..656ef37 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 @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListRequest; import com.casic.missiles.model.business.BusinessSiteExecutiveInfo; -import com.casic.missiles.model.business.SiteExecutiveApprovalListResponse; +import com.casic.missiles.dto.business.siteExecutive.SiteExecutiveApprovalListResponse; import java.util.List;