diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAExpensesController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAExpensesController.java index 75ad37e7..8e63d99f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAExpensesController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOAExpensesController.java @@ -94,4 +94,13 @@ public class BpmOAExpensesController { expensesService.refused(id, processInstanceId); return success(true); } + + @GetMapping("/oneClickPayment") + @Operation(summary = "一键支付") + @Parameter(name = "month", description = "月份", required = true, example = "2025-04") + public CommonResult oneClickPayment(String month) { + + expensesService.oneClickPayment(month); + return success(true); + } } \ 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/BpmOASalaryController.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java index 7bbb3207..55f2b703 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/BpmOASalaryController.java @@ -42,10 +42,10 @@ public class BpmOASalaryController { @Operation(summary = "创建请求申请") public CommonResult createSalary(@Valid @RequestBody BpmOASalaryCreateReqVO createReqVO) { - if (createReqVO.getFactoryId() != null) { - DeptRespDTO dto = deptApi.getDeptByFactoryId(createReqVO.getFactoryId()).getCheckedData(); - createReqVO.setCompanyDeptId(dto.getId()); - } +// if (createReqVO.getFactoryId() != null) { +// DeptRespDTO dto = deptApi.getDeptByFactoryId(createReqVO.getFactoryId()).getCheckedData(); +// createReqVO.setCompanyDeptId(dto.getId()); +// } return success(salaryService.createSalary(getLoginUserId(), createReqVO)); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesPageReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesPageReqVO.java index dcf133ec..2cd32c4a 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesPageReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesPageReqVO.java @@ -30,4 +30,7 @@ public class BpmOAExpensesPageReqVO extends PageParam { @Schema(description = "审批通过时间") private String[] endTime; + + @Schema(description = "收款人姓名") + private String payeeName; } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentCreateReqVO.java index 9a417e32..d2eefedb 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentCreateReqVO.java @@ -47,7 +47,7 @@ public class BpmOAPaymentCreateReqVO { private BigDecimal totalAmount; @Schema(description = "付款比例 | 针对分期付款情况", requiredMode = Schema.RequiredMode.NOT_REQUIRED) - private Integer paymentRatio; + private BigDecimal paymentRatio; @Schema(description = "付款金额", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "付款金额不能为空") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentRespVO.java index 8e59d39d..69dd10a1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/payment/BpmOAPaymentRespVO.java @@ -68,7 +68,7 @@ public class BpmOAPaymentRespVO extends BpmOABaseRespVO { private BigDecimal totalAmount; @Schema(description = "付款比例 | 针对分期付款情况") - private Integer paymentRatio; + private BigDecimal paymentRatio; @Schema(description = "付款金额") private BigDecimal amount; @@ -92,7 +92,10 @@ public class BpmOAPaymentRespVO extends BpmOABaseRespVO { private Long parentId; @Schema(description = "累计付款比列") - private Integer ratio; + private BigDecimal ratio; + + @Schema(description = "累计付款金额") + private BigDecimal paymentAmount; @Schema(description = "上传文件") 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/salary/BpmOASalaryCreateReqVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryCreateReqVO.java index 1f187486..cf486d5f 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryCreateReqVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryCreateReqVO.java @@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; +import java.util.Set; /** * 薪资付款申请 创建 Request VO @@ -30,11 +31,15 @@ public class BpmOASalaryCreateReqVO { @DateTimeFormat(pattern = "yyyy-MM") private String salaryDate; + @Schema(description = "公司类型 | 1公司 2工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "公司类型不能为空") + private Integer deptType; + @Schema(description = "付款公司") private Long companyDeptId; - @Schema(description = "付款工厂编号") - private Long factoryId; + @Schema(description = "付款工厂的部门编号集合") + private Set factoryDeptId; @Schema(description = "付款总额", requiredMode = Schema.RequiredMode.REQUIRED) @NotNull(message = "付款总额不能为空") diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java index a0363670..fb8a5bfb 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/salary/BpmOASalaryRespVO.java @@ -10,6 +10,7 @@ import org.springframework.format.annotation.DateTimeFormat; import java.math.BigDecimal; import java.util.List; +import java.util.Set; /** * @author 符溶馨 @@ -27,12 +28,21 @@ public class BpmOASalaryRespVO extends BpmOABaseRespVO { @DateTimeFormat(pattern = "yyyy-MM") private String salaryDate; + @Schema(description = "公司类型 | 1公司 2工厂") + private Integer deptType; + @Schema(description = "付款公司") private Long companyDeptId; @Schema(description = "付款公司名称") private String companyName; + @Schema(description = "付款工厂的部门编号集合") + private Set factoryDeptId; + + @Schema(description = "付款工厂名称") + private String factoryName; + @Schema(description = "付款工厂") private Long FactoryId; diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPaymentDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPaymentDO.java index 3459fc56..1bf31fc2 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPaymentDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAPaymentDO.java @@ -78,9 +78,9 @@ public class BpmOAPaymentDO extends BaseDO { private Long bankId; /** - * 付款方式 | 1预付款 2分期付款 3全额付款 + * 付款方式 | 1分批付款 3全额付款 4指定金额付款 */ - private Integer paymentMethod; + private BigDecimal paymentMethod; /** * 付款总额 | 针对预付款、分期付款情况 diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java index 311bea39..169d164e 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOAReimbursementDO.java @@ -64,11 +64,11 @@ public class BpmOAReimbursementDO extends BaseDO { */ private String bankName; - /** - * 报销明细数据JSON - */ - @TableField(typeHandler = JacksonTypeHandler.class) - private List reimbursements; +// /** +// * 报销明细数据JSON +// */ +// @TableField(typeHandler = JacksonTypeHandler.class) +// private List reimbursements; /** * 总报销金额 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASalaryDO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASalaryDO.java index 66de08e5..2373e054 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASalaryDO.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/oa/BpmOASalaryDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.bpm.dal.dataobject.oa; import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; +import cn.iocoder.yudao.framework.mybatis.core.type.JsonLongSetTypeHandler; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.salary.SalarySubjectItemsVO; import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import com.baomidou.mybatisplus.annotation.TableField; @@ -12,6 +13,7 @@ import lombok.*; import java.math.BigDecimal; import java.util.List; +import java.util.Set; /** * OA 薪资付款 DO @@ -50,11 +52,22 @@ public class BpmOASalaryDO extends BaseDO { */ private String salaryDate; + /** + * 公司类型 | 1公司 2工厂 + */ + private Integer deptType; + /** * 付款公司 */ private Long companyDeptId; + /** + * 付款工厂的部门编号集合 + */ + @TableField(typeHandler = JsonLongSetTypeHandler.class) + private Set factoryDeptId; + /** * 付款总额 */ diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAExpensesMapper.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAExpensesMapper.java index c134da90..783b4715 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAExpensesMapper.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/mysql/oa/BpmOAExpensesMapper.java @@ -16,4 +16,6 @@ public interface BpmOAExpensesMapper extends BaseMapperX { @Param("pageReqVO") BpmOAExpensesPageReqVO pageReqVO); BpmOAExpensesTotal selectTotal(@Param("pageReqVO") BpmOAExpensesPageReqVO pageReqVO); + + void oneClickPayment(@Param("month") String month); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesService.java index 5dd68001..fec338e8 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesService.java @@ -91,4 +91,10 @@ public interface BpmOAExpensesService { * @param processInstanceId 流程实例编号 */ void refused(Long id, String processInstanceId); + + /** + * 一键支付 + * @param month 月份 + */ + void oneClickPayment(String month); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesServiceImpl.java index 8d818e93..2af77d48 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAExpensesServiceImpl.java @@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.system.api.loan.dto.LoanDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; import cn.iocoder.yudao.module.system.api.user.dto.AdminUserRespDTO; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import org.flowable.engine.runtime.ProcessInstance; import org.springframework.context.annotation.Lazy; @@ -265,7 +266,10 @@ public class BpmOAExpensesServiceImpl extends BpmOABaseService implements BpmOAE CommonResult user = userApi.getUser(expenses.getUserId()); // 获取收款人信息 - BankRespDTO bankRespDTO = bankApi.getBank(expenses.getBankId()).getCheckedData(); + BankRespDTO bankRespDTO = null; + if (expenses.getBankId() != null) { + bankRespDTO = bankApi.getBank(expenses.getBankId()).getCheckedData(); + } // 获取付款公司信息 FactoryInfoDTO dto = new FactoryInfoDTO(); @@ -285,7 +289,7 @@ public class BpmOAExpensesServiceImpl extends BpmOABaseService implements BpmOAE .setProcessInstanceName(processInstance.getName()) .setBeginTime(processInstance.getCreateTime()) .setEndTime(processInstance.getEndTime()) - .setRecipientName(bankRespDTO.getNickname()) + .setRecipientName(bankRespDTO != null ? bankRespDTO.getNickname() : "") .setCompanyFactoryId(dto.getId()) ); } @@ -311,4 +315,10 @@ public class BpmOAExpensesServiceImpl extends BpmOABaseService implements BpmOAE // 同步更新流程实例表 processInstanceService.updateProcessInstanceResult(processInstanceId, BpmProcessInstanceResultEnum.BACK.getResult()); } + + @Override + public void oneClickPayment(String month) { + + expensesMapper.oneClickPayment(month); + } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java index dc01c89c..a8364013 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOASalaryServiceImpl.java @@ -70,12 +70,14 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal .setResult(BpmProcessInstanceResultEnum.PROCESS.getResult()); salaryMapper.insert(salary) ; - // 获取申请公司或工厂信息 - DeptRespDTO dto = deptApi.getDept(salary.getCompanyDeptId()).getCheckedData(); - // 配置申请公司或工厂部门flag Map processInstanceVariables = new HashMap<>(); - processInstanceVariables.put("company_dept_flag", dto.getFlag()); + if (createReqVO.getDeptType() == 1) { + // 获取申请公司信息 + DeptRespDTO dto = deptApi.getDept(salary.getCompanyDeptId()).getCheckedData(); + processInstanceVariables.put("company_dept_flag", dto.getFlag()); + } + processInstanceVariables.put("dept_type", createReqVO.getDeptType()); // 发起 BPM 流程 String processInstanceId = processInstanceService.createProcessInstance(userId, new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) @@ -112,9 +114,6 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal // -- 插入到财务支付表中 CommonResult user = userApi.getUser(salaryDO.getUserId()); - // 从缓存中部门所属公司信息 - DeptRespDTO deptRespDTO = deptApi.getDept(salaryDO.getCompanyDeptId()).getCheckedData(); - financialPaymentService.save(new FinancialPaymentDO() .setUserId(salaryDO.getUserId()) .setDeptId(user.getData() == null ? null : user.getData().getDeptId()) @@ -127,7 +126,7 @@ public class BpmOASalaryServiceImpl extends BpmOABaseService implements BpmOASal .setProcessInstanceName(processInstance.getName()) .setBeginTime(processInstance.getCreateTime()) .setEndTime(processInstance.getEndTime()) - .setCompanyId(deptRespDTO != null && deptRespDTO.getFactoryId() == null ? deptRespDTO.getId() : null) + .setCompanyId(salaryDO.getDeptType() == 1 ? salaryDO.getCompanyDeptId() : null) ); } } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAExpensesMapper.xml b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAExpensesMapper.xml index 52bde67d..ff1f1ca1 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAExpensesMapper.xml +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/resources/mapper/oa/BpmOAExpensesMapper.xml @@ -1,7 +1,6 @@ -