diff --git a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DeptTypeEnum.java b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DeptTypeEnum.java index 66abddc8..0b135d68 100644 --- a/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DeptTypeEnum.java +++ b/yudao-framework/yudao-common/src/main/java/cn/iocoder/yudao/framework/common/enums/DeptTypeEnum.java @@ -19,6 +19,7 @@ public enum DeptTypeEnum { FINANCE_DEPT("FINANCE_DEPT", "财务部门"), HR_DEPT("HR_DEPT", "人力部门"), PURCHASING_DEPT("PURCHASING_DEPT", "采购部门"), + PROJECT_DEPT("PROJECT_DEPT", "项目部门"), OTHER("OTHER", "其他部门"); /** diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/CustomerSettlementController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/CustomerSettlementController.java index d399aa5a..1ff20df2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/CustomerSettlementController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/CustomerSettlementController.java @@ -1,16 +1,23 @@ package cn.iocoder.yudao.module.system.controller.admin.customersettlement; +import cn.hutool.core.collection.CollUtil; 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.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; +import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.FactoryInfoApi; +import cn.iocoder.yudao.module.smartfactory.api.factoryInfo.dto.FactoryInfoDTO; import cn.iocoder.yudao.module.system.controller.admin.customersettlement.vo.CustomerSettlementPageReqVO; import cn.iocoder.yudao.module.system.controller.admin.customersettlement.vo.CustomerSettlementRespVO; import cn.iocoder.yudao.module.system.controller.admin.customersettlement.vo.CustomerSettlementSaveReqVO; import cn.iocoder.yudao.module.system.dal.dataobject.customersettlement.CustomerSettlementDO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; +import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO; import cn.iocoder.yudao.module.system.service.customersettlement.CustomerSettlementService; +import cn.iocoder.yudao.module.system.service.dept.DeptService; +import cn.iocoder.yudao.module.system.service.user.AdminUserService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -23,8 +30,13 @@ import javax.servlet.http.HttpServletResponse; import javax.validation.Valid; import java.io.IOException; import java.util.List; +import java.util.Map; +import java.util.Objects; +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.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; @Tag(name = "管理后台 - 客户结算信息") @@ -36,6 +48,15 @@ public class CustomerSettlementController { @Resource private CustomerSettlementService customerSettlementService; + @Resource + private AdminUserService userService; + + @Resource + private DeptService deptService; + + @Resource + private FactoryInfoApi factoryInfoApi; + @PostMapping("/create") @Operation(summary = "创建客户结算信息") @PreAuthorize("@ss.hasPermission('system:customer-settlement:create')") @@ -74,7 +95,39 @@ public class CustomerSettlementController { @PreAuthorize("@ss.hasPermission('system:customer-settlement:query')") public CommonResult> getCustomerSettlementPage(@Valid CustomerSettlementPageReqVO pageReqVO) { PageResult pageResult = customerSettlementService.getCustomerSettlementPage(pageReqVO); - return success(BeanUtils.toBean(pageResult, CustomerSettlementRespVO.class)); + PageResult respVO = BeanUtils.toBean(pageResult, CustomerSettlementRespVO.class); + if (CollUtil.isNotEmpty(respVO.getList())) { + + // 获取所有创建者信息 + Set creatorIds = respVO.getList().stream() + .filter(Objects::nonNull) + .map(CustomerSettlementRespVO::getCreator) + .map(Long::valueOf) + .collect(Collectors.toSet()); + Map userMap = userService.getUserList(creatorIds).stream() + .collect(Collectors.toMap(user -> + String.valueOf(user.getId()), // 将 Long 类型的 id 转换为 String 类型 + v -> v)); + + // 获取工厂信息 + Set factoryIds = convertSet(respVO.getList(), CustomerSettlementRespVO::getCustomerId); + Map factoryMap = factoryInfoApi.getFactoryMap(factoryIds); + + // 获取公司信息 + Set companyIds = convertSet(respVO.getList(), CustomerSettlementRespVO::getCompanyId); + Map companyMap = deptService.getDeptMap(companyIds); + + respVO.getList().forEach(item -> { + // 设置工厂名称 + item.setCustomerName(factoryMap.get(item.getCustomerId()).getName()); + // 设置公司名称 + item.setCompanyName(companyMap.get(item.getCompanyId()).getName()); + // 设置创建人名称 + item.setCreatorName(userMap.get(item.getCreator()) == null ? "" : userMap.get(item.getCreator()).getNickname()); + }); + } + + return success(respVO); } @GetMapping("/export-excel") @@ -89,5 +142,4 @@ public class CustomerSettlementController { ExcelUtils.write(response, "客户结算信息.xls", "数据", CustomerSettlementRespVO.class, BeanUtils.toBean(list, CustomerSettlementRespVO.class)); } - } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementRespVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementRespVO.java index 12228664..92724bac 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementRespVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementRespVO.java @@ -4,32 +4,33 @@ import cn.iocoder.yudao.module.system.controller.admin.worklog.vo.upload.UploadU import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; -import java.util.*; -import java.util.*; +import lombok.Data; + import java.math.BigDecimal; -import org.springframework.format.annotation.DateTimeFormat; import java.time.LocalDateTime; -import com.alibaba.excel.annotation.*; +import java.util.List; @Schema(description = "管理后台 - 客户结算信息 Response VO") @Data @ExcelIgnoreUnannotated public class CustomerSettlementRespVO { - @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "16752") - @ExcelProperty("主键ID") + @Schema(description = "主键ID") + @ExcelProperty("序号") private Long id; - @Schema(description = "客户id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11477") - @ExcelProperty("客户id") + @Schema(description = "客户id") private Long customerId; - @Schema(description = "业务类型(1:物流辅助服务、2:设备销售、 3:设备维护、4:系统集成、5:叉车改造)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("业务类型(1:物流辅助服务、2:设备销售、 3:设备维护、4:系统集成、5:叉车改造)") + @Schema(description = "厂区名称") + @ExcelProperty("厂区名称") + private String customerName; + + @Schema(description = "业务类型(1:物流辅助服务、2:设备销售、 3:设备维护、4:系统集成、5:叉车改造)") + @ExcelProperty("业务类型") private Integer businessType; - @Schema(description = "结算月份", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "结算月份") @ExcelProperty("结算月份") private String settlementMonth; @@ -41,20 +42,28 @@ public class CustomerSettlementRespVO { @ExcelProperty("扣款金额") private BigDecimal deductionAmount; - @Schema(description = "结算金额", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "结算金额") @ExcelProperty("结算金额") private BigDecimal settlementAmount; - @Schema(description = "结算公司id", requiredMode = Schema.RequiredMode.REQUIRED, example = "3044") - @ExcelProperty("结算公司id") + @Schema(description = "结算公司id") private Long companyId; - @Schema(description = "上传附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn") - @ExcelProperty("上传附件") + @Schema(description = "结算公司名称") + @ExcelProperty("结算公司名称") + private String companyName; + + @Schema(description = "附件") private List url; + @Schema(description = "创建人") + private String creator; + + @Schema(description = "创建人名称") + @ExcelProperty("创建人名称") + private String creatorName; + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("创建时间") private LocalDateTime createTime; - } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementSaveReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementSaveReqVO.java index 768487e9..216ca102 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementSaveReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/customersettlement/vo/CustomerSettlementSaveReqVO.java @@ -42,7 +42,7 @@ public class CustomerSettlementSaveReqVO { @NotNull(message = "结算公司id不能为空") private Long companyId; - @Schema(description = "上传附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn") + @Schema(description = "上传附件", requiredMode = Schema.RequiredMode.NOT_REQUIRED, example = "https://www.iocoder.cn") @NotEmpty(message = "上传附件不能为空") private List url; diff --git a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/api/factoryInfo/FactoryInfoApi.java b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/api/factoryInfo/FactoryInfoApi.java index 688887a9..9b8466a3 100644 --- a/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/api/factoryInfo/FactoryInfoApi.java +++ b/zn-module-smartfactory/zn-module-smartfactory-api/src/main/java/cn/iocoder/yudao/module/smartfactory/api/factoryInfo/FactoryInfoApi.java @@ -12,6 +12,9 @@ import org.springframework.web.bind.annotation.RequestParam; import java.util.Collection; import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; @FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = @Tag(name = "RPC 服务 - 考勤设备") @@ -26,4 +29,14 @@ public interface FactoryInfoApi { @GetMapping(PREFIX + "/get-list") @Operation(summary = "获得工厂信息列表") CommonResult> getFactoryInfoList(@RequestParam("factoryId") Collection factoryId); + + /** + * 获得工厂信息 Map + * @param factoryId 工厂编号集合 + * @return 工厂信息 Map + */ + default Map getFactoryMap(Collection factoryId) { + List factoryInfoDOS = getFactoryInfoList(factoryId).getCheckedData(); + return convertMap(factoryInfoDOS, FactoryInfoDTO::getId); + } }