diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java new file mode 100644 index 0000000..2ab991d --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.service.IBaseApprovalService; +import org.springframework.stereotype.Service; + +import java.util.List; + +// todo +@Service +public class BaseApprovalServiceImpl implements IBaseApprovalService { + + @Override + public ReturnDTO processSubmit(String formId, Long id) { + return null; + } + + @Override + public ReturnDTO agree(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO reject(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO refuse(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO revoke(ApprovalRevokeRequest request) { + return null; + } + + @Override + public ReturnDTO delete(BaseApprovalRequest request) { + return null; + } + + @Override + public void deleteProcessInstance(String processInstanceId, String deleteReason) { + + } + + @Override + public void failUpdate(String processId) { + + } + + @Override + public List getToBeApprovedList(String formId) { + return null; + } + + @Override + public List getApprovedList(String formId) { + return null; + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java new file mode 100644 index 0000000..2ab991d --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.service.IBaseApprovalService; +import org.springframework.stereotype.Service; + +import java.util.List; + +// todo +@Service +public class BaseApprovalServiceImpl implements IBaseApprovalService { + + @Override + public ReturnDTO processSubmit(String formId, Long id) { + return null; + } + + @Override + public ReturnDTO agree(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO reject(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO refuse(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO revoke(ApprovalRevokeRequest request) { + return null; + } + + @Override + public ReturnDTO delete(BaseApprovalRequest request) { + return null; + } + + @Override + public void deleteProcessInstance(String processInstanceId, String deleteReason) { + + } + + @Override + public void failUpdate(String processId) { + + } + + @Override + public List getToBeApprovedList(String formId) { + return null; + } + + @Override + public List getApprovedList(String formId) { + return null; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java index ac4c2c9..86c6bc6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java @@ -1,10 +1,16 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.mapper.equipment.EquipmentAttachmentMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +23,32 @@ @Service public class EquipmentAttachmentServiceImpl extends ServiceImpl implements IEquipmentAttachmentService { + @Override + @Transactional + public boolean saveByEquipment(Long equipmentId, List attachmentList) { + boolean res; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + res = this.remove(wrapper); + if(res && CollUtil.isNotEmpty(attachmentList)){ + attachmentList.forEach(i->i.setEquipmentId(equipmentId)); + res = this.saveBatch(attachmentList); + } + return res; + } + + @Override + public boolean removeByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + wrapper.notExists("(select id from eqpt_equipment_info i where i.id = eqpt_equipment_attachment.equipment_id)"); + return this.remove(wrapper); + } + + @Override + public List selectByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + return this.list(wrapper); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java new file mode 100644 index 0000000..2ab991d --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.service.IBaseApprovalService; +import org.springframework.stereotype.Service; + +import java.util.List; + +// todo +@Service +public class BaseApprovalServiceImpl implements IBaseApprovalService { + + @Override + public ReturnDTO processSubmit(String formId, Long id) { + return null; + } + + @Override + public ReturnDTO agree(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO reject(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO refuse(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO revoke(ApprovalRevokeRequest request) { + return null; + } + + @Override + public ReturnDTO delete(BaseApprovalRequest request) { + return null; + } + + @Override + public void deleteProcessInstance(String processInstanceId, String deleteReason) { + + } + + @Override + public void failUpdate(String processId) { + + } + + @Override + public List getToBeApprovedList(String formId) { + return null; + } + + @Override + public List getApprovedList(String formId) { + return null; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java index ac4c2c9..86c6bc6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java @@ -1,10 +1,16 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.mapper.equipment.EquipmentAttachmentMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +23,32 @@ @Service public class EquipmentAttachmentServiceImpl extends ServiceImpl implements IEquipmentAttachmentService { + @Override + @Transactional + public boolean saveByEquipment(Long equipmentId, List attachmentList) { + boolean res; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + res = this.remove(wrapper); + if(res && CollUtil.isNotEmpty(attachmentList)){ + attachmentList.forEach(i->i.setEquipmentId(equipmentId)); + res = this.saveBatch(attachmentList); + } + return res; + } + + @Override + public boolean removeByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + wrapper.notExists("(select id from eqpt_equipment_info i where i.id = eqpt_equipment_attachment.equipment_id)"); + return this.remove(wrapper); + } + + @Override + public List selectByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + return this.list(wrapper); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 87c11ed..dab0c33 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -1,10 +1,37 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.mapper.equipment.EquipmentInfoApprovalMapper; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import lombok.RequiredArgsConstructor; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; /** *

