From c04e87ae953fe7f765db32515555afcf64fc0c99 Mon Sep 17 00:00:00 2001 From: aikai Date: Fri, 8 Mar 2024 10:06:43 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=94=AF=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/oa/BpmOAProcureController.java | 14 +- .../admin/oa/BpmOAProcurePayController.java | 90 +++++++++ .../oa/BpmOAProcurePayItemController.java | 73 +++++++ .../vo/procure/BpmOAProcureListEditReqVO.java | 19 ++ .../oa/vo/procure/BpmOAProcurePageReqVO.java | 6 +- .../oa/vo/procure/BpmOAProcureRespVO.java | 8 + .../oa/vo/procure/BpmOAProcureSaveReqVO.java | 3 + .../BpmOAProcurePayItemPageReqVO.java | 37 ++++ .../procurepay/BpmOAProcurePayItemRespVO.java | 59 ++++++ .../BpmOAProcurePayItemSaveReqVO.java | 32 +++ .../procurepay/BpmOAProcurePayPageReqVO.java | 48 +++++ .../vo/procurepay/BpmOAProcurePayRespVO.java | 49 +++++ .../procurepay/BpmOAProcurePaySaveReqVO.java | 49 +++++ .../convert/oa/BpmOAProcurePayConvert.java | 23 +++ .../oa/BpmOAProcurePayItemConvert.java | 27 +++ .../bpm/dal/dataobject/oa/BpmOAProcureDO.java | 21 ++ .../dal/dataobject/oa/BpmOAProcurePayDO.java | 76 +++++++ .../dataobject/oa/BpmOAProcurePayItemDO.java | 51 +++++ ...ureMapper.java => BpmOAProcureMapper.java} | 2 +- .../mysql/oa/BpmOAProcurePayItemMapper.java | 40 ++++ .../dal/mysql/oa/BpmOAProcurePayMapper.java | 32 +++ .../oa/BpmOAProcurePayItemService.java | 55 +++++ .../oa/BpmOAProcurePayItemServiceImpl.java | 58 ++++++ .../service/oa/BpmOAProcurePayService.java | 65 ++++++ .../oa/BpmOAProcurePayServiceImpl.java | 188 ++++++++++++++++++ ...eService.java => BpmOAProcureService.java} | 16 +- ...Impl.java => BpmOAProcureServiceImpl.java} | 27 ++- .../BpmOAProcurePayResultListener.java | 33 +++ .../listener/BpmOAProcureResultListener.java | 32 +++ ...ocureMapper.xml => BpmOAProcureMapper.xml} | 2 +- .../mapper/oa/BpmOAProcurePayItemMapper.xml | 32 +++ .../mapper/oa/BpmOAProcurePayMapper.xml | 12 ++ .../module/system/api/user/AdminUserApi.java | 5 + .../system/api/user/AdminUserApiImpl.java | 7 + .../system/service/user/AdminUserService.java | 6 + .../service/user/AdminUserServiceImpl.java | 19 +- 36 files changed, 1297 insertions(+), 19 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayController.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayItemController.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureListEditReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemPageReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemRespVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemSaveReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayPageReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayRespVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePaySaveReqVO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayConvert.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayItemConvert.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayDO.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayItemDO.java rename yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/{BpmOaProcureMapper.java => BpmOAProcureMapper.java} (96%) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayItemMapper.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayMapper.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemService.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemServiceImpl.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayService.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java rename yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/{BpmOaProcureService.java => BpmOAProcureService.java} (77%) rename yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/{BpmOaProcureServiceImpl.java => BpmOAProcureServiceImpl.java} (79%) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcurePayResultListener.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcureResultListener.java rename yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/{BpmOaProcureMapper.xml => BpmOAProcureMapper.xml} (97%) create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcurePayItemMapper.xml create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcurePayMapper.xml diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcureController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcureController.java index 5fbc9614..d93433b8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcureController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcureController.java @@ -1,12 +1,12 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa; import cn.iocoder.yudao.framework.common.pojo.CommonResult; -import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureListEditReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureRespVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureSaveReqVO; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcureConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; -import cn.iocoder.yudao.module.bpm.service.oa.BpmOaProcureService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcureService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -26,7 +26,7 @@ import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; public class BpmOAProcureController { @Resource - private BpmOaProcureService bpmOaProcureService; + private BpmOAProcureService bpmOaProcureService; @PostMapping("/create") @Operation(summary = "创建OA 采购申请") @@ -61,4 +61,12 @@ public class BpmOAProcureController { return success(BpmOAProcureConvert.INSTANCE.convert(oaProcure)); } + + @PostMapping("/updatePayFlagByIds") + @Operation(summary = "根据ids修改支付状态") + public CommonResult updatePayFlagByIds(@RequestBody BpmOAProcureListEditReqVO vo) { + bpmOaProcureService.updatePayFlagByIds(vo); + return success("操作成功"); + } + } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayController.java new file mode 100644 index 00000000..223db67b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayController.java @@ -0,0 +1,90 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcurePageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePaySaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcurePayService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcureService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import java.util.List; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 采购支付") +@RestController +@RequestMapping("/bpm/OA-procure-pay") +@Validated +public class BpmOAProcurePayController { + + @Resource + private BpmOAProcurePayService oAProcurePayService; + @Resource + private BpmOAProcureService oaProcureService; + + @PostMapping("/create") + @Operation(summary = "创建采购支付") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay:create')") + public CommonResult createOAProcurePay(@Valid @RequestBody BpmOAProcurePaySaveReqVO createReqVO) { + return success(oAProcurePayService.createOAProcurePay(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新采购支付") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay:update')") + public CommonResult updateOAProcurePay(@Valid @RequestBody BpmOAProcurePaySaveReqVO updateReqVO) { + oAProcurePayService.updateOAProcurePay(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除采购支付") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay:delete')") + public CommonResult deleteOAProcurePay(@RequestParam("id") Long id) { + oAProcurePayService.deleteOAProcurePay(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得采购支付") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay:query')") + public CommonResult getOAProcurePay(@RequestParam("id") Long id) { + BpmOAProcurePayDO oAProcurePay = oAProcurePayService.getOAProcurePay(id); + return success(BeanUtils.toBean(oAProcurePay, BpmOAProcurePayRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得采购支付分页") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay:query')") + public CommonResult> getOAProcurePayPage(@Valid BpmOAProcurePayPageReqVO pageReqVO) { + PageResult pageResult = oAProcurePayService.getOAProcurePayPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BpmOAProcurePayRespVO.class)); + } + + + @GetMapping("/getAvailablePurchaseOrders") + @Operation(summary = "获取可用采购单列表") + public CommonResult> getAvailablePurchaseOrders() { + List list = oAProcurePayService.getAvailablePurchaseOrders(); + return success(BeanUtils.toBean(list, BpmOAProcureRespVO.class)); + } + + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayItemController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayItemController.java new file mode 100644 index 00000000..5e640b1b --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAProcurePayItemController.java @@ -0,0 +1,73 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemSaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcurePayItemService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; +import javax.validation.Valid; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 采购收款明细") +@RestController +@RequestMapping("/bpm/OA-procure-pay-item") +@Validated +public class BpmOAProcurePayItemController { + + @Resource + private BpmOAProcurePayItemService oAProcurePayItemService; + + @PostMapping("/create") + @Operation(summary = "创建采购收款明细") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay-item:create')") + public CommonResult createOAProcurePayItem(@Valid @RequestBody BpmOAProcurePayItemSaveReqVO createReqVO) { + return success(oAProcurePayItemService.createOAProcurePayItem(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新采购收款明细") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay-item:update')") + public CommonResult updateOAProcurePayItem(@Valid @RequestBody BpmOAProcurePayItemSaveReqVO updateReqVO) { + oAProcurePayItemService.updateOAProcurePayItem(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除采购收款明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay-item:delete')") + public CommonResult deleteOAProcurePayItem(@RequestParam("id") Long id) { + oAProcurePayItemService.deleteOAProcurePayItem(id); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得采购收款明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay-item:query')") + public CommonResult getOAProcurePayItem(@RequestParam("id") Long id) { + BpmOAProcurePayItemDO oAProcurePayItem = oAProcurePayItemService.getOAProcurePayItem(id); + return success(BeanUtils.toBean(oAProcurePayItem, BpmOAProcurePayItemRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得采购收款明细分页") + @PreAuthorize("@ss.hasPermission('bpm:OA-procure-pay-item:query')") + public CommonResult> getOAProcurePayItemPage(@Valid BpmOAProcurePayItemPageReqVO pageReqVO) { + PageResult pageResult = oAProcurePayItemService.getOAProcurePayItemPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BpmOAProcurePayItemRespVO.class)); + } + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureListEditReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureListEditReqVO.java new file mode 100644 index 00000000..0c55276d --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureListEditReqVO.java @@ -0,0 +1,19 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@Accessors(chain = true) +public class BpmOAProcureListEditReqVO { + + @Schema(description = "id数组") + private List procureIds; + + @Schema(description = "是否已支付 0否 1是 2进行中") + private Integer payFlag; + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcurePageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcurePageReqVO.java index c09cc2ab..ffd13b97 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcurePageReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcurePageReqVO.java @@ -11,10 +11,7 @@ import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; -@Schema(description = "管理后台 - OA 采购申请分页 Request VO") @Data -@EqualsAndHashCode(callSuper = true) -@ToString(callSuper = true) public class BpmOAProcurePageReqVO extends PageParam { @Schema(description = "申请人的用户编号", example = "26976") @@ -42,6 +39,9 @@ public class BpmOAProcurePageReqVO extends PageParam { @Schema(description = "采购总金额大写") private String totalMoneyChinese; + @Schema(description = "是否已支付 0否 1是 2进行中") + private Integer payFlag; + @Schema(description = "附件信息") private String fileItems; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureRespVO.java index ae66e86e..e849429b 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureRespVO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.reimbursement.ProcureDetail; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -10,6 +11,7 @@ import java.time.LocalDateTime; import java.util.List; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; @Schema(description = "管理后台 - OA 采购申请 Response VO") @Data @@ -29,6 +31,7 @@ public class BpmOAProcureRespVO { @Schema(description = "期望交付日期") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) private LocalDateTime expectedDeliveryDate; @Schema(description = "采购明细数据JSON", requiredMode = Schema.RequiredMode.REQUIRED) @@ -43,6 +46,9 @@ public class BpmOAProcureRespVO { @Schema(description = "采购总金额大写") private String totalMoneyChinese; + @Schema(description = "是否已支付 0否 1是 2进行中") + private Integer payFlag; + @Schema(description = "附件信息") private List fileItems; @@ -53,6 +59,8 @@ public class BpmOAProcureRespVO { private String processInstanceId; @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime createTime; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureSaveReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureSaveReqVO.java index 661b06a6..84157ba3 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureSaveReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procure/BpmOAProcureSaveReqVO.java @@ -51,6 +51,9 @@ public class BpmOAProcureSaveReqVO { @Schema(description = "流程实例的编号", example = "15852") private String processInstanceId; + @Schema(description = "是否已支付 0否 1是 2进行中") + private Integer payFlag; + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) private List fileItems; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemPageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemPageReqVO.java new file mode 100644 index 00000000..8a39b1ee --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemPageReqVO.java @@ -0,0 +1,37 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 采购收款明细分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAProcurePayItemPageReqVO extends PageParam { + + @Schema(description = "申请人的用户编号", example = "6961") + private Long userId; + + @Schema(description = "采购支付id", example = "29610") + private Long bpmOaProcurePayId; + + @Schema(description = "采购计划id", example = "14925") + private Long bpmOaProcureId; + + @Schema(description = "收款人") + private String payee; + + @Schema(description = "收款账号") + private String payeeNumber; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemRespVO.java new file mode 100644 index 00000000..5a4bb4ef --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemRespVO.java @@ -0,0 +1,59 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 采购收款明细 Response VO") +@Data +public class BpmOAProcurePayItemRespVO { + + @Schema(description = "采购表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24125") + private Long id; + + @Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6961") + private Long userId; + + @Schema(description = "采购支付id", example = "29610") + private Long bpmOaProcurePayId; + + @Schema(description = "采购计划id", example = "14925") + private Long bpmOaProcureId; + + @Schema(description = "收款人") + private String payee; + + @Schema(description = "收款账号") + private String payeeNumber; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + + + // --- + + @Schema(description = "申请事由", example = "不喜欢") + private String reason; + + @Schema(description = "采购类型 (根据字典的来)", example = "2") + private Integer procureType; + + @Schema(description = "期望交付日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime expectedDeliveryDate; + + @Schema(description = "备注") + private String remarks; + + @Schema(description = "采购总金额") + private String totalMoney; + + @Schema(description = "采购总金额大写") + private String totalMoneyChinese; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemSaveReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemSaveReqVO.java new file mode 100644 index 00000000..5f82b2f4 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayItemSaveReqVO.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; + +@Schema(description = "管理后台 - 采购收款明细新增/修改 Request VO") +@Data +public class BpmOAProcurePayItemSaveReqVO { + + @Schema(description = "采购表单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "24125") + private Long id; + + @Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "6961") +// @NotNull(message = "申请人的用户编号不能为空") + private Long userId; + + @Schema(description = "采购支付id", example = "29610") + private Long bpmOaProcurePayId; + + @Schema(description = "采购计划id", example = "14925") + private Long bpmOaProcureId; + + @Schema(description = "收款人") + private String payee; + + @Schema(description = "收款账号") + private String payeeNumber; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayPageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayPageReqVO.java new file mode 100644 index 00000000..16b9e1ab --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayPageReqVO.java @@ -0,0 +1,48 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import cn.iocoder.yudao.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 采购支付分页 Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmOAProcurePayPageReqVO extends PageParam { + + @Schema(description = "申请人的用户编号") + private Long userId; + + @Schema(description = "申请事由") + private String reason; + + @Schema(description = "支付日期") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] payTime; + + @Schema(description = "采购付款总金额") + private BigDecimal totalMoney; + + @Schema(description = "采购付款大写") + private String totalMoneyChinese; + + @Schema(description = "附件信息") + private String fileItems; + + @Schema(description = "报销结果") + private Integer result; + + @Schema(description = "流程实例的编号", example = "175") + private String processInstanceId; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayRespVO.java new file mode 100644 index 00000000..b3f51e9a --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePayRespVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 采购支付 Response VO") +@Data +public class BpmOAProcurePayRespVO { + + @Schema(description = "采购表单主键", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED) + private Long userId; + + @Schema(description = "申请事由") + private String reason; + + @Schema(description = "支付日期") + private LocalDateTime payTime; + + @Schema(description = "采购付款总金额", requiredMode = Schema.RequiredMode.REQUIRED) + private BigDecimal totalMoney; + + @Schema(description = "采购付款大写", requiredMode = Schema.RequiredMode.REQUIRED) + private String totalMoneyChinese; + + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) + private List fileItems; + + @Schema(description = "报销结果") + private Integer result; + + @Schema(description = "流程实例的编号", example = "175") + private String processInstanceId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + + @Schema(description = "子列表", requiredMode = Schema.RequiredMode.REQUIRED) + private List items; + + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePaySaveReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePaySaveReqVO.java new file mode 100644 index 00000000..e3bae9f4 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/procurepay/BpmOAProcurePaySaveReqVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay; + +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import javax.validation.constraints.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 采购支付新增/修改 Request VO") +@Data +public class BpmOAProcurePaySaveReqVO { + + @Schema(description = "采购表单主键", requiredMode = Schema.RequiredMode.REQUIRED) + private Long id; + + @Schema(description = "申请人的用户编号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "申请人的用户编号不能为空") + private Long userId; + + @Schema(description = "申请事由") + private String reason; + + @Schema(description = "支付日期") + private LocalDateTime payTime; + + @Schema(description = "采购付款总金额", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "采购付款总金额不能为空") + private BigDecimal totalMoney; + + @Schema(description = "采购付款大写", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购付款大写不能为空") + private String totalMoneyChinese; + + @Schema(description = "上传文件", requiredMode = Schema.RequiredMode.REQUIRED) + private List fileItems; + + @Schema(description = "报销结果") + private Integer result; + + @Schema(description = "流程实例的编号", example = "175") + private String processInstanceId; + + @Schema(description = "采购支付子列表") + List items; +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayConvert.java new file mode 100644 index 00000000..92c037d1 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayConvert.java @@ -0,0 +1,23 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePaySaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 报销支付申请 Convert + * + * @author yj + */ +@Mapper +public interface BpmOAProcurePayConvert { + + BpmOAProcurePayConvert INSTANCE = Mappers.getMapper(BpmOAProcurePayConvert.class); + + BpmOAProcurePayDO convert(BpmOAProcurePaySaveReqVO bean); + + BpmOAProcurePayRespVO convert(BpmOAProcurePayDO bean); + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayItemConvert.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayItemConvert.java new file mode 100644 index 00000000..84c5fe5f --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/convert/oa/BpmOAProcurePayItemConvert.java @@ -0,0 +1,27 @@ +package cn.iocoder.yudao.module.bpm.convert.oa; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemSaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; + +/** + * 报销支付申请 Convert + * + * @author yj + */ +@Mapper +public interface BpmOAProcurePayItemConvert { + + BpmOAProcurePayItemConvert INSTANCE = Mappers.getMapper(BpmOAProcurePayItemConvert.class); + + BpmOAProcurePayItemDO convert(BpmOAProcurePayItemSaveReqVO bean); + + BpmOAProcurePayItemRespVO convert(BpmOAProcurePayItemDO bean); + + List convert(List items); + +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcureDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcureDO.java index d777e357..4b4dd481 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcureDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcureDO.java @@ -8,11 +8,17 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; +import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; import java.util.List; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; +import static cn.iocoder.yudao.framework.common.util.date.DateUtils.TIME_ZONE_DEFAULT; + /** * OA 采购申请 DO * @@ -27,6 +33,13 @@ import java.util.List; @NoArgsConstructor @AllArgsConstructor public class BpmOAProcureDO extends BaseDO { + /** + * 是否已支付 0否 1是 2进行中 + */ + public static final Integer FLAG_FALSE = 0; + public static final Integer FLAG_TRUE = 1; + public static final Integer IN_PROGRESS = 2; + /** * 报销表单主键 @@ -48,6 +61,8 @@ public class BpmOAProcureDO extends BaseDO { /** * 期望交付日期 */ + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + @JsonFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND, timezone = TIME_ZONE_DEFAULT) private LocalDateTime expectedDeliveryDate; /** * 采购明细数据JSON @@ -66,6 +81,12 @@ public class BpmOAProcureDO extends BaseDO { * 采购总金额大写 */ private String totalMoneyChinese; + + /** + * 是否已支付 0否 1是 2进行中 + */ + private Integer payFlag; + /** * 附件信息 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayDO.java new file mode 100644 index 00000000..f25e0e87 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayDO.java @@ -0,0 +1,76 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +/** + * 采购支付 DO + * + * @author 艾楷 + */ +@TableName(value = "bpm_oa_procure_pay", autoResultMap = true) +@KeySequence("bpm_oa_procure_pay_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOAProcurePayDO extends BaseDO { + + /** + * 采购表单主键 + */ + @TableId + private Long id; + /** + * 申请人的用户编号 + */ + private Long userId; + /** + * 申请事由 + */ + private String reason; + /** + * 支付日期 + */ + private LocalDateTime payTime; + /** + * 采购付款总金额 + */ + private BigDecimal totalMoney; + /** + * 采购付款大写 + */ + private String totalMoneyChinese; + /** + * 附件信息 + */ + @TableField(typeHandler = JacksonTypeHandler.class) + private List fileItems; + /** + * 报销结果 + */ + private Integer result; + /** + * 流程实例的编号 + */ + private String processInstanceId; + + @TableField(exist = false) + @Schema(description = "子列表", requiredMode = Schema.RequiredMode.REQUIRED) + private List items; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayItemDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayItemDO.java new file mode 100644 index 00000000..bc23af3c --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAProcurePayItemDO.java @@ -0,0 +1,51 @@ +package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; + +import lombok.*; +import java.util.*; +import java.time.LocalDateTime; +import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; + +/** + * 采购收款明细 DO + * + * @author 艾楷 + */ +@TableName(value = "bpm_oa_procure_pay_item", autoResultMap = true) +@KeySequence("bpm_oa_procure_pay_item_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BpmOAProcurePayItemDO extends BaseDO { + + /** + * 采购表单主键 + */ + @TableId + private Long id; + /** + * 申请人的用户编号 + */ + private Long userId; + /** + * 采购支付id + */ + private Long bpmOaProcurePayId; + /** + * 采购计划id + */ + private Long bpmOaProcureId; + /** + * 收款人 + */ + private String payee; + /** + * 收款账号 + */ + private String payeeNumber; + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOaProcureMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcureMapper.java similarity index 96% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOaProcureMapper.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcureMapper.java index 477c2282..6ceb7eed 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOaProcureMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcureMapper.java @@ -13,7 +13,7 @@ import org.apache.ibatis.annotations.Mapper; * @author 姚君 */ @Mapper -public interface BpmOaProcureMapper extends BaseMapperX { +public interface BpmOAProcureMapper extends BaseMapperX { default PageResult selectPage(BpmOAProcurePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayItemMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayItemMapper.java new file mode 100644 index 00000000..8ca8d148 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayItemMapper.java @@ -0,0 +1,40 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemRespVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * 采购收款明细 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface BpmOAProcurePayItemMapper extends BaseMapperX { + + default PageResult selectPage(BpmOAProcurePayItemPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BpmOAProcurePayItemDO::getUserId, reqVO.getUserId()) + .eqIfPresent(BpmOAProcurePayItemDO::getBpmOaProcurePayId, reqVO.getBpmOaProcurePayId()) + .eqIfPresent(BpmOAProcurePayItemDO::getBpmOaProcureId, reqVO.getBpmOaProcureId()) + .eqIfPresent(BpmOAProcurePayItemDO::getPayee, reqVO.getPayee()) + .eqIfPresent(BpmOAProcurePayItemDO::getPayeeNumber, reqVO.getPayeeNumber()) + .betweenIfPresent(BpmOAProcurePayItemDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(BpmOAProcurePayItemDO::getId)); + } + + /** + * 通过采购支付id获取想去和采购申请记录 + * + * @param procurePayId + * @return + */ + List getByProcurePayId(@Param("procurePayId") Long procurePayId); +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayMapper.java new file mode 100644 index 00000000..387ce263 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAProcurePayMapper.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.dal.mysql.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayPageReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 采购支付 Mapper + * + * @author 艾楷 + */ +@Mapper +public interface BpmOAProcurePayMapper extends BaseMapperX { + + default PageResult selectPage(BpmOAProcurePayPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BpmOAProcurePayDO::getUserId, reqVO.getUserId()) + .eqIfPresent(BpmOAProcurePayDO::getReason, reqVO.getReason()) + .betweenIfPresent(BpmOAProcurePayDO::getPayTime, reqVO.getPayTime()) + .eqIfPresent(BpmOAProcurePayDO::getTotalMoney, reqVO.getTotalMoney()) + .eqIfPresent(BpmOAProcurePayDO::getTotalMoneyChinese, reqVO.getTotalMoneyChinese()) + .eqIfPresent(BpmOAProcurePayDO::getFileItems, reqVO.getFileItems()) + .eqIfPresent(BpmOAProcurePayDO::getResult, reqVO.getResult()) + .eqIfPresent(BpmOAProcurePayDO::getProcessInstanceId, reqVO.getProcessInstanceId()) + .betweenIfPresent(BpmOAProcurePayDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(BpmOAProcurePayDO::getId)); + } + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemService.java new file mode 100644 index 00000000..2146b102 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemService.java @@ -0,0 +1,55 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemSaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; + +import javax.validation.Valid; + +/** + * 采购收款明细 Service 接口 + * + * @author 艾楷 + */ +public interface BpmOAProcurePayItemService { + + /** + * 创建采购收款明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOAProcurePayItem(@Valid BpmOAProcurePayItemSaveReqVO createReqVO); + + /** + * 更新采购收款明细 + * + * @param updateReqVO 更新信息 + */ + void updateOAProcurePayItem(@Valid BpmOAProcurePayItemSaveReqVO updateReqVO); + + /** + * 删除采购收款明细 + * + * @param id 编号 + */ + void deleteOAProcurePayItem(Long id); + + /** + * 获得采购收款明细 + * + * @param id 编号 + * @return 采购收款明细 + */ + BpmOAProcurePayItemDO getOAProcurePayItem(Long id); + + /** + * 获得采购收款明细分页 + * + * @param pageReqVO 分页查询 + * @return 采购收款明细分页 + */ + PageResult getOAProcurePayItemPage(BpmOAProcurePayItemPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemServiceImpl.java new file mode 100644 index 00000000..b41b51bb --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayItemServiceImpl.java @@ -0,0 +1,58 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemSaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcurePayItemMapper; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; + +/** + * 采购收款明细 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class BpmOAProcurePayItemServiceImpl implements BpmOAProcurePayItemService { + + @Resource + private BpmOAProcurePayItemMapper oAProcurePayItemMapper; + + @Override + public Long createOAProcurePayItem(BpmOAProcurePayItemSaveReqVO createReqVO) { + // 插入 + BpmOAProcurePayItemDO oAProcurePayItem = BeanUtils.toBean(createReqVO, BpmOAProcurePayItemDO.class); + oAProcurePayItemMapper.insert(oAProcurePayItem); + // 返回 + return oAProcurePayItem.getId(); + } + + @Override + public void updateOAProcurePayItem(BpmOAProcurePayItemSaveReqVO updateReqVO) { + // 更新 + BpmOAProcurePayItemDO updateObj = BeanUtils.toBean(updateReqVO, BpmOAProcurePayItemDO.class); + oAProcurePayItemMapper.updateById(updateObj); + } + + @Override + public void deleteOAProcurePayItem(Long id) { + // 删除 + oAProcurePayItemMapper.deleteById(id); + } + + @Override + public BpmOAProcurePayItemDO getOAProcurePayItem(Long id) { + return oAProcurePayItemMapper.selectById(id); + } + + @Override + public PageResult getOAProcurePayItemPage(BpmOAProcurePayItemPageReqVO pageReqVO) { + return oAProcurePayItemMapper.selectPage(pageReqVO); + } + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayService.java new file mode 100644 index 00000000..342354a1 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayService.java @@ -0,0 +1,65 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePaySaveReqVO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO; + +import javax.validation.Valid; +import java.util.List; + +/** + * 采购支付 Service 接口 + * + * @author 艾楷 + */ +public interface BpmOAProcurePayService { + + /** + * 创建采购支付 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createOAProcurePay(@Valid BpmOAProcurePaySaveReqVO createReqVO); + + /** + * 更新采购支付 + * + * @param updateReqVO 更新信息 + */ + void updateOAProcurePay(@Valid BpmOAProcurePaySaveReqVO updateReqVO); + + /** + * 删除采购支付 + * + * @param id 编号 + */ + void deleteOAProcurePay(Long id); + + /** + * 获得采购支付 + * + * @param id 编号 + * @return 采购支付 + */ + BpmOAProcurePayDO getOAProcurePay(Long id); + + /** + * 获得采购支付分页 + * + * @param pageReqVO 分页查询 + * @return 采购支付分页 + */ + PageResult getOAProcurePayPage(BpmOAProcurePayPageReqVO pageReqVO); + + /** + * 获取可用采购单列表 + * + * @return + */ + List getAvailablePurchaseOrders(); + + void updateEvectionResult(String processInstanceExtId, Long id, Integer result); +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java new file mode 100644 index 00000000..e88c07c4 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcurePayServiceImpl.java @@ -0,0 +1,188 @@ +package cn.iocoder.yudao.module.bpm.service.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureListEditReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayItemRespVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePayPageReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procurepay.BpmOAProcurePaySaveReqVO; +import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcurePayConvert; +import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcurePayItemConvert; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcurePayItemDO; +import cn.iocoder.yudao.module.bpm.dal.dataobject.task.BpmProcessInstanceExtDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcureMapper; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcurePayItemMapper; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcurePayMapper; +import cn.iocoder.yudao.module.bpm.dal.mysql.task.BpmProcessInstanceExtMapper; +import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; +import cn.iocoder.yudao.module.bpm.service.definition.BpmModelService; +import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import cn.iocoder.yudao.module.system.api.user.AdminUserApi; +import org.flowable.engine.runtime.ProcessInstance; +import org.springframework.context.annotation.Lazy; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * 采购支付 Service 实现类 + * + * @author 艾楷 + */ +@Service +@Validated +public class BpmOAProcurePayServiceImpl extends BpmOABaseService implements BpmOAProcurePayService { + + @Resource + private BpmOAProcurePayMapper oAProcurePayMapper; + @Resource + private BpmOAProcurePayItemMapper oaProcurePayItemMapper; + + @Resource + private BpmOAProcureMapper oaProcureMapper; + @Resource + private BpmOAProcureService oaProcureService; + @Resource + private AdminUserApi adminUserApi; + @Resource + private BpmProcessInstanceApi processInstanceApi; + @Resource + private BpmModelService modelService; + @Resource + private BpmProcessInstanceExtMapper processInstanceExtMapper; + @Resource + @Lazy // 解决循环依赖 + private BpmProcessInstanceService bpmProcessInstanceService; + + /** + * OA 请假对应的流程定义 KEY + */ + public static final String PROCESS_KEY = "oa_procure_pay"; + + @Override + public Long createOAProcurePay(BpmOAProcurePaySaveReqVO createReqVO) { + Long userId = WebFrameworkUtils.getLoginUserId(); + createReqVO.setUserId(userId); + // 采购支付对象转换 + BpmOAProcurePayDO oAProcurePay = BpmOAProcurePayConvert.INSTANCE.convert(createReqVO); + oAProcurePayMapper.insert(oAProcurePay); + // 子列表转换 + List items = BpmOAProcurePayItemConvert.INSTANCE.convert(createReqVO.getItems()); + for (BpmOAProcurePayItemDO item : items) { + item.setBpmOaProcurePayId(oAProcurePay.getId()); + item.setUserId(userId); + } + oaProcurePayItemMapper.insertBatch(items); + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(oAProcurePay.getId()))).getCheckedData(); + + // 将工作流的编号,更新到 OA 采购单中 + oAProcurePayMapper.updateById(new BpmOAProcurePayDO().setId(oAProcurePay.getId()).setProcessInstanceId(processInstanceId)); + + List fileItems = createReqVO.getFileItems(); + //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id + if (fileItems != null && !fileItems.isEmpty()) { + uploadBpmFileProcessInstanceId(processInstanceId, fileItems); + } + // 返回 + return oAProcurePay.getId(); + } + + @Override + public void updateOAProcurePay(BpmOAProcurePaySaveReqVO updateReqVO) { + // 更新 + BpmOAProcurePayDO updateObj = BeanUtils.toBean(updateReqVO, BpmOAProcurePayDO.class); + oAProcurePayMapper.updateById(updateObj); + } + + @Override + public void deleteOAProcurePay(Long id) { + // 删除 + oAProcurePayMapper.deleteById(id); + } + + @Override + public BpmOAProcurePayDO getOAProcurePay(Long id) { + BpmOAProcurePayDO bpmOAProcurePayDO = oAProcurePayMapper.selectById(id); + List items = oaProcurePayItemMapper.getByProcurePayId(id); + bpmOAProcurePayDO.setItems(items); + return bpmOAProcurePayDO; + } + + @Override + public PageResult getOAProcurePayPage(BpmOAProcurePayPageReqVO pageReqVO) { + return oAProcurePayMapper.selectPage(pageReqVO); + } + + @Override + public List getAvailablePurchaseOrders() { + //获取当前登录用户id + Long userId = WebFrameworkUtils.getLoginUserId(); + //查询当前登录用户所在部门所有用户id + CommonResult> userIdsResult = adminUserApi.getUserIdsByUserIdGroupByDept(userId); + List userIds = userIdsResult.getData(); + //根据用户ids 获取所有可用采购单 + return oaProcureMapper.selectList(new LambdaQueryWrapperX() + .in(BpmOAProcureDO::getUserId, userIds) + .eq(BpmOAProcureDO::getPayFlag, BpmOAProcureDO.FLAG_FALSE) + ); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateEvectionResult(String processInstanceExtId, Long id, Integer result) { + //获取采购申请ids + List items = oaProcurePayItemMapper.getByProcurePayId(id); + // -- 这边要处理下 + // -- 审核通过 (最后节点) + if (BpmProcessInstanceResultEnum.APPROVE.getResult().equals(result)) { + BpmProcessInstanceExtDO extDO = processInstanceExtMapper.selectByProcessInstanceId(processInstanceExtId); + ProcessInstance instance = bpmProcessInstanceService.getProcessInstance(extDO.getProcessInstanceId()); + if (instance.isEnded() && !items.isEmpty()) { + List ids = items.stream().map(BpmOAProcurePayItemRespVO::getBpmOaProcureId).collect(Collectors.toList()); + //所有关联的采购申请改为 未支付状态 + oaProcureService.updatePayFlagByIds( + new BpmOAProcureListEditReqVO() + .setPayFlag(BpmOAProcureDO.FLAG_TRUE) + .setProcureIds(ids) + ); + } + } + // -- 自己取消 + // -- 审核拒绝 + //所有关联的采购申请改为 未支付状态 + if (BpmProcessInstanceResultEnum.REJECT.getResult().equals(result) + || BpmProcessInstanceResultEnum.CANCEL.getResult().equals(result) + || BpmProcessInstanceResultEnum.BACK.getResult().equals(result)) { + if (!items.isEmpty()) { + List ids = items.stream().map(BpmOAProcurePayItemRespVO::getBpmOaProcureId).collect(Collectors.toList()); + //所有关联的采购申请改为 未支付状态 + oaProcureService.updatePayFlagByIds( + new BpmOAProcureListEditReqVO() + .setPayFlag(BpmOAProcureDO.FLAG_FALSE) + .setProcureIds(ids) + ); + } + } + oAProcurePayMapper.updateById(new BpmOAProcurePayDO().setId(id).setResult(result)); + } + +} \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureService.java similarity index 77% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureService.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureService.java index 7df9a574..a7dde6eb 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureListEditReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcurePageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureSaveReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; @@ -12,7 +13,7 @@ import javax.validation.Valid; * * @author 姚君 */ -public interface BpmOaProcureService { +public interface BpmOAProcureService { /** * 创建OA 采购申请 @@ -52,4 +53,17 @@ public interface BpmOaProcureService { */ PageResult getOaProcurePage(BpmOAProcurePageReqVO pageReqVO); + /** + * 根据ids修改状态 + * + * @param vo + */ + void updatePayFlagByIds(BpmOAProcureListEditReqVO vo); + + /** + * + * @param id + * @param result + */ + void updateEvectionResult(Long id, Integer result); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java similarity index 79% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureServiceImpl.java rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java index 5ad5db4b..78b52a52 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOaProcureServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAProcureServiceImpl.java @@ -3,21 +3,23 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.iocoder.yudao.framework.common.exception.enums.GlobalErrorCodeConstants; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils; import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureListEditReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcurePageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.procure.BpmOAProcureSaveReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; import cn.iocoder.yudao.module.bpm.convert.oa.BpmOAProcureConvert; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAProcureDO; -import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOaProcureMapper; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAReimbursementDO; +import cn.iocoder.yudao.module.bpm.dal.mysql.oa.BpmOAProcureMapper; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; - import java.util.HashMap; import java.util.List; import java.util.Map; @@ -31,16 +33,17 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU */ @Service @Validated -public class BpmOaProcureServiceImpl extends BpmOABaseService implements BpmOaProcureService { +public class BpmOAProcureServiceImpl extends BpmOABaseService implements BpmOAProcureService { @Resource - private BpmOaProcureMapper bpmOaProcureMapper; + private BpmOAProcureMapper bpmOaProcureMapper; @Resource private BpmProcessInstanceApi processInstanceApi; /** * OA 请假对应的流程定义 KEY */ public static final String PROCESS_KEY = "oa_procure"; + @Override public Long createOaProcure(BpmOAProcureSaveReqVO createReqVO) { Long userId = WebFrameworkUtils.getLoginUserId(); @@ -58,10 +61,10 @@ public class BpmOaProcureServiceImpl extends BpmOABaseService implements BpmOaPr // 将工作流的编号,更新到 OA 采购单中 bpmOaProcureMapper.updateById(new BpmOAProcureDO().setId(oaProcure.getId()).setProcessInstanceId(processInstanceId)); - List fileItems = createReqVO.getFileItems() ; + List fileItems = createReqVO.getFileItems(); //这里的逻辑,如果fileItems不为空,且有数据,那么说明是上传了附件的,则需要更工作流文件表对应的实例Id if (fileItems != null && !fileItems.isEmpty()) { - uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; + uploadBpmFileProcessInstanceId(processInstanceId, fileItems); } return oaProcure.getId(); } @@ -99,4 +102,16 @@ public class BpmOaProcureServiceImpl extends BpmOABaseService implements BpmOaPr return bpmOaProcureMapper.selectPage(pageReqVO); } + @Override + public void updatePayFlagByIds(BpmOAProcureListEditReqVO vo) { + bpmOaProcureMapper.update(new BpmOAProcureDO().setPayFlag(vo.getPayFlag()), + new LambdaQueryWrapperX() + .inIfPresent(BpmOAProcureDO::getId, vo.getProcureIds())); + } + + @Override + public void updateEvectionResult(Long id, Integer result) { + bpmOaProcureMapper.updateById(new BpmOAProcureDO().setId(id).setResult(result)); + } + } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcurePayResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcurePayResultListener.java new file mode 100644 index 00000000..a810557e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcurePayResultListener.java @@ -0,0 +1,33 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcurePayService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcurePayServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 出差单的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOAProcurePayResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAProcurePayService evectionService; + + @Override + protected String getProcessDefinitionKey() { + return BpmOAProcurePayServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + + evectionService.updateEvectionResult(event.getId(), Long.parseLong(event.getBusinessKey()), + event.getResult()); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcureResultListener.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcureResultListener.java new file mode 100644 index 00000000..9553997f --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/listener/BpmOAProcureResultListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.bpm.service.oa.listener; + +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEvent; +import cn.iocoder.yudao.module.bpm.framework.bpm.core.event.BpmProcessInstanceResultEventListener; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAEvectionServiceImpl; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcureService; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAProcureServiceImpl; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 出差单的结果的监听器实现类 + * + * @author 符溶馨 + */ +@Component +public class BpmOAProcureResultListener extends BpmProcessInstanceResultEventListener { + + @Resource + private BpmOAProcureService evectionService; + + @Override + protected String getProcessDefinitionKey() { + return BpmOAProcureServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceResultEvent event) { + evectionService.updateEvectionResult(Long.parseLong(event.getBusinessKey()), event.getResult()); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOaProcureMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcureMapper.xml similarity index 97% rename from yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOaProcureMapper.xml rename to yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcureMapper.xml index 2bdaff7c..b68bf6e0 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOaProcureMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcureMapper.xml @@ -1,6 +1,6 @@ - + + + + \ No newline at end of file diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcurePayMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcurePayMapper.xml new file mode 100644 index 00000000..d7e576de --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAProcurePayMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java index 96e3f110..c0e7bfea 100644 --- a/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java +++ b/yudao-module-system/yudao-module-system-api/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApi.java @@ -58,4 +58,9 @@ public interface AdminUserApi { @Parameter(name = "ids", description = "用户编号数组", example = "3,5", required = true) CommonResult validateUserList(@RequestParam("ids") Set ids); + + @GetMapping(PREFIX + "/getUserIdsByUserIdGroupByDept") + @Operation(summary = "获取同部门所有用户id") + @Parameter(name = "userId", description = "用户id", example = "1024", required = true) + CommonResult> getUserIdsByUserIdGroupByDept(@RequestParam("userId") Long userId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java index 8a322589..bee060aa 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/api/user/AdminUserApiImpl.java @@ -55,4 +55,11 @@ public class AdminUserApiImpl implements AdminUserApi { return success(true); } + @Override + public CommonResult> getUserIdsByUserIdGroupByDept(Long userId) { + AdminUserDO user = userService.getUser(userId); + List userIds = userService.getUserIdsByDeptId(user.getDeptId()); + return success(userIds); + } + } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java index 3939d761..61d1683e 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserService.java @@ -221,4 +221,10 @@ public interface AdminUserService { */ boolean isPasswordMatch(String rawPassword, String encodedPassword); + /** + * 根据部门id获取用户ids + * @param deptId + * @return + */ + List getUserIdsByDeptId(Long deptId); } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java index cde360d0..0fe0b6d4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/user/AdminUserServiceImpl.java @@ -38,6 +38,7 @@ import javax.annotation.Resource; import java.io.InputStream; import java.time.LocalDateTime; import java.util.*; +import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; @@ -46,8 +47,6 @@ import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*; /** * 后台用户 Service 实现类 - * - */ @Service("adminUserService") @Slf4j @@ -79,14 +78,14 @@ public class AdminUserServiceImpl implements AdminUserService { @Override @Transactional(rollbackFor = Exception.class) - public void updateUserOpenId(Long id,String openId) { + public void updateUserOpenId(Long id, String openId) { userMapper.updateById(new AdminUserDO().setId(id).setOpenId(openId)); } @Override public AdminUserDO getUserByOpenId(String openId) { if (openId == null) { - return null ; + return null; } return userMapper.sgetByOpenId(openId); } @@ -296,6 +295,7 @@ public class AdminUserServiceImpl implements AdminUserService { /** * 获得部门条件:查询指定部门的子部门编号们,包括自身 + * * @param deptId 部门编号 * @return 部门编号集合 */ @@ -394,6 +394,7 @@ public class AdminUserServiceImpl implements AdminUserService { /** * 校验旧密码 + * * @param id 用户 id * @param oldPassword 旧密码 */ @@ -456,6 +457,16 @@ public class AdminUserServiceImpl implements AdminUserService { return passwordEncoder.matches(rawPassword, encodedPassword); } + @Override + public List getUserIdsByDeptId(Long deptId) { + List userIds = new ArrayList<>(); + List adminUserDOS = userMapper.selectListByDeptIds(Arrays.asList(deptId)); + if (!adminUserDOS.isEmpty()) { + userIds = adminUserDOS.stream().map(AdminUserDO::getId).collect(Collectors.toList()); + } + return userIds; + } + /** * 对密码进行加密 *