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 a507b973..cc489866 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 @@ -1,11 +1,16 @@ package cn.iocoder.yudao.module.bpm.controller.admin.oa; import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.framework.common.pojo.PageParam; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; +import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.bpm.controller.admin.financialpayment.vo.FinancialPaymentPageReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.expenses.*; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAExpensesDO; import cn.iocoder.yudao.module.bpm.service.oa.BpmOAExpensesService; +import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.FactoryInfoApi; +import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -13,9 +18,17 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils.getLoginUserId; /** @@ -107,4 +120,15 @@ public class BpmOAExpensesController { expensesService.oneClickPayment(month); return success(true); } + + @GetMapping("/export-excel") + @Operation(summary = "导出支付信息 Excel") + @OperateLog(type = EXPORT) + public void exportFactoryInfoExcel(@Valid BpmOAExpensesPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List respVO = expensesService.getExpensesPage(pageReqVO).getList(); + + expensesService.exportList(response, respVO); + } } \ 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/expenses/BpmOAExpensesExportVO.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesExportVO.java new file mode 100644 index 00000000..487b62d1 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/oa/vo/expenses/BpmOAExpensesExportVO.java @@ -0,0 +1,49 @@ +package cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.expenses; + +import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.BpmOABaseRespVO; +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.math.BigDecimal; + +/** + * @author 符溶馨 + */ +@Schema(description = "管理后台 - 生产开支 请求Request VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@ExcelIgnoreUnannotated +public class BpmOAExpensesExportVO extends BpmOABaseRespVO { + + @ExcelProperty("姓名") + private String userName; + + @ExcelProperty("费用类型") + private String typeValue; + + @ExcelProperty("费用板块") + private String costSectionValue; + + @ExcelProperty("费用产生部门") + private String deptName; + + @ExcelProperty("支出金额") + private BigDecimal amount; + + @ExcelProperty("费用明细") + private String detail; + + @ExcelProperty("收款人名称") + private String payeeName; + + @ExcelProperty("开户行名称") + private String bankName; + + @ExcelProperty("银行卡号") + private String bankNo; +} 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 fec338e8..22f512ea 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 @@ -5,7 +5,9 @@ import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.expenses.*; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAExpensesDO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAExpensesItemDO; +import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; +import java.io.IOException; import java.math.BigDecimal; import java.util.List; @@ -97,4 +99,11 @@ public interface BpmOAExpensesService { * @param month 月份 */ void oneClickPayment(String month); + + /** + * 导出EXCEL + * @param response + * @param respVO + */ + void exportList(HttpServletResponse response, List respVO) throws IOException; } 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 a7e286cd..49c53bb1 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 @@ -5,6 +5,7 @@ import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.UploadUserFile; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.mybatis.core.util.MyBatisUtils; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.expenses.*; @@ -19,12 +20,15 @@ import cn.iocoder.yudao.module.bpm.enums.task.BpmProcessInstanceResultEnum; import cn.iocoder.yudao.module.bpm.service.financialpayment.FinancialPaymentService; import cn.iocoder.yudao.module.bpm.service.task.BpmHistoryProcessInstanceService; import cn.iocoder.yudao.module.bpm.service.task.BpmProcessInstanceService; +import cn.iocoder.yudao.module.infra.api.config.ConfigApi; import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.FactoryInfoApi; import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.dto.FactoryInfoDTO; import cn.iocoder.yudao.module.smartfactory.api.staff.StaffApi; import cn.iocoder.yudao.module.smartfactory.api.staff.dto.StaffDTO; import cn.iocoder.yudao.module.system.api.bank.BankApi; import cn.iocoder.yudao.module.system.api.bank.dto.BankRespDTO; +import cn.iocoder.yudao.module.system.api.dict.DictDataApi; +import cn.iocoder.yudao.module.system.api.dict.dto.DictDataRespDTO; import cn.iocoder.yudao.module.system.api.loan.LoanApi; import cn.iocoder.yudao.module.system.api.loan.dto.LoanDTO; import cn.iocoder.yudao.module.system.api.user.AdminUserApi; @@ -38,6 +42,8 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; import java.math.BigDecimal; import java.util.HashMap; import java.util.List; @@ -93,6 +99,9 @@ public class BpmOAExpensesServiceImpl extends BpmOABaseService implements BpmOAE @Resource private StaffApi staffApi; + @Resource + private DictDataApi dictDataApi; + @Override public Long createExpenses(Long userId, BpmOAExpensesCreateReqVO createReqVO) { @@ -320,4 +329,32 @@ public class BpmOAExpensesServiceImpl extends BpmOABaseService implements BpmOAE expensesMapper.oneClickPayment(month); } + + @Override + public void exportList(HttpServletResponse response, List respVO) throws IOException { + + // 获取费用类型字典值 + List dictDataRespDTOS = dictDataApi.getDictDataList("bpm_oa_expenses_type").getCheckedData(); + Map expensesType = dictDataRespDTOS.stream().collect(Collectors.toMap(DictDataRespDTO::getValue, DictDataRespDTO::getLabel)); + + // 费用板块map + Map costSection = new HashMap<>(); + costSection.put(1, "叉车"); + costSection.put(2, "打包"); + costSection.put(3, "搬运"); + costSection.put(4, "运输"); + costSection.put(5, "管理成本"); + + List exportVOS = respVO.stream() + .map(item -> { + BpmOAExpensesExportVO exportVO = BeanUtils.toBean(item, BpmOAExpensesExportVO.class); + exportVO.setTypeValue(expensesType.get(item.getType().toString())); + exportVO.setCostSectionValue(costSection.get(item.getCostSection())); + return exportVO; + }) + .collect(Collectors.toList()); + + // 导出 Excel + ExcelUtils.write(response, "开支日报.xls", "数据", BpmOAExpensesExportVO.class, exportVOS); + } }