@@ -15,6 +42,183 @@ * @since 2023-07-21 */ @Service +@RequiredArgsConstructor public class EquipmentInfoApprovalServiceImpl extends ServiceImpl implements IEquipmentInfoApprovalService { + private final IEquipmentAttachmentService attachmentService; + private final IEquipmentTechnicalTargetService technicalTargetService; + + private final IBaseApprovalService baseApprovalService; + + @Override + @Transactional + public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { + // todo 删除申请,需要把设备信息回填? + // 0. 生成设备id + if(ObjectUtil.isNotEmpty(approvalForm.getEquipmentId())){ + approvalForm.setEquipmentId(IdWorker.getId()); + } + // 1. 生成统一编号 + if(StrUtil.isEmpty(approvalForm.getEquipmentNo())){ + Long maxNo = this.baseMapper.selectMaxNo(); + approvalForm.setEquipmentNo(NumberGeneratorUtil.getContactNo(PrefixCodeEnum.EQUIPMENT_PREFIX, maxNo)); + } + // 2. 设置申请状态:草稿箱 + approvalForm.setApprovalStatus(ApprovalStatusEnum.DRAFT); + // 3. 保存扩展表 + if(CollUtil.isNotEmpty(approvalForm.getTechnicalTargetList())){ + technicalTargetService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getTechnicalTargetList()); + } + if(CollUtil.isNotEmpty(approvalForm.getAttachments())){ + attachmentService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getAttachments()); + } + // 4. 删除旧流程(已取消后再次编辑) todo 改了!! + if(StrUtil.isNotEmpty(approvalForm.getProcessId())){ + this.deleteProcessInstance(approvalForm.getProcessId()); + approvalForm.setProcessId(null); + } + this.saveOrUpdate(approvalForm); + // 4. 返回申请记录id + return approvalForm.getId(); + } + + private void deleteProcessInstance(String processId){ + if(StrUtil.isNotEmpty(processId)){ + // todo 去除魔法值 + baseApprovalService.deleteProcessInstance(processId,"删除"); + } + } + + private void resetProcessInstance(String processId){ + // todo 重置流程 + } + + @Override + @Transactional + public void removeApproval(Long approvalId) { + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + attachmentService.removeByEquipment(approvalInfo.getEquipmentId()); + technicalTargetService.removeByEquipment(approvalInfo.getEquipmentId()); + this.deleteProcessInstance(approvalInfo.getProcessId()); + this.removeById(approvalId); + } + + @Override + public ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest) { + EquipmentInfoApproval approvalInfo = this.getById(submitRequest.getId()); + if(StrUtil.isEmpty(approvalInfo.getProcessId())){ + ReturnDTO submitRes = baseApprovalService.processSubmit(submitRequest.getFormId(),submitRequest.getId()); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(submitRes.getCode())) { + return submitRes; + } + ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); + approvalInfo.setProcessId(processInstance.getProcessInstanceId()); + }else { + resetProcessInstance(approvalInfo.getProcessId()); + } + return updateApprovalStatus(approvalInfo,ApprovalStatusEnum.IN_APPROVED); + } + + @Override + public ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest) { + ReturnDTO res = baseApprovalService.revoke(revokeRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(revokeRequest.getId(),ApprovalStatusEnum.CANCELED); + } + + private ReturnDTO updateApprovalStatus(EquipmentInfoApproval approvalInfo,String approvalStatus){ + approvalInfo.setApprovalStatus(approvalStatus); + boolean updateRes = this.updateById(approvalInfo); + return updateRes ? ReturnUtil.success() : ReturnUtil.failed("请求失败"); + } + + private ReturnDTO updateApprovalStatus(Serializable approvalId, String approvalStatus){ + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + return this.updateApprovalStatus(approvalInfo,approvalStatus); + } + + @Override + public ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest) { + return baseApprovalService.agree(agreeRequest); + } + + @Override + public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { + ReturnDTO res = baseApprovalService.refuse(refuseRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(refuseRequest.getId(),ApprovalStatusEnum.FAILED); + } + + @Override + public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { + EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); + info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); + info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + return info; + } + + @Override + public Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return this.page(page,queryWrapper); + } + + @Override + public Page toApprovalListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List toBeApprovedList = baseApprovalService.getToBeApprovedList(formId); + if(CollUtil.isEmpty(toBeApprovedList)){ + return page; + } + + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + queryWrapper.in("id",toApprovalIds); + return this.page(page,queryWrapper); + } + + @Override + public Page approvedListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List approvedIds = baseApprovalService.getApprovedList(formId); + if(CollUtil.isEmpty(approvedIds)){ + return page; + } + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + queryWrapper.in("id",approvedIds); + return this.page(page,queryWrapper); + } + + private QueryWrapper commonQuery(String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(equipmentNo)){ + queryWrapper.like("equipment_no",equipmentNo); + } + if(StrUtil.isNotEmpty(equipmentName)){ + queryWrapper.like("equipment_name",equipmentName); + } + if(StrUtil.isNotEmpty(usePosition)){ + queryWrapper.like("use_position",usePosition); + } + if(StrUtil.isNotEmpty(usageStatus)){ + queryWrapper.eq("usage_status",usageStatus); + } + if(StrUtil.isNotEmpty(certificateValidStart)){ + queryWrapper.ge("certificate_valid",certificateValidStart); + } + if(StrUtil.isNotEmpty(certificateValidEnd)){ + queryWrapper.le("certificate_valid",certificateValidEnd); + } + return queryWrapper; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java new file mode 100644 index 0000000..2ab991d --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.service.IBaseApprovalService; +import org.springframework.stereotype.Service; + +import java.util.List; + +// todo +@Service +public class BaseApprovalServiceImpl implements IBaseApprovalService { + + @Override + public ReturnDTO processSubmit(String formId, Long id) { + return null; + } + + @Override + public ReturnDTO agree(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO reject(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO refuse(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO revoke(ApprovalRevokeRequest request) { + return null; + } + + @Override + public ReturnDTO delete(BaseApprovalRequest request) { + return null; + } + + @Override + public void deleteProcessInstance(String processInstanceId, String deleteReason) { + + } + + @Override + public void failUpdate(String processId) { + + } + + @Override + public List getToBeApprovedList(String formId) { + return null; + } + + @Override + public List getApprovedList(String formId) { + return null; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java index ac4c2c9..86c6bc6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java @@ -1,10 +1,16 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.mapper.equipment.EquipmentAttachmentMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +23,32 @@ @Service public class EquipmentAttachmentServiceImpl extends ServiceImpl implements IEquipmentAttachmentService { + @Override + @Transactional + public boolean saveByEquipment(Long equipmentId, List attachmentList) { + boolean res; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + res = this.remove(wrapper); + if(res && CollUtil.isNotEmpty(attachmentList)){ + attachmentList.forEach(i->i.setEquipmentId(equipmentId)); + res = this.saveBatch(attachmentList); + } + return res; + } + + @Override + public boolean removeByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + wrapper.notExists("(select id from eqpt_equipment_info i where i.id = eqpt_equipment_attachment.equipment_id)"); + return this.remove(wrapper); + } + + @Override + public List selectByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + return this.list(wrapper); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 87c11ed..dab0c33 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -1,10 +1,37 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.mapper.equipment.EquipmentInfoApprovalMapper; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import lombok.RequiredArgsConstructor; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; /** *

@@ -15,6 +42,183 @@ * @since 2023-07-21 */ @Service +@RequiredArgsConstructor public class EquipmentInfoApprovalServiceImpl extends ServiceImpl implements IEquipmentInfoApprovalService { + private final IEquipmentAttachmentService attachmentService; + private final IEquipmentTechnicalTargetService technicalTargetService; + + private final IBaseApprovalService baseApprovalService; + + @Override + @Transactional + public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { + // todo 删除申请,需要把设备信息回填? + // 0. 生成设备id + if(ObjectUtil.isNotEmpty(approvalForm.getEquipmentId())){ + approvalForm.setEquipmentId(IdWorker.getId()); + } + // 1. 生成统一编号 + if(StrUtil.isEmpty(approvalForm.getEquipmentNo())){ + Long maxNo = this.baseMapper.selectMaxNo(); + approvalForm.setEquipmentNo(NumberGeneratorUtil.getContactNo(PrefixCodeEnum.EQUIPMENT_PREFIX, maxNo)); + } + // 2. 设置申请状态:草稿箱 + approvalForm.setApprovalStatus(ApprovalStatusEnum.DRAFT); + // 3. 保存扩展表 + if(CollUtil.isNotEmpty(approvalForm.getTechnicalTargetList())){ + technicalTargetService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getTechnicalTargetList()); + } + if(CollUtil.isNotEmpty(approvalForm.getAttachments())){ + attachmentService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getAttachments()); + } + // 4. 删除旧流程(已取消后再次编辑) todo 改了!! + if(StrUtil.isNotEmpty(approvalForm.getProcessId())){ + this.deleteProcessInstance(approvalForm.getProcessId()); + approvalForm.setProcessId(null); + } + this.saveOrUpdate(approvalForm); + // 4. 返回申请记录id + return approvalForm.getId(); + } + + private void deleteProcessInstance(String processId){ + if(StrUtil.isNotEmpty(processId)){ + // todo 去除魔法值 + baseApprovalService.deleteProcessInstance(processId,"删除"); + } + } + + private void resetProcessInstance(String processId){ + // todo 重置流程 + } + + @Override + @Transactional + public void removeApproval(Long approvalId) { + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + attachmentService.removeByEquipment(approvalInfo.getEquipmentId()); + technicalTargetService.removeByEquipment(approvalInfo.getEquipmentId()); + this.deleteProcessInstance(approvalInfo.getProcessId()); + this.removeById(approvalId); + } + + @Override + public ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest) { + EquipmentInfoApproval approvalInfo = this.getById(submitRequest.getId()); + if(StrUtil.isEmpty(approvalInfo.getProcessId())){ + ReturnDTO submitRes = baseApprovalService.processSubmit(submitRequest.getFormId(),submitRequest.getId()); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(submitRes.getCode())) { + return submitRes; + } + ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); + approvalInfo.setProcessId(processInstance.getProcessInstanceId()); + }else { + resetProcessInstance(approvalInfo.getProcessId()); + } + return updateApprovalStatus(approvalInfo,ApprovalStatusEnum.IN_APPROVED); + } + + @Override + public ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest) { + ReturnDTO res = baseApprovalService.revoke(revokeRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(revokeRequest.getId(),ApprovalStatusEnum.CANCELED); + } + + private ReturnDTO updateApprovalStatus(EquipmentInfoApproval approvalInfo,String approvalStatus){ + approvalInfo.setApprovalStatus(approvalStatus); + boolean updateRes = this.updateById(approvalInfo); + return updateRes ? ReturnUtil.success() : ReturnUtil.failed("请求失败"); + } + + private ReturnDTO updateApprovalStatus(Serializable approvalId, String approvalStatus){ + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + return this.updateApprovalStatus(approvalInfo,approvalStatus); + } + + @Override + public ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest) { + return baseApprovalService.agree(agreeRequest); + } + + @Override + public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { + ReturnDTO res = baseApprovalService.refuse(refuseRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(refuseRequest.getId(),ApprovalStatusEnum.FAILED); + } + + @Override + public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { + EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); + info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); + info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + return info; + } + + @Override + public Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return this.page(page,queryWrapper); + } + + @Override + public Page toApprovalListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List toBeApprovedList = baseApprovalService.getToBeApprovedList(formId); + if(CollUtil.isEmpty(toBeApprovedList)){ + return page; + } + + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + queryWrapper.in("id",toApprovalIds); + return this.page(page,queryWrapper); + } + + @Override + public Page approvedListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List approvedIds = baseApprovalService.getApprovedList(formId); + if(CollUtil.isEmpty(approvedIds)){ + return page; + } + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + queryWrapper.in("id",approvedIds); + return this.page(page,queryWrapper); + } + + private QueryWrapper commonQuery(String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(equipmentNo)){ + queryWrapper.like("equipment_no",equipmentNo); + } + if(StrUtil.isNotEmpty(equipmentName)){ + queryWrapper.like("equipment_name",equipmentName); + } + if(StrUtil.isNotEmpty(usePosition)){ + queryWrapper.like("use_position",usePosition); + } + if(StrUtil.isNotEmpty(usageStatus)){ + queryWrapper.eq("usage_status",usageStatus); + } + if(StrUtil.isNotEmpty(certificateValidStart)){ + queryWrapper.ge("certificate_valid",certificateValidStart); + } + if(StrUtil.isNotEmpty(certificateValidEnd)){ + queryWrapper.le("certificate_valid",certificateValidEnd); + } + return queryWrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index 9b4c2fc..33fc839 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -1,11 +1,24 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.Objects; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -15,6 +28,63 @@ * @since 2023-07-21 */ @Service +@RequiredArgsConstructor public class EquipmentInfoServiceImpl extends ServiceImpl implements IEquipmentInfoService { + private final AbstractPermissionContext permissionContext; + + + @Override + public Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + page.setRecords(this.baseMapper.selectListPage(page, dataScope, queryWrapper)); + return page; + } + + @Override + public List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.selectList(dataScope, queryWrapper); + } + + @Override + public List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dataScopeDeptIds = dataScope.getDeptIds(); + deptIds.addAll(dataScopeDeptIds); + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + queryWrapper.groupBy("equipment_name"); + queryWrapper.select("equipment_name as 'equipmentName',count(*) as 'count'"); + List> resMap = this.listMaps(queryWrapper); + return EquipmentGroup.mapToObjects(resMap); + } + + private QueryWrapper commonQuery(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(equipmentNo)) { + queryWrapper.like("equipment_no", equipmentNo); + } + if (StrUtil.isNotEmpty(equipmentName)) { + queryWrapper.like("equipment_name", equipmentName); + } + if (StrUtil.isNotEmpty(usePosition)) { + queryWrapper.like("use_position", usePosition); + } + if (StrUtil.isNotEmpty(usageStatus)) { + queryWrapper.eq("usage_status", usageStatus); + } + if (StrUtil.isNotEmpty(certificateValidStart)) { + queryWrapper.ge("certificate_valid", certificateValidStart); + } + if (StrUtil.isNotEmpty(certificateValidEnd)) { + queryWrapper.le("certificate_valid", certificateValidEnd); + } + if (CollUtil.isNotEmpty(deptIds)) { + // todo 包含下级吗? + queryWrapper.in("dept_id", deptIds); + } + return queryWrapper; + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java new file mode 100644 index 0000000..be6edc5 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentApprovalController.java @@ -0,0 +1,113 @@ +package com.casic.missiles.controller.equipment; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@Api(tags = "设备审批管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentApprovalController extends BaseController { + + private final IEquipmentInfoApprovalService approvalService; + + @ApiOperation("保存、编辑审批") + @PostMapping("/approval/saveOrUpdate") + @ResponseBody + public ReturnDTO saveApproval(@RequestBody EquipmentApprovalForm approvalForm){ + Long approvalId = approvalService.saveOrUpdateApproval(approvalForm); + return ReturnUtil.success(approvalId); + } + + @ApiOperation("删除审批") + @PostMapping("/approval/delete") + @ResponseBody + public ReturnDTO deleteApproval(Long id){ + approvalService.removeApproval(id); + return ReturnUtil.success(); + } + + @ApiOperation("提交审批") + @PostMapping("/approval/submit") + @ResponseBody + public ReturnDTO submitApproval(@RequestBody ApprovalSubmitRequest submitRequest){ + return approvalService.submitApproval(submitRequest); + } + + @ApiOperation("取消审批") + @PostMapping("/approval/cancel") + @ResponseBody + public ReturnDTO cancelApproval(@RequestBody ApprovalRevokeRequest revokeRequest){ + return approvalService.cancelApproval(revokeRequest); + } + + @ApiOperation("同意审批") + @PostMapping("/approval/agree") + @ResponseBody + public ReturnDTO agreeApproval(@RequestBody BaseApprovalRequest agreeRequest){ + return approvalService.agreeApproval(agreeRequest); + } + + @ApiOperation("拒绝审批") + @PostMapping("/approval/refuse") + @ResponseBody + public ReturnDTO refuseApproval(@RequestBody BaseApprovalRequest refuseRequest){ + return approvalService.refuseApproval(refuseRequest); + } + + @ApiOperation("查看审批-基本信息") + @GetMapping("/approval/detail") + @ResponseBody + public ReturnDTO approvalDetail(Long id){ + EquipmentApprovalForm info = approvalService.approvalInfoDetail(id); + return ReturnUtil.success(info); + } + + @ApiOperation("审批列表-审批/草稿箱/审批中/已通过/未通过/已取消") + @GetMapping("/approval/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName,String usePosition,String usageStatus, + String certificateValidStart,String certificateValidEnd,String approvalStatus){ + Page page = PageFactory.defaultPage(); + page = approvalService.listPage(page,equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd,approvalStatus); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-待审批") + @GetMapping("/approval/toApprovalListPage") + @ResponseBody + public ReturnDTO toApprovalListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.toApprovalListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("审批列表-已审批") + @GetMapping("/approval/approvedListPage") + @ResponseBody + public ReturnDTO approvedListPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId){ + Page page = PageFactory.defaultPage(); + page = approvalService.approvedListPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd,formId); + return ReturnUtil.success(super.packForBT(page)); + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java new file mode 100644 index 0000000..78bb9b1 --- /dev/null +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/equipment/EquipmentInfoController.java @@ -0,0 +1,60 @@ +package com.casic.missiles.controller.equipment; + + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.base.controller.BaseController; +import com.casic.missiles.core.page.PageFactory; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentGroup; +import com.casic.missiles.model.equipment.EquipmentInfo; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.service.equipment.IEquipmentInfoService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import java.util.List; + +@Api(tags = "设备管理接口") +@Slf4j +@Controller +@RequestMapping("/equipment") +@RequiredArgsConstructor +public class EquipmentInfoController extends BaseController{ + + private final IEquipmentInfoService equipmentInfoService; + + @ApiOperation("设备分页列表") + @GetMapping("/info/listPage") + @ResponseBody + public ReturnDTO listPage(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + Page page = PageFactory.defaultPage(); + page = equipmentInfoService.listPage(page,equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(super.packForBT(page)); + } + + @ApiOperation("设备列表") + @GetMapping("/info/list") + @ResponseBody + public ReturnDTO list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.list(equipmentNo,equipmentName,deptIds,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return ReturnUtil.success(list); + } + + @ApiOperation("设备聚合列表") + @GetMapping("/info/groupByName") + @ResponseBody + public ReturnDTO groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd){ + List list = equipmentInfoService.groupByName(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + return ReturnUtil.success(list); + } +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java new file mode 100644 index 0000000..df52a22 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/ApprovalStatusEnum.java @@ -0,0 +1,30 @@ +package com.casic.missiles.enums; + +/** + * @Description: 审批状态类型枚举 + * @Author: wangpeng + * @Date: 2022/12/15 10:51 + */ +public interface ApprovalStatusEnum { + String PROCESS_STATUS = "processStatus"; + //全部 + String ALL = "0"; + //草稿箱 + String DRAFT = "1"; + //待审批 + String TO_BE_APPROVED = "2"; + //审批中,驳回后编辑会设置该状态到flowable + String IN_APPROVED = "3"; + //已通过,会设置到flowable(listener) + String PASSED = "4"; + //未通过,会设置到flowable + String FAILED = "5"; + //未通过-驳回,会设置到flowable + String FAILED_REJECT = "8"; + //已取消,会设置到flowable + String CANCELED = "6"; + //非草稿状态,仅在枚举中设置,字典中不设置 + String UN_DRAFT = "7"; + //删除,已取消中提交后的原有实例删除,仅在枚举中设置,字典中不设置 + String DELETED = "8"; +} diff --git a/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java new file mode 100644 index 0000000..3771c37 --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/enums/PrefixCodeEnum.java @@ -0,0 +1,8 @@ +package com.casic.missiles.enums; + +import liquibase.pro.packaged.S; + +public interface PrefixCodeEnum { + + String EQUIPMENT_PREFIX = "sjsb"; +} diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java index 33b3a95..0c44a12 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoApprovalMapper.java @@ -2,6 +2,7 @@ import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Select; /** *

@@ -13,4 +14,6 @@ */ public interface EquipmentInfoApprovalMapper extends BaseMapper { + @Select("SELECT IFNULL(max(RIGHT(equipment_no, 12)), 0) from eqpt_equipment_info") + Long selectMaxNo(); } diff --git a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java index c3fa871..339dd6c 100644 --- a/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java +++ b/casic-metering-dao/src/main/java/com/casic/missiles/mapper/equipment/EquipmentInfoMapper.java @@ -1,7 +1,14 @@ package com.casic.missiles.mapper.equipment; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; /** *

@@ -13,4 +20,8 @@ */ public interface EquipmentInfoMapper extends BaseMapper { + List selectListPage(@Param("page")Page page, @Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + + List selectList(@Param("dataScope") DataScope dataScope, @Param("ew")QueryWrapper queryWrapper); + } diff --git a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml index 93819ed..025b161 100644 --- a/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml +++ b/casic-metering-dao/src/main/resources/mapper/EquipmentInfoMapper.xml @@ -46,4 +46,24 @@ id, equipment_no, equipment_name, usage_status, level, product_country, manufacturer, manufacture_no, product_date, unit_price, purchase_date, model, quality_condition, company_id, dept_id, category, check_cycle, remark, instructions_file, check_organization, check_date, certificate_valid, meter_identify, use_position, director_name, RFID, use_sign, install_location, install_location_ext, test_task, remark_ext, create_user_id, create_user_name, create_time, update_time + + + + diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java deleted file mode 100644 index 6b3eae6..0000000 --- a/casic-metering-model/src/main/java/com/casic/missiles/dto/BaseApprovalSubmitRequest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.casic.missiles.dto; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; - -/** - * @Description: 文件提交请求实体 - * @Author: wangpeng - * @Date: 2022/12/14 17:13 - */ -@ApiModel -@Data -public class BaseApprovalSubmitRequest { - /** - * id - */ - @NotNull(message = "主键id不能为空") - @ApiModelProperty(value = "主键id", dataType = "Long") - private Long id; - - /** - * 表单id - */ - @NotBlank(message = "表单id不能为空") - @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") - private String formId; - - @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") - private String processId; - -} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java new file mode 100644 index 0000000..6f0e2ca --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentApprovalForm.java @@ -0,0 +1,22 @@ +package com.casic.missiles.dto.equipment; + +import com.casic.missiles.model.equipment.EquipmentAttachment; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.util.List; + +@EqualsAndHashCode(callSuper = true) +@Data +public class EquipmentApprovalForm extends EquipmentInfoApproval { + + + @ApiModelProperty("技术指标列表") + private List technicalTargetList; + + @ApiModelProperty("主附件信息列表") + private List attachments; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java new file mode 100644 index 0000000..52e79ed --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/equipment/EquipmentGroup.java @@ -0,0 +1,31 @@ +package com.casic.missiles.dto.equipment; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class EquipmentGroup { + + private String equipmentName; + + private Integer count; + + public static List mapToObjects(List> maps){ + List list = new ArrayList<>(); + if(CollUtil.isNotEmpty(maps)){ + maps.forEach(map->{ + list.add(new EquipmentGroup(map.get("equipmentName").toString(),Integer.parseInt(map.get("count").toString()))); + }); + } + return list; + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java new file mode 100644 index 0000000..f8aaba0 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalRevokeRequest.java @@ -0,0 +1,27 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * @Description: 审批拒绝请求实体 + * @Author: wangpeng + * @Date: 2022/12/29 12:29 + */ +@Data +public class ApprovalRevokeRequest { + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批结论/意见") +// @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java new file mode 100644 index 0000000..bb8d3e8 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ApprovalSubmitRequest.java @@ -0,0 +1,35 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @Description: 文件提交请求实体 + * @Author: wangpeng + * @Date: 2022/12/14 17:13 + */ +@ApiModel +@Data +public class ApprovalSubmitRequest { + /** + * id + */ + @NotNull(message = "主键id不能为空") + @ApiModelProperty(value = "主键id", dataType = "Long") + private Long id; + + /** + * 表单id + */ + @NotBlank(message = "表单id不能为空") + @ApiModelProperty(value = "表单id(流程定义对应的表单id,等价于业务id)", dataType = "String") + private String formId; + + @ApiModelProperty(value = "流程实例id(已取消中的提交时必传)", dataType = "String") + private String processId; + +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java new file mode 100644 index 0000000..c6f45c3 --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/BaseApprovalRequest.java @@ -0,0 +1,26 @@ +package com.casic.missiles.dto.flowable; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +@Data +public class BaseApprovalRequest { + + @ApiModelProperty("任务id") + @NotBlank(message = "任务id不能为空") + private String taskId; + + @ApiModelProperty("审批结论/意见") + @NotBlank(message = "审批结论/意见不能为空") + private String comments; + + @ApiModelProperty("流程实例id") + @NotBlank(message = "流程实例id不能为空") + private String processInstanceId; + + @ApiModelProperty("审批id") + @NotBlank(message = "审批id不能为空") + private String id; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java new file mode 100644 index 0000000..79b030b --- /dev/null +++ b/casic-metering-model/src/main/java/com/casic/missiles/dto/flowable/ToBeApprovedDTO.java @@ -0,0 +1,17 @@ +package com.casic.missiles.dto.flowable; + +import lombok.Data; + +/** + * @Description: 待审批任务DTO + * @Author: wangpeng + * @Date: 2022/12/28 17:31 + */ +@Data +public class ToBeApprovedDTO { + private String businessKey; + private String taskId; + private Integer decisionItem; + //任务创建时间,工作台审批提醒使用 + private String createTime; +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java index 2cc0af9..4828ce2 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentAttachment.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; -import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -16,14 +20,13 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_attachment") public class EquipmentAttachment implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +38,29 @@ /** * 名称 */ + @ApiModelProperty("名称") @TableField("name") private String name; /** * 信息 */ + @ApiModelProperty("信息") @TableField("information") private String information; /** * 位置 */ + @ApiModelProperty("位置") @TableField("position") private String position; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java index 3e11de6..5561d1b 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentInfoApproval.java @@ -1,11 +1,16 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; import lombok.Getter; import lombok.Setter; @@ -17,243 +22,280 @@ * @author zhangyingjie * @since 2023-07-21 */ -@Getter -@Setter +@Data @TableName("eqpt_equipment_info_approval") public class EquipmentInfoApproval implements Serializable { private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** * 申请审批类型(1新增2编辑3删除) */ + @ApiModelProperty("申请审批类型(1新增2编辑3删除)") @TableField("approval_type") private Integer approvalType; /** * 流程实例id */ + @ApiModelProperty("流程实例id") @TableField("process_id") private String processId; /** * 审批状态(工作流回填) */ + @ApiModelProperty("审批状态(工作流回填)") @TableField("approval_status") private String approvalStatus; /** * 设备id */ + @ApiModelProperty("设备id") @TableField("equipment_id") private Long equipmentId; /** * 设备编号 */ + @ApiModelProperty("设备编号") @TableField("equipment_no") private String equipmentNo; /** * 设备名称 */ + @ApiModelProperty("设备名称") @TableField("equipment_name") private String equipmentName; /** * 使用状态(字典code) */ + @ApiModelProperty("使用状态(字典code)") @TableField("usage_status") private String usageStatus; /** * 等级(字典code) */ + @ApiModelProperty("等级(字典code)") @TableField("level") private String level; /** * 生产国家 */ + @ApiModelProperty("生产国家") @TableField("product_country") private String productCountry; /** * 生产厂家 */ + @ApiModelProperty("生产厂家") @TableField("manufacturer") private String manufacturer; /** * 出厂编号 */ + @ApiModelProperty("出厂编号") @TableField("manufacture_no") private String manufactureNo; /** * 生产日期 */ + @ApiModelProperty("生产日期") @TableField("product_date") private LocalDateTime productDate; /** * 单价(万元) */ + @ApiModelProperty("单价(万元)") @TableField("unit_price") private BigDecimal unitPrice; /** * 购进日期 */ + @ApiModelProperty("购进日期") @TableField("purchase_date") private LocalDateTime purchaseDate; /** * 型号规格 */ + @ApiModelProperty("型号规格") @TableField("model") private String model; /** * 质量状况 */ + @ApiModelProperty("质量状况") @TableField("quality_condition") private String qualityCondition; /** * 所在单位id */ + @ApiModelProperty("所在单位id") @TableField("company_id") private Long companyId; /** * 使用部门id */ + @ApiModelProperty("使用部门id") @TableField("dept_id") private Long deptId; /** * 设备分类(字典code) */ + @ApiModelProperty("设备分类(字典code)") @TableField("category") private String category; /** * 检定周期(月) */ + @ApiModelProperty("检定周期(月)") @TableField("check_cycle") private Integer checkCycle; /** * 备注 */ + @ApiModelProperty("备注") @TableField("remark") private String remark; /** * 说明书(minio存储文件名)(多个用,拼接) */ + @ApiModelProperty("说明书(minio存储文件名)(多个用,拼接)") @TableField("instructions_file") private String instructionsFile; /** * 检定机构 */ + @ApiModelProperty("检定机构") @TableField("check_organization") private String checkOrganization; /** * 检定日期 */ + @ApiModelProperty("检定日期") @TableField("check_date") private LocalDateTime checkDate; /** * 证书有效期 */ + @ApiModelProperty("证书有效期") @TableField("certificate_valid") - private LocalDateTime certificateValid; + private Date certificateValid; /** * 计量标识 */ + @ApiModelProperty("计量标识") @TableField("meter_identify") private String meterIdentify; /** * 使用岗位 */ + @ApiModelProperty("使用岗位") @TableField("use_position") private String usePosition; /** * 负责人 */ + @ApiModelProperty("负责人") @TableField("director_name") private String directorName; /** * RFID标签绑定 */ + @ApiModelProperty("RFID标签绑定") @TableField("RFID") private String rfid; /** * 在用信息(字典code) */ + @ApiModelProperty("在用信息(字典code)") @TableField("use_sign") private String useSign; /** * 安装位置(选择) */ + @ApiModelProperty("安装位置(选择)") @TableField("install_location") private String installLocation; /** * 安装位置(自定义编写) */ + @ApiModelProperty("安装位置(自定义编写)") @TableField("install_location_ext") private String installLocationExt; /** * 安装位置(多个用,拼接) */ + @ApiModelProperty("安装位置(多个用,拼接)") @TableField("test_task") private String testTask; /** * 备注(扩展) */ + @ApiModelProperty("备注(扩展)") @TableField("remark_ext") private String remarkExt; /** * 创建人id */ + @ApiModelProperty("创建人id") @TableField("create_user_id") private Long createUserId; /** * 创建人名字 */ + @ApiModelProperty("创建人名字") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty("创建时间") @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; /** * 更新时间 */ + @ApiModelProperty("更新时间") @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java index 10ba54d..b57c610 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/equipment/EquipmentTechnicalTarget.java @@ -1,10 +1,14 @@ package com.casic.missiles.model.equipment; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.Date; + +import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; @@ -23,7 +27,7 @@ private static final long serialVersionUID = 1L; - @TableId("id") + @TableId(value = "id",type = IdType.ASSIGN_ID) private Long id; /** @@ -35,26 +39,29 @@ /** * 测量范围 */ + @ApiModelProperty("测量范围") @TableField("measure_range") private String measureRange; /** * 不确定度或允许误差极限或准确度等级 */ + @ApiModelProperty("不确定度或允许误差极限或准确度等级") @TableField("uncertainty") private String uncertainty; /** * 依据的技术文件 */ + @ApiModelProperty("依据的技术文件") @TableField("based_documents") private String basedDocuments; @TableField("create_time") - private LocalDateTime createTime; + private Date createTime; @TableField("update_time") - private LocalDateTime updateTime; + private Date updateTime; } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java new file mode 100644 index 0000000..2178816 --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/IBaseApprovalService.java @@ -0,0 +1,34 @@ +package com.casic.missiles.service; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; + +import java.util.List; + +/** + * @Description: 公共审批功能service todo + * @Author: wangpeng + * @Date: 2022/12/21 11:31 + */ +public interface IBaseApprovalService { + + ReturnDTO processSubmit(String formId, Long id); + + ReturnDTO agree(BaseApprovalRequest request); + + ReturnDTO reject(BaseApprovalRequest request); + + ReturnDTO refuse(BaseApprovalRequest request); + + ReturnDTO revoke(ApprovalRevokeRequest request); + + ReturnDTO delete(BaseApprovalRequest request); + + void deleteProcessInstance(String processInstanceId, String deleteReason); + void failUpdate(String processId); + List getToBeApprovedList(String formId); + + List getApprovedList(String formId); +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java index 88cabac..403857a 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentAttachmentService.java @@ -3,6 +3,8 @@ import com.casic.missiles.model.equipment.EquipmentAttachment; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-主附件信息表 服务类 @@ -13,4 +15,10 @@ */ public interface IEquipmentAttachmentService extends IService { + boolean saveByEquipment(Long equipmentId, List attachmentList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java index bcb062e..6e3b227 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoApprovalService.java @@ -1,8 +1,16 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-审批记录表 服务类 @@ -13,4 +21,27 @@ */ public interface IEquipmentInfoApprovalService extends IService { + Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm); + + void removeApproval(Long approvalId); + + ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest); + + ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest); + + ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest); + + ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest); + + EquipmentApprovalForm approvalInfoDetail(Long approvalId); + + Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String approvalStatus); + + Page toApprovalListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + + Page approvedListPage(Page page, String equipmentNo, String equipmentName,List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd, String formId); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java index 5abc541..75ad3fd 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentInfoService.java @@ -1,8 +1,13 @@ package com.casic.missiles.service.equipment; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-基本信息表 服务类 @@ -13,4 +18,13 @@ */ public interface IEquipmentInfoService extends IService { + Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + + List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, + String certificateValidStart, String certificateValidEnd); + } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java index 6db41d7..7e7dd69 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/equipment/IEquipmentTechnicalTargetService.java @@ -1,8 +1,11 @@ package com.casic.missiles.service.equipment; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 受检设备-设备台账-技术指标表 服务类 @@ -13,4 +16,9 @@ */ public interface IEquipmentTechnicalTargetService extends IService { + boolean saveByEquipment(Long equipmentId, List technicalTargetList); + + boolean removeByEquipment(Long equipmentId); + + List selectByEquipment(Long equipmentId); } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java new file mode 100644 index 0000000..2ab991d --- /dev/null +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/BaseApprovalServiceImpl.java @@ -0,0 +1,65 @@ +package com.casic.missiles.service.impl; + +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.service.IBaseApprovalService; +import org.springframework.stereotype.Service; + +import java.util.List; + +// todo +@Service +public class BaseApprovalServiceImpl implements IBaseApprovalService { + + @Override + public ReturnDTO processSubmit(String formId, Long id) { + return null; + } + + @Override + public ReturnDTO agree(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO reject(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO refuse(BaseApprovalRequest request) { + return null; + } + + @Override + public ReturnDTO revoke(ApprovalRevokeRequest request) { + return null; + } + + @Override + public ReturnDTO delete(BaseApprovalRequest request) { + return null; + } + + @Override + public void deleteProcessInstance(String processInstanceId, String deleteReason) { + + } + + @Override + public void failUpdate(String processId) { + + } + + @Override + public List getToBeApprovedList(String formId) { + return null; + } + + @Override + public List getApprovedList(String formId) { + return null; + } +} diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java index ac4c2c9..86c6bc6 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentAttachmentServiceImpl.java @@ -1,10 +1,16 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.mapper.equipment.EquipmentAttachmentMapper; +import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +23,32 @@ @Service public class EquipmentAttachmentServiceImpl extends ServiceImpl implements IEquipmentAttachmentService { + @Override + @Transactional + public boolean saveByEquipment(Long equipmentId, List attachmentList) { + boolean res; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + res = this.remove(wrapper); + if(res && CollUtil.isNotEmpty(attachmentList)){ + attachmentList.forEach(i->i.setEquipmentId(equipmentId)); + res = this.saveBatch(attachmentList); + } + return res; + } + + @Override + public boolean removeByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + wrapper.notExists("(select id from eqpt_equipment_info i where i.id = eqpt_equipment_attachment.equipment_id)"); + return this.remove(wrapper); + } + + @Override + public List selectByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + return this.list(wrapper); + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java index 87c11ed..dab0c33 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoApprovalServiceImpl.java @@ -1,10 +1,37 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.IdWorker; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.dto.flowable.ApprovalRevokeRequest; +import com.casic.missiles.dto.flowable.ApprovalSubmitRequest; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.dto.equipment.EquipmentApprovalForm; +import com.casic.missiles.dto.flowable.BaseApprovalRequest; +import com.casic.missiles.dto.flowable.ToBeApprovedDTO; +import com.casic.missiles.enums.ApprovalStatusEnum; +import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.mapper.equipment.EquipmentInfoApprovalMapper; +import com.casic.missiles.model.response.ResponseData; +import com.casic.missiles.service.IBaseApprovalService; +import com.casic.missiles.service.equipment.IEquipmentAttachmentService; import com.casic.missiles.service.equipment.IEquipmentInfoApprovalService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; +import com.casic.missiles.utils.NumberGeneratorUtil; +import lombok.RequiredArgsConstructor; +import org.flowable.engine.runtime.ProcessInstance; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; +import java.util.stream.Collectors; /** *

@@ -15,6 +42,183 @@ * @since 2023-07-21 */ @Service +@RequiredArgsConstructor public class EquipmentInfoApprovalServiceImpl extends ServiceImpl implements IEquipmentInfoApprovalService { + private final IEquipmentAttachmentService attachmentService; + private final IEquipmentTechnicalTargetService technicalTargetService; + + private final IBaseApprovalService baseApprovalService; + + @Override + @Transactional + public Long saveOrUpdateApproval(EquipmentApprovalForm approvalForm) { + // todo 删除申请,需要把设备信息回填? + // 0. 生成设备id + if(ObjectUtil.isNotEmpty(approvalForm.getEquipmentId())){ + approvalForm.setEquipmentId(IdWorker.getId()); + } + // 1. 生成统一编号 + if(StrUtil.isEmpty(approvalForm.getEquipmentNo())){ + Long maxNo = this.baseMapper.selectMaxNo(); + approvalForm.setEquipmentNo(NumberGeneratorUtil.getContactNo(PrefixCodeEnum.EQUIPMENT_PREFIX, maxNo)); + } + // 2. 设置申请状态:草稿箱 + approvalForm.setApprovalStatus(ApprovalStatusEnum.DRAFT); + // 3. 保存扩展表 + if(CollUtil.isNotEmpty(approvalForm.getTechnicalTargetList())){ + technicalTargetService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getTechnicalTargetList()); + } + if(CollUtil.isNotEmpty(approvalForm.getAttachments())){ + attachmentService.saveByEquipment(approvalForm.getEquipmentId(),approvalForm.getAttachments()); + } + // 4. 删除旧流程(已取消后再次编辑) todo 改了!! + if(StrUtil.isNotEmpty(approvalForm.getProcessId())){ + this.deleteProcessInstance(approvalForm.getProcessId()); + approvalForm.setProcessId(null); + } + this.saveOrUpdate(approvalForm); + // 4. 返回申请记录id + return approvalForm.getId(); + } + + private void deleteProcessInstance(String processId){ + if(StrUtil.isNotEmpty(processId)){ + // todo 去除魔法值 + baseApprovalService.deleteProcessInstance(processId,"删除"); + } + } + + private void resetProcessInstance(String processId){ + // todo 重置流程 + } + + @Override + @Transactional + public void removeApproval(Long approvalId) { + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + attachmentService.removeByEquipment(approvalInfo.getEquipmentId()); + technicalTargetService.removeByEquipment(approvalInfo.getEquipmentId()); + this.deleteProcessInstance(approvalInfo.getProcessId()); + this.removeById(approvalId); + } + + @Override + public ReturnDTO submitApproval(ApprovalSubmitRequest submitRequest) { + EquipmentInfoApproval approvalInfo = this.getById(submitRequest.getId()); + if(StrUtil.isEmpty(approvalInfo.getProcessId())){ + ReturnDTO submitRes = baseApprovalService.processSubmit(submitRequest.getFormId(),submitRequest.getId()); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(submitRes.getCode())) { + return submitRes; + } + ProcessInstance processInstance = (ProcessInstance) submitRes.getData(); + approvalInfo.setProcessId(processInstance.getProcessInstanceId()); + }else { + resetProcessInstance(approvalInfo.getProcessId()); + } + return updateApprovalStatus(approvalInfo,ApprovalStatusEnum.IN_APPROVED); + } + + @Override + public ReturnDTO cancelApproval(ApprovalRevokeRequest revokeRequest) { + ReturnDTO res = baseApprovalService.revoke(revokeRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(revokeRequest.getId(),ApprovalStatusEnum.CANCELED); + } + + private ReturnDTO updateApprovalStatus(EquipmentInfoApproval approvalInfo,String approvalStatus){ + approvalInfo.setApprovalStatus(approvalStatus); + boolean updateRes = this.updateById(approvalInfo); + return updateRes ? ReturnUtil.success() : ReturnUtil.failed("请求失败"); + } + + private ReturnDTO updateApprovalStatus(Serializable approvalId, String approvalStatus){ + EquipmentInfoApproval approvalInfo = this.getById(approvalId); + return this.updateApprovalStatus(approvalInfo,approvalStatus); + } + + @Override + public ReturnDTO agreeApproval(BaseApprovalRequest agreeRequest) { + return baseApprovalService.agree(agreeRequest); + } + + @Override + public ReturnDTO refuseApproval(BaseApprovalRequest refuseRequest) { + ReturnDTO res = baseApprovalService.refuse(refuseRequest); + if (!ResponseData.DEFAULT_SUCCESS_CODE.equals(res.getCode())) { + return res; + } + return updateApprovalStatus(refuseRequest.getId(),ApprovalStatusEnum.FAILED); + } + + @Override + public EquipmentApprovalForm approvalInfoDetail(Long approvalId) { + EquipmentApprovalForm info = (EquipmentApprovalForm) this.getById(approvalId); + info.setAttachments(attachmentService.selectByEquipment(info.getEquipmentId())); + info.setTechnicalTargetList(technicalTargetService.selectByEquipment(info.getEquipmentId())); + return info; + } + + @Override + public Page listPage(Page page, String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String approvalStatus) { + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + return this.page(page,queryWrapper); + } + + @Override + public Page toApprovalListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List toBeApprovedList = baseApprovalService.getToBeApprovedList(formId); + if(CollUtil.isEmpty(toBeApprovedList)){ + return page; + } + + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + List toApprovalIds = toBeApprovedList.stream().map(ToBeApprovedDTO::getBusinessKey).distinct().collect(Collectors.toList()); + queryWrapper.in("id",toApprovalIds); + return this.page(page,queryWrapper); + } + + @Override + public Page approvedListPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd, String formId) { + List approvedIds = baseApprovalService.getApprovedList(formId); + if(CollUtil.isEmpty(approvedIds)){ + return page; + } + QueryWrapper queryWrapper = commonQuery(equipmentNo,equipmentName,usePosition,usageStatus,certificateValidStart,certificateValidEnd); + if(CollUtil.isNotEmpty(deptIds)){ + // todo 包含下级吗? + queryWrapper.in("dept_id",deptIds); + } + queryWrapper.in("id",approvedIds); + return this.page(page,queryWrapper); + } + + private QueryWrapper commonQuery(String equipmentNo, String equipmentName, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd){ + QueryWrapper queryWrapper = new QueryWrapper<>(); + if(StrUtil.isNotEmpty(equipmentNo)){ + queryWrapper.like("equipment_no",equipmentNo); + } + if(StrUtil.isNotEmpty(equipmentName)){ + queryWrapper.like("equipment_name",equipmentName); + } + if(StrUtil.isNotEmpty(usePosition)){ + queryWrapper.like("use_position",usePosition); + } + if(StrUtil.isNotEmpty(usageStatus)){ + queryWrapper.eq("usage_status",usageStatus); + } + if(StrUtil.isNotEmpty(certificateValidStart)){ + queryWrapper.ge("certificate_valid",certificateValidStart); + } + if(StrUtil.isNotEmpty(certificateValidEnd)){ + queryWrapper.le("certificate_valid",certificateValidEnd); + } + return queryWrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java index 9b4c2fc..33fc839 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentInfoServiceImpl.java @@ -1,11 +1,24 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.casic.missiles.core.application.context.AbstractPermissionContext; +import com.casic.missiles.core.datascope.DataScope; +import com.casic.missiles.dto.equipment.EquipmentGroup; import com.casic.missiles.model.equipment.EquipmentInfo; import com.casic.missiles.mapper.equipment.EquipmentInfoMapper; +import com.casic.missiles.model.equipment.EquipmentInfoApproval; import com.casic.missiles.service.equipment.IEquipmentInfoService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.List; +import java.util.Map; +import java.util.Objects; + /** *

* 受检设备-设备台账-基本信息表 服务实现类 @@ -15,6 +28,63 @@ * @since 2023-07-21 */ @Service +@RequiredArgsConstructor public class EquipmentInfoServiceImpl extends ServiceImpl implements IEquipmentInfoService { + private final AbstractPermissionContext permissionContext; + + + @Override + public Page listPage(Page page, String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + page.setRecords(this.baseMapper.selectListPage(page, dataScope, queryWrapper)); + return page; + } + + @Override + public List list(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + return this.baseMapper.selectList(dataScope, queryWrapper); + } + + @Override + public List groupByName(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + DataScope dataScope = permissionContext.getAuthService().getLoginUserDataScope(); + List dataScopeDeptIds = dataScope.getDeptIds(); + deptIds.addAll(dataScopeDeptIds); + QueryWrapper queryWrapper = commonQuery(equipmentNo, equipmentName, deptIds, usePosition, usageStatus, certificateValidStart, certificateValidEnd); + queryWrapper.groupBy("equipment_name"); + queryWrapper.select("equipment_name as 'equipmentName',count(*) as 'count'"); + List> resMap = this.listMaps(queryWrapper); + return EquipmentGroup.mapToObjects(resMap); + } + + private QueryWrapper commonQuery(String equipmentNo, String equipmentName, List deptIds, String usePosition, String usageStatus, String certificateValidStart, String certificateValidEnd) { + QueryWrapper queryWrapper = new QueryWrapper<>(); + if (StrUtil.isNotEmpty(equipmentNo)) { + queryWrapper.like("equipment_no", equipmentNo); + } + if (StrUtil.isNotEmpty(equipmentName)) { + queryWrapper.like("equipment_name", equipmentName); + } + if (StrUtil.isNotEmpty(usePosition)) { + queryWrapper.like("use_position", usePosition); + } + if (StrUtil.isNotEmpty(usageStatus)) { + queryWrapper.eq("usage_status", usageStatus); + } + if (StrUtil.isNotEmpty(certificateValidStart)) { + queryWrapper.ge("certificate_valid", certificateValidStart); + } + if (StrUtil.isNotEmpty(certificateValidEnd)) { + queryWrapper.le("certificate_valid", certificateValidEnd); + } + if (CollUtil.isNotEmpty(deptIds)) { + // todo 包含下级吗? + queryWrapper.in("dept_id", deptIds); + } + return queryWrapper; + } } diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentTechnicalTargetServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentTechnicalTargetServiceImpl.java index 970d11d..534a859 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentTechnicalTargetServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/impl/equipment/EquipmentTechnicalTargetServiceImpl.java @@ -1,10 +1,17 @@ package com.casic.missiles.service.impl.equipment; +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.casic.missiles.model.equipment.EquipmentAttachment; import com.casic.missiles.model.equipment.EquipmentTechnicalTarget; import com.casic.missiles.mapper.equipment.EquipmentTechnicalTargetMapper; import com.casic.missiles.service.equipment.IEquipmentTechnicalTargetService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; /** *

@@ -17,4 +24,32 @@ @Service public class EquipmentTechnicalTargetServiceImpl extends ServiceImpl implements IEquipmentTechnicalTargetService { + @Override + @Transactional + public boolean saveByEquipment(Long equipmentId, List technicalTargetList) { + boolean res; + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + res = this.remove(wrapper); + if(res && CollUtil.isNotEmpty(technicalTargetList)){ + technicalTargetList.forEach(i->i.setEquipmentId(equipmentId)); + res = this.saveBatch(technicalTargetList); + } + return res; + } + + @Override + public boolean removeByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + wrapper.notExists("(select id from eqpt_equipment_info i where i.id = eqpt_equipment_attachment.equipment_id)"); + return this.remove(wrapper); + } + + @Override + public List selectByEquipment(Long equipmentId) { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("equipment_id",equipmentId); + return this.list(wrapper); + } }