diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java index b4dfce8..0e55240 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java @@ -37,6 +37,12 @@ private Long sampleId; /** + * 委托书id + */ + @TableField("order_id") + private Long orderId; + + /** * 创建时间 */ @TableField("create_time") diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java index b4dfce8..0e55240 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java @@ -37,6 +37,12 @@ private Long sampleId; /** + * 委托书id + */ + @TableField("order_id") + private Long orderId; + + /** * 创建时间 */ @TableField("create_time") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java index 05f32a5..85ac8d6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java @@ -1,11 +1,15 @@ package com.casic.missiles.service.Impl.business; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 分包项目-样品关联表 服务实现类 @@ -16,5 +20,11 @@ */ @Service public class BusinessOutsourceProjectSampleRelationServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectSampleRelationService { + @Autowired + private BusinessOutsourceProjectSampleRelationMapper relationMapper; + @Override + public List selectSampleList(Long projectId) { + return relationMapper.selectSampleList(projectId); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java index b4dfce8..0e55240 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java @@ -37,6 +37,12 @@ private Long sampleId; /** + * 委托书id + */ + @TableField("order_id") + private Long orderId; + + /** * 创建时间 */ @TableField("create_time") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java index 05f32a5..85ac8d6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java @@ -1,11 +1,15 @@ package com.casic.missiles.service.Impl.business; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 分包项目-样品关联表 服务实现类 @@ -16,5 +20,11 @@ */ @Service public class BusinessOutsourceProjectSampleRelationServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectSampleRelationService { + @Autowired + private BusinessOutsourceProjectSampleRelationMapper relationMapper; + @Override + public List selectSampleList(Long projectId) { + return relationMapper.selectSampleList(projectId); + } } 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 ca870c1..f9d060f 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,6 +1,7 @@ package com.casic.missiles.service.Impl.business; import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -9,6 +10,7 @@ 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.OrderSampleResponseDTO; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; @@ -21,9 +23,12 @@ import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourceProjectMapper; +import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; @@ -55,6 +60,10 @@ private IBaseApprovalService baseApprovalService; @Autowired private BusinessOutsourceProjectMapper projectMapper; + @Autowired + private BusinessOutsourceProjectSampleRelationMapper projectSampleRelationMapper; + @Autowired + private IBusinessOutsourceProjectSampleRelationService projectSampleRelationService; @Resource private AbstractDictService dictService; @Resource @@ -63,7 +72,7 @@ private ApprovalOperateService approvalOperateService; @Override - public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + public List projectApplyApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { AuthUser user = ShiroKit.getUser(); Assert.isFalse(Objects.isNull(user), () -> { throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); @@ -81,7 +90,8 @@ } @Override - public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + @Transactional + public ReturnDTO saveProjectApply(BusinessOutsourceProject outsourceProject) { //生成编号 Long maxNo = projectMapper.selectMaxOutsourcerNo(); String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); @@ -95,6 +105,8 @@ Assert.isFalse(insertFlag <= 0, () -> { throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); }); + //保存关联样品 + saveBatchRelation(outsourceProject); OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); saveResponse.setId(outsourceProject.getId()); saveResponse.setProjectNo(projectNo); @@ -103,9 +115,14 @@ @Override @Transactional - public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + public ReturnDTO projectApplyDraftUpdate(BusinessOutsourceProject outsourceProject) { int updateFlag = projectMapper.updateById(outsourceProject); if (updateFlag > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -113,7 +130,7 @@ @Override @Transactional - public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + public ReturnDTO submitProjectApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); @@ -140,8 +157,12 @@ } @Override - public ReturnDTO deleteProject(Long id) { + public ReturnDTO projectDelete(Long id) { if (projectMapper.deleteById(id) > 0) { + //关联样品删除 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", id); + projectSampleRelationService.remove(wrapper); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -151,11 +172,14 @@ public ReturnDTO projectDetail(Long id) throws Exception { BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); DictCodeUtils.convertDictCodeToName(detailResponse); + //关联样品查询 + List sampleList = projectSampleRelationService.selectSampleList(id); + detailResponse.setSampleList(sampleList); return ReturnUtil.success(detailResponse); } @Override - public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + public ReturnDTO projectApplyApprovalDelete(ApprovalDeleteRequest request) { ReturnDTO returnDTO = approvalOperateService.delete(request); if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { //本地删除 @@ -174,6 +198,12 @@ throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); }); if (projectMapper.updateById(outsourceProject) > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); return ReturnUtil.success(); } @@ -181,6 +211,18 @@ } + private boolean saveBatchRelation(BusinessOutsourceProject outsourceProject) { + List relationList = new ArrayList<>(); + outsourceProject.getDtos().forEach(dto -> { + BusinessOutsourceProjectSampleRelation relation = new BusinessOutsourceProjectSampleRelation(); + relation.setProjectId(outsourceProject.getId()); + relation.setSampleId(dto.getSampleId()); + relation.setOrderId(dto.getOrderId()); + relationList.add(relation); + }); + return projectSampleRelationService.saveBatch(relationList); + } + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java index b4dfce8..0e55240 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java @@ -37,6 +37,12 @@ private Long sampleId; /** + * 委托书id + */ + @TableField("order_id") + private Long orderId; + + /** * 创建时间 */ @TableField("create_time") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java index 05f32a5..85ac8d6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java @@ -1,11 +1,15 @@ package com.casic.missiles.service.Impl.business; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 分包项目-样品关联表 服务实现类 @@ -16,5 +20,11 @@ */ @Service public class BusinessOutsourceProjectSampleRelationServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectSampleRelationService { + @Autowired + private BusinessOutsourceProjectSampleRelationMapper relationMapper; + @Override + public List selectSampleList(Long projectId) { + return relationMapper.selectSampleList(projectId); + } } 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 ca870c1..f9d060f 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,6 +1,7 @@ package com.casic.missiles.service.Impl.business; import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -9,6 +10,7 @@ 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.OrderSampleResponseDTO; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; @@ -21,9 +23,12 @@ import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourceProjectMapper; +import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; @@ -55,6 +60,10 @@ private IBaseApprovalService baseApprovalService; @Autowired private BusinessOutsourceProjectMapper projectMapper; + @Autowired + private BusinessOutsourceProjectSampleRelationMapper projectSampleRelationMapper; + @Autowired + private IBusinessOutsourceProjectSampleRelationService projectSampleRelationService; @Resource private AbstractDictService dictService; @Resource @@ -63,7 +72,7 @@ private ApprovalOperateService approvalOperateService; @Override - public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + public List projectApplyApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { AuthUser user = ShiroKit.getUser(); Assert.isFalse(Objects.isNull(user), () -> { throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); @@ -81,7 +90,8 @@ } @Override - public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + @Transactional + public ReturnDTO saveProjectApply(BusinessOutsourceProject outsourceProject) { //生成编号 Long maxNo = projectMapper.selectMaxOutsourcerNo(); String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); @@ -95,6 +105,8 @@ Assert.isFalse(insertFlag <= 0, () -> { throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); }); + //保存关联样品 + saveBatchRelation(outsourceProject); OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); saveResponse.setId(outsourceProject.getId()); saveResponse.setProjectNo(projectNo); @@ -103,9 +115,14 @@ @Override @Transactional - public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + public ReturnDTO projectApplyDraftUpdate(BusinessOutsourceProject outsourceProject) { int updateFlag = projectMapper.updateById(outsourceProject); if (updateFlag > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -113,7 +130,7 @@ @Override @Transactional - public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + public ReturnDTO submitProjectApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); @@ -140,8 +157,12 @@ } @Override - public ReturnDTO deleteProject(Long id) { + public ReturnDTO projectDelete(Long id) { if (projectMapper.deleteById(id) > 0) { + //关联样品删除 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", id); + projectSampleRelationService.remove(wrapper); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -151,11 +172,14 @@ public ReturnDTO projectDetail(Long id) throws Exception { BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); DictCodeUtils.convertDictCodeToName(detailResponse); + //关联样品查询 + List sampleList = projectSampleRelationService.selectSampleList(id); + detailResponse.setSampleList(sampleList); return ReturnUtil.success(detailResponse); } @Override - public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + public ReturnDTO projectApplyApprovalDelete(ApprovalDeleteRequest request) { ReturnDTO returnDTO = approvalOperateService.delete(request); if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { //本地删除 @@ -174,6 +198,12 @@ throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); }); if (projectMapper.updateById(outsourceProject) > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); return ReturnUtil.success(); } @@ -181,6 +211,18 @@ } + private boolean saveBatchRelation(BusinessOutsourceProject outsourceProject) { + List relationList = new ArrayList<>(); + outsourceProject.getDtos().forEach(dto -> { + BusinessOutsourceProjectSampleRelation relation = new BusinessOutsourceProjectSampleRelation(); + relation.setProjectId(outsourceProject.getId()); + relation.setSampleId(dto.getSampleId()); + relation.setOrderId(dto.getOrderId()); + relationList.add(relation); + }); + return projectSampleRelationService.saveBatch(relationList); + } + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java index bacc4d9..e455218 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.business; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import java.util.List; + /** *

* 分包项目-样品关联表 服务类 @@ -13,4 +16,5 @@ */ public interface IBusinessOutsourceProjectSampleRelationService extends IService { + List selectSampleList(Long projectId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java new file mode 100644 index 0000000..b7dae53 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectApplyController.java @@ -0,0 +1,156 @@ +package com.casic.missiles.controller.business; + +import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.ExportController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.core.page.PageInfoBT; +import com.casic.missiles.dto.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.util.CollectionUtils; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; +import java.util.Objects; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目申请") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/apply") +public class BusinessOutsourceProjectApplyController extends ExportController { + @Autowired + private IBusinessOutsourceProjectService projectService; + + @ApiOperation("分包项目申请审批列表(分页)") + @PostMapping("/approval/listPage") + public ReturnDTO> approvalListPage(@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.projectApplyApprovalListPage(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 { + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.saveProjectApply(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); + }); + Assert.isFalse(CollectionUtils.isEmpty(outsourceProject.getDtos()), () -> { + throw new BusinessException(BusinessExceptionEnum.SAMPLE_ORDER_IDS_NULL); + }); + if(bindingResult.hasErrors()){ + throw new BusinessException(CoreExceptionEnum.REQUEST_NULL.getCode(), bindingResult.getFieldError().getDefaultMessage()); + } + DictCodeUtils.validDictCode(outsourceProject); + return projectService.projectApplyDraftUpdate(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.submitProjectApply(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.projectDelete(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.projectApplyApprovalDelete(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/BusinessOutsourceProjectCheckController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java new file mode 100644 index 0000000..f44d54c --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectCheckController.java @@ -0,0 +1,23 @@ +package com.casic.missiles.controller.business; + +import com.casic.missiles.core.base.controller.ExportController; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + *

+ * 分包项目表 前端控制器 + *

+ * + * @author wangpeng + * @since 2023-03-25 + */ +@Api(tags = "分包管理接口-分包项目验收") +@Slf4j +@RestController +@RequestMapping("/business/outsourceProject/check") +public class BusinessOutsourceProjectCheckController extends ExportController { + +} 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 deleted file mode 100644 index 0c4aa69..0000000 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BusinessOutsourceProjectController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.casic.missiles.controller.business; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.casic.missiles.core.base.controller.ExportController; -import com.casic.missiles.core.page.PageFactory; -import com.casic.missiles.core.page.PageInfoBT; -import com.casic.missiles.dto.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; - -/** - *

- * 分包项目表 前端控制器 - *

- * - * @author wangpeng - * @since 2023-03-25 - */ -@Api(tags = "分包管理接口-分包项目申请") -@Slf4j -@RestController -@RequestMapping("/business/outsourceProject") -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-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/BusinessExceptionEnum.java index 394626e..e792441 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 @@ -15,6 +15,7 @@ TRAIN_LOG_ID_NULL(2400, "培训记录主键不能为空"), ORGANIZE_ID_NULL(2400, "计量组织主键不能为空"), PROCESS_ID_NULL(2400, "流程实例id不能为空"), + SAMPLE_ORDER_IDS_NULL(2400, "样品&委托书列表不能为空"), EDUCATION_NOT_EXISTENCE(2300, "导入文化程度不存在;"), TECHNOLOGY_JOB_NOT_EXISTENCE(2300, "导入技术职位不存在;"), ADMINISTRATION_JOB_NOT_EXISTENCE(2300, "导入行政职务不存在;"), diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java index 092011b..732e30b 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/business/BusinessOutsourceProjectSampleRelationMapper.java @@ -1,7 +1,11 @@ package com.casic.missiles.mapper.business; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +17,5 @@ */ public interface BusinessOutsourceProjectSampleRelationMapper extends BaseMapper { + List selectSampleList(@Param("projectId") Long projectId); } diff --git a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml index 5ac4463..1e6b3d3 100644 --- a/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/business/BusinessOutsourceProjectSampleRelationMapper.xml @@ -7,6 +7,7 @@ + @@ -16,4 +17,11 @@ id, project_id, sample_id, create_time, update_time + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java new file mode 100644 index 0000000..6bb77de --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleDTO.java @@ -0,0 +1,19 @@ +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 17:14 + */ +@ApiModel +@Data +public class OrderSampleDTO { + @ApiModelProperty(value = "样品id", dataType = "Long", required = true) + private Long sampleId; + @ApiModelProperty(value = "委托书id", dataType = "Long", required = true) + private Long orderId; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java new file mode 100644 index 0000000..a934ce3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/business/outsource/OrderSampleResponseDTO.java @@ -0,0 +1,28 @@ +package com.casic.missiles.dto.business.outsource; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class OrderSampleResponseDTO { + @ApiModelProperty(value = "样品编号", dataType = "String") + private String sampleNo; + + @ApiModelProperty(value = "样品名称", dataType = "String") + private String sampleName; + + @ApiModelProperty(value = "型号", dataType = "String") + private String sampleModel; + + @ApiModelProperty(value = "出厂编号", dataType = "String") + private String manufacturingNo; + + @ApiModelProperty(value = "委托方名称", dataType = "String") + private String customerName; + + @ApiModelProperty(value = "委托书编号", dataType = "String") + private String orderCode; + +} 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 1084a81..3b88cf1 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 @@ -10,12 +10,15 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import com.casic.missiles.dto.business.outsource.OrderSampleDTO; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import java.io.Serializable; +import java.util.List; /** *

@@ -206,5 +209,11 @@ @TableField("update_time") private String updateTime; + @ApiModelProperty(value = "样品&委托书列表(保存/编辑草稿接口入参使用)", dataType = "List") + @TableField(exist = false) + private List dtos; + @ApiModelProperty(value = "样品列表(详情接口出参使用)", dataType = "List") + @TableField(exist = false) + private List sampleList; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java index b4dfce8..0e55240 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BusinessOutsourceProjectSampleRelation.java @@ -37,6 +37,12 @@ private Long sampleId; /** + * 委托书id + */ + @TableField("order_id") + private Long orderId; + + /** * 创建时间 */ @TableField("create_time") diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java index 05f32a5..85ac8d6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BusinessOutsourceProjectSampleRelationServiceImpl.java @@ -1,11 +1,15 @@ package com.casic.missiles.service.Impl.business; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + /** *

* 分包项目-样品关联表 服务实现类 @@ -16,5 +20,11 @@ */ @Service public class BusinessOutsourceProjectSampleRelationServiceImpl extends ServiceImpl implements IBusinessOutsourceProjectSampleRelationService { + @Autowired + private BusinessOutsourceProjectSampleRelationMapper relationMapper; + @Override + public List selectSampleList(Long projectId) { + return relationMapper.selectSampleList(projectId); + } } 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 ca870c1..f9d060f 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,6 +1,7 @@ package com.casic.missiles.service.Impl.business; import cn.hutool.core.lang.Assert; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.casic.missiles.core.application.service.AbstractDictService; @@ -9,6 +10,7 @@ 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.OrderSampleResponseDTO; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListRequest; import com.casic.missiles.dto.business.outsource.OutsourceProjectApprovalListResponse; import com.casic.missiles.dto.business.outsource.OutsourceProjectSaveResponse; @@ -21,9 +23,12 @@ import com.casic.missiles.enums.system.ApprovalStatusEnum; import com.casic.missiles.exception.BusinessException; import com.casic.missiles.mapper.business.BusinessOutsourceProjectMapper; +import com.casic.missiles.mapper.business.BusinessOutsourceProjectSampleRelationMapper; import com.casic.missiles.model.business.BusinessOutsourceProject; +import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; import com.casic.missiles.model.response.ResponseData; import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.business.IBusinessOutsourceProjectSampleRelationService; import com.casic.missiles.service.business.IBusinessOutsourceProjectService; import com.casic.missiles.service.flowable.ApprovalOperateService; import com.casic.missiles.utils.ConvertUtils; @@ -55,6 +60,10 @@ private IBaseApprovalService baseApprovalService; @Autowired private BusinessOutsourceProjectMapper projectMapper; + @Autowired + private BusinessOutsourceProjectSampleRelationMapper projectSampleRelationMapper; + @Autowired + private IBusinessOutsourceProjectSampleRelationService projectSampleRelationService; @Resource private AbstractDictService dictService; @Resource @@ -63,7 +72,7 @@ private ApprovalOperateService approvalOperateService; @Override - public List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { + public List projectApplyApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception { AuthUser user = ShiroKit.getUser(); Assert.isFalse(Objects.isNull(user), () -> { throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); @@ -81,7 +90,8 @@ } @Override - public ReturnDTO saveProject(BusinessOutsourceProject outsourceProject) { + @Transactional + public ReturnDTO saveProjectApply(BusinessOutsourceProject outsourceProject) { //生成编号 Long maxNo = projectMapper.selectMaxOutsourcerNo(); String projectNo = NumberGeneratorUtil.getContactNo(PrefixCodeEnum.OUTSOURCE_PROJECT_PREFIX, maxNo); @@ -95,6 +105,8 @@ Assert.isFalse(insertFlag <= 0, () -> { throw new BusinessException(BusinessExceptionEnum.OUTSOURCE_PROJECT_SAVE_FAILED); }); + //保存关联样品 + saveBatchRelation(outsourceProject); OutsourceProjectSaveResponse saveResponse = new OutsourceProjectSaveResponse(); saveResponse.setId(outsourceProject.getId()); saveResponse.setProjectNo(projectNo); @@ -103,9 +115,14 @@ @Override @Transactional - public ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject) { + public ReturnDTO projectApplyDraftUpdate(BusinessOutsourceProject outsourceProject) { int updateFlag = projectMapper.updateById(outsourceProject); if (updateFlag > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -113,7 +130,7 @@ @Override @Transactional - public ReturnDTO submitProject(BaseApprovalSubmitRequest request) { + public ReturnDTO submitProjectApply(BaseApprovalSubmitRequest request) { //已取消后的提交需先删除原有实例 if (StringUtils.isNotEmpty(request.getProcessId())){ runtimeService.updateBusinessStatus(request.getProcessId(), ApprovalStatusEnum.DELETED); @@ -140,8 +157,12 @@ } @Override - public ReturnDTO deleteProject(Long id) { + public ReturnDTO projectDelete(Long id) { if (projectMapper.deleteById(id) > 0) { + //关联样品删除 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", id); + projectSampleRelationService.remove(wrapper); return ReturnUtil.success(); } throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -151,11 +172,14 @@ public ReturnDTO projectDetail(Long id) throws Exception { BusinessOutsourceProject detailResponse = projectMapper.selectProjectById(id); DictCodeUtils.convertDictCodeToName(detailResponse); + //关联样品查询 + List sampleList = projectSampleRelationService.selectSampleList(id); + detailResponse.setSampleList(sampleList); return ReturnUtil.success(detailResponse); } @Override - public ReturnDTO approvalDelete(ApprovalDeleteRequest request) { + public ReturnDTO projectApplyApprovalDelete(ApprovalDeleteRequest request) { ReturnDTO returnDTO = approvalOperateService.delete(request); if (ResponseData.DEFAULT_SUCCESS_CODE == returnDTO.getCode()) { //本地删除 @@ -174,6 +198,12 @@ throw new BusinessException(BusinessExceptionEnum.LOGIN_USER_ACQUIRE_FAILED); }); if (projectMapper.updateById(outsourceProject) > 0) { + //关联样品编辑 + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("project_id", outsourceProject.getId()); + projectSampleRelationService.remove(wrapper); + saveBatchRelation(outsourceProject); + baseApprovalService.failUpdate(outsourceProject.getApplyProcessId()); return ReturnUtil.success(); } @@ -181,6 +211,18 @@ } + private boolean saveBatchRelation(BusinessOutsourceProject outsourceProject) { + List relationList = new ArrayList<>(); + outsourceProject.getDtos().forEach(dto -> { + BusinessOutsourceProjectSampleRelation relation = new BusinessOutsourceProjectSampleRelation(); + relation.setProjectId(outsourceProject.getId()); + relation.setSampleId(dto.getSampleId()); + relation.setOrderId(dto.getOrderId()); + relationList.add(relation); + }); + return projectSampleRelationService.saveBatch(relationList); + } + private List handleApprovalStatus(Page page, OutsourceProjectApprovalListRequest request) { List approvalList = new ArrayList<>(); List businessKeys = new ArrayList<>(); diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java index bacc4d9..e455218 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/business/IBusinessOutsourceProjectSampleRelationService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.business; import com.baomidou.mybatisplus.extension.service.IService; +import com.casic.missiles.dto.business.outsource.OrderSampleResponseDTO; import com.casic.missiles.model.business.BusinessOutsourceProjectSampleRelation; +import java.util.List; + /** *

* 分包项目-样品关联表 服务类 @@ -13,4 +16,5 @@ */ public interface IBusinessOutsourceProjectSampleRelationService extends IService { + List selectSampleList(Long projectId); } 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 cf97666..ba6238f 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 @@ -22,19 +22,19 @@ */ public interface IBusinessOutsourceProjectService extends IService { - List projectApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; + List projectApplyApprovalListPage(OutsourceProjectApprovalListRequest request, Page page) throws Exception; - ReturnDTO saveProject(BusinessOutsourceProject outsourceProject); + ReturnDTO saveProjectApply(BusinessOutsourceProject outsourceProject); - ReturnDTO draftUpdate(BusinessOutsourceProject outsourceProject); + ReturnDTO projectApplyDraftUpdate(BusinessOutsourceProject outsourceProject); - ReturnDTO submitProject(BaseApprovalSubmitRequest request); + ReturnDTO submitProjectApply(BaseApprovalSubmitRequest request); - ReturnDTO deleteProject(Long id); + ReturnDTO projectDelete(Long id); ReturnDTO projectDetail(Long id) throws Exception; - ReturnDTO approvalDelete(ApprovalDeleteRequest request); + ReturnDTO projectApplyApprovalDelete(ApprovalDeleteRequest request); ReturnDTO failUpdate(BusinessOutsourceProject outsourceProject); }