Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lipenghui 2 дней назад
Родитель
Сommit
4e156aa789

+ 23 - 4
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotlockstock/IotLockStockController.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotlockstock;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
@@ -130,16 +132,33 @@ public class IotLockStockController {
     }
 
     @GetMapping("/export-excel")
-    @Operation(summary = "导出PMS 本地 库存 Excel")
+    @Operation(summary = "导出PMS 本地 库存 列表 Excel")
     @PreAuthorize("@ss.hasPermission('pms:iot-lock-stock:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportIotLockStockExcel(@Valid IotLockStockPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotLockStockDO> list = iotLockStockService.getIotLockStockPage(pageReqVO).getList();
+        List<IotLockStockDO> lockStocks = iotLockStockService.getIotLockStockPage(pageReqVO).getList();
+
+        // 拼接 工厂 成本中心 库存地点
+        Map<Long, SapOrgRespDTO> factoryMap = sapOrgApi.getSapOrgMap(
+                convertList(lockStocks, IotLockStockDO::getFactoryId));
+        Map<Long, SapOrgRespDTO> costCenterMap = sapOrgApi.getSapOrgMap(
+                convertList(lockStocks, IotLockStockDO::getCostCenterId));
+        BigDecimal totalQuantity = BigDecimal.ZERO;
+        BigDecimal totalAmount = BigDecimal.ZERO;
+        List<IotLockStockRespVO> lockStockResults = IotLockStockConvert.INSTANCE.convertList(lockStocks, factoryMap, costCenterMap, totalQuantity, totalAmount);
+        if (CollUtil.isNotEmpty(lockStockResults)) {
+            lockStockResults.forEach(result -> {
+                if (ObjUtil.isNotEmpty(result.getStorageTime())) {
+                    // 创建时间 格式化 yyyy-MM-dd
+                    result.setStorageTimeStr(LocalDateTimeUtil.format(result.getStorageTime(), DatePattern.NORM_DATETIME_PATTERN));
+                }
+            });
+        }
         // 导出 Excel
-        ExcelUtils.write(response, "PMS 本地 库存.xls", "数据", IotLockStockRespVO.class,
-                        BeanUtils.toBean(list, IotLockStockRespVO.class));
+        ExcelUtils.write(response, "本地库存列表.xls", "本地库存列表", IotLockStockRespVO.class,
+                lockStockResults);
     }
 
 }

+ 9 - 22
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotlockstock/vo/IotLockStockRespVO.java

@@ -14,36 +14,32 @@ import java.time.LocalDateTime;
 public class IotLockStockRespVO {
 
     @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26886")
-    @ExcelProperty("主键")
     private Long id;
 
     @Schema(description = "组织部门id", example = "4517")
-    @ExcelProperty("组织部门id")
     private Long deptId;
 
     @Schema(description = "工厂id", example = "4517")
-    @ExcelProperty("工厂id")
     private Long factoryId;
+
     @Schema(description = "工厂(SAP) 专业公司")
-    @ExcelProperty("工厂(SAP) 专业公司")
+    @ExcelProperty("工厂")
     private String factory;
 
     @Schema(description = "库存地点id", example = "4517")
-    @ExcelProperty("库存地点id")
     private Long storageLocationId;
+
     @Schema(description = "库存地点 - SAP 部门 项目部级")
-    @ExcelProperty("库存地点 - SAP 部门 项目部级")
     private String projectDepartment;
 
     @Schema(description = "成本中心id", example = "4517")
-    @ExcelProperty("成本中心id")
     private Long costCenterId;
+
     @Schema(description = "成本中心(SAP) 库存地点 小队")
-    @ExcelProperty("成本中心(SAP) 库存地点 小队")
+    @ExcelProperty("成本中心")
     private String costCenter;
 
     @Schema(description = "领料单号")
-    @ExcelProperty("领料单号")
     private String pickingListNumber;
 
     @Schema(description = "物料编码")
@@ -55,11 +51,9 @@ public class IotLockStockRespVO {
     private String materialName;
 
     @Schema(description = "物料组", example = "芋艿")
-    @ExcelProperty("物料组")
     private String materialGroupName;
 
     @Schema(description = "物料组id", example = "23371")
-    @ExcelProperty("物料组id")
     private Long materialGroupId;
 
     @Schema(description = "数量")
@@ -75,45 +69,38 @@ public class IotLockStockRespVO {
     private String unit;
 
     @Schema(description = "入库时间")
-    @ExcelProperty("入库时间")
     private LocalDateTime storageTime;
 
+    @Schema(description = "入库时间")
+    @ExcelProperty("入库时间")
+    private String storageTimeStr;
+
     @Schema(description = "库区id", example = "4517")
-    @ExcelProperty("库区id")
     private Long storageAreaId;
     @Schema(description = "货架id", example = "4517")
-    @ExcelProperty("货架id")
     private Long shelvesId;
     @Schema(description = "货位id", example = "4517")
-    @ExcelProperty("货位id")
     private Long cargoLocationId;
 
     @Schema(description = "排序")
-    @ExcelProperty("排序")
     private Integer sort;
 
     @Schema(description = "类型(1手工添加 2领料单转入)", example = "2")
-    @ExcelProperty("类型(1手工添加 2领料单转入)")
     private Integer type;
 
     @Schema(description = "状态 0启用  1停用", example = "2")
-    @ExcelProperty("状态 0启用  1停用")
     private Integer status;
 
     @Schema(description = "流程实例id", example = "11671")
-    @ExcelProperty("流程实例id")
     private String processInstanceId;
 
     @Schema(description = "审批状态 未提交、审批中、审批通过、审批不通过、已取消", example = "2")
-    @ExcelProperty("审批状态 未提交、审批中、审批通过、审批不通过、已取消")
     private Integer auditStatus;
 
     @Schema(description = "备注", example = "你猜")
-    @ExcelProperty("备注")
     private String remark;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
     /**

+ 45 - 7
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/IotProjectInfoController.java

@@ -1,5 +1,9 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo;
 
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
+import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
 import cn.iocoder.yudao.framework.common.pojo.PageParam;
@@ -12,7 +16,9 @@ import cn.iocoder.yudao.module.pms.controller.admin.iotprojectinfo.vo.IotProject
 import cn.iocoder.yudao.module.pms.dal.dataobject.iotprojectinfo.IotProjectInfoDO;
 import cn.iocoder.yudao.module.pms.service.iotprojectinfo.IotProjectInfoService;
 import cn.iocoder.yudao.module.pms.service.iotprojecttask.IotProjectTaskService;
+import cn.iocoder.yudao.module.system.dal.dataobject.dict.DictDataDO;
 import cn.iocoder.yudao.module.system.service.dept.DeptService;
+import cn.iocoder.yudao.module.system.service.dict.DictDataService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -24,9 +30,7 @@ import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import javax.validation.Valid;
 import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@@ -44,6 +48,8 @@ public class IotProjectInfoController {
     private IotProjectTaskService iotProjectTaskService;
     @Resource
     private DeptService deptService;
+    @Resource
+    private DictDataService dictDataService;
 
     @PostMapping("/create")
     @Operation(summary = "创建项目信息")
@@ -110,16 +116,48 @@ public class IotProjectInfoController {
     }
 
     @GetMapping("/export-excel")
-    @Operation(summary = "导出项目信息 Excel")
+    @Operation(summary = "导出项目信息列表 Excel")
     @PreAuthorize("@ss.hasPermission('rq:iot-project-info:export')")
     @ApiAccessLog(operateType = EXPORT)
     public void exportIotProjectInfoExcel(@Valid IotProjectInfoPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotProjectInfoDO> list = iotProjectInfoService.getIotProjectInfoPage(pageReqVO).getList();
+        Set<Long> idList = new HashSet<>();
+
+        List<IotProjectInfoDO> projectInfos = iotProjectInfoService.getIotProjectInfoPage1(pageReqVO, idList).getList();
+        // 设置 结算方式
+        List<IotProjectInfoRespVO> projects = BeanUtils.toBean(projectInfos, IotProjectInfoRespVO.class);
+        // key施工状态数据字典value   value施工状态数据字典label
+        Map<String, String> methodPair = new HashMap<>();
+        // 施工状态 字典数据
+        List<DictDataDO> methodData = dictDataService.getDictDataListByDictType("rq_iot_project_settlement_method");
+        if (CollUtil.isNotEmpty(methodData)) {
+            methodData.forEach(data -> {
+                methodPair.put(data.getValue(), data.getLabel());
+            });
+        }
+        if (CollUtil.isNotEmpty(projects)) {
+            projects.forEach(project -> {
+                if (methodPair.containsKey(project.getPayment())) {
+                    project.setPaymentStr(methodPair.get(project.getPayment()));
+                }
+                // 创建时间 格式化 全
+                if (ObjUtil.isNotEmpty(project.getCreateTime())) {
+                    project.setCreateTimeStr(LocalDateTimeUtil.format(project.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN));
+                }
+                // 创建时间 格式化 yyyy-MM-dd
+                if (ObjUtil.isNotEmpty(project.getStartTime())) {
+                    project.setStartTimeStr(LocalDateTimeUtil.format(project.getStartTime(), DatePattern.NORM_DATE_PATTERN));
+                }
+                // 创建时间 格式化 yyyy-MM-dd
+                if (ObjUtil.isNotEmpty(project.getEndTime())) {
+                    project.setEndTimeStr(LocalDateTimeUtil.format(project.getEndTime(), DatePattern.NORM_DATE_PATTERN));
+                }
+            });
+        }
         // 导出 Excel
-        ExcelUtils.write(response, "项目信息.xls", "数据", IotProjectInfoRespVO.class,
-                        BeanUtils.toBean(list, IotProjectInfoRespVO.class));
+        ExcelUtils.write(response, "项目信息列表.xls", "项目信息列表", IotProjectInfoRespVO.class,
+                projects);
     }
 
 }

+ 24 - 26
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojectinfo/vo/IotProjectInfoRespVO.java

@@ -14,102 +14,100 @@ import java.util.Set;
 @ExcelIgnoreUnannotated
 public class IotProjectInfoRespVO {
 
+    @ExcelProperty("客户名称")
+    private String manufactureName;
+
+    @Schema(description = "合同名称", example = "王五")
+    @ExcelProperty("合同名称")
+    private String contractName;
+
     @Schema(description = "主键id", requiredMode = Schema.RequiredMode.REQUIRED, example = "14006")
-    @ExcelProperty("主键id")
     private Long id;
 
     @Schema(description = "组织id", example = "31703")
-    @ExcelProperty("组织id")
     private Long deptId;
 
     @Schema(description = "部门名称", example = "芋艿")
-    @ExcelProperty("部门名称")
     private String deptName;
 
     @Schema(description = "海外项目标识 1国内项目 2海外项目")
-    @ExcelProperty("海外项目标识 1国内项目 2海外项目")
     private Integer overseas;
 
     @Schema(description = "海外所属区域")
-    @ExcelProperty("海外所属区域")
     private String overseasArea;
 
-    @Schema(description = "合同名称", example = "王五")
-    @ExcelProperty("合同名称")
-    private String contractName;
-
     @Schema(description = "合同编号")
     @ExcelProperty("合同编号")
     private String contractCode;
 
     @Schema(description = "合同标的")
-    @ExcelProperty("合同标的")
     private String contractSubject;
 
     @Schema(description = "合同金额")
-    @ExcelProperty("合同金额")
     private BigDecimal contractAmount;
 
     @Schema(description = "币种")
-    @ExcelProperty("币种")
     private String currency;
 
     @Schema(description = "责任人([123,234])")
-    @ExcelProperty("责任人([123,234])")
     private Set<Long> responsiblePerson;
 
     @Schema(description = "工作量总数")
-    @ExcelProperty("工作量总数")
     private String workloadTotal;
 
     @Schema(description = "工作量已完成")
-    @ExcelProperty("工作量已完成")
     private String workloadFinish;
 
     @Schema(description = "工作量单位(段/层/方/井深/进尺)")
-    @ExcelProperty("工作量单位(段/层/方/井深/进尺)")
     private String workloadUnit;
 
     @Schema(description = "开始时间")
-    @ExcelProperty("开始时间")
     private LocalDateTime startTime;
 
+    @Schema(description = "开始时间")
+    @ExcelProperty("合同开始时间")
+    private String startTimeStr;
+
     @Schema(description = "完成时间")
-    @ExcelProperty("完成时间")
     private LocalDateTime endTime;
 
+    @Schema(description = "合同完成时间")
+    @ExcelProperty("合同完成时间")
+    private String endTimeStr;
+
     @Schema(description = "施工地点")
-    @ExcelProperty("施工地点")
     private String location;
 
     @Schema(description = "施工工艺")
-    @ExcelProperty("施工工艺")
     private String technique;
 
     @Schema(description = "结算方式")
-    @ExcelProperty("结算方式")
     private String payment;
 
+    @Schema(description = "结算方式 label")
+    @ExcelProperty("结算方式")
+    private String paymentStr;
+
     @Schema(description = "项目状态 1待开始 2进行中 3已完成", example = "2")
-    @ExcelProperty("项目状态 1待开始 2进行中 3已完成")
     private Integer status;
 
     @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "创建时间")
+    @ExcelProperty("创建时间")
+    private String createTimeStr;
+
     @Schema(description = "用户名", example = "王五")
-    @ExcelProperty("用户名")
     private String userName;
 
     @Schema(description = "用户id", example = "448")
-    @ExcelProperty("用户id")
     private Long userId;
 
     private String remark;
 
     private Long manufacturerId;
 
-    private String manufactureName;
+
 
 }

+ 1 - 1
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotprojecttask/vo/IotProjectTaskRespVO.java

@@ -76,7 +76,7 @@ public class IotProjectTaskRespVO {
     private String status;
 
     @Schema(description = "创建时间")
-    @ExcelProperty("创建时间")
+    @ExcelProperty(" 创建时间 ")
     private LocalDateTime createTime;
 
     @Schema(description = "用户名", example = "赵六")

+ 14 - 3
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotsapstock/IotSapStockController.java

@@ -1,6 +1,8 @@
 package cn.iocoder.yudao.module.pms.controller.admin.iotsapstock;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DatePattern;
+import cn.hutool.core.date.LocalDateTimeUtil;
 import cn.hutool.core.util.ObjUtil;
 import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
@@ -125,10 +127,19 @@ public class IotSapStockController {
     public void exportIotSapStockExcel(@Valid IotSapStockPageReqVO pageReqVO,
               HttpServletResponse response) throws IOException {
         pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
-        List<IotSapStockDO> list = iotSapStockService.getIotSapStockPage(pageReqVO).getList();
+        List<IotSapStockDO> sapStocks = iotSapStockService.getIotSapStockPage(pageReqVO).getList();
+        List<IotSapStockRespVO> sapStockResults = BeanUtils.toBean(sapStocks, IotSapStockRespVO.class);
+        if (CollUtil.isNotEmpty(sapStockResults)) {
+            sapStockResults.forEach(result -> {
+                // 创建时间 格式化 yyyy-MM-dd
+                if (ObjUtil.isNotEmpty(result.getCreateTime())) {
+                    result.setCreateTimeStr(LocalDateTimeUtil.format(result.getCreateTime(), DatePattern.NORM_DATETIME_PATTERN));
+                }
+            });
+        }
         // 导出 Excel
-        ExcelUtils.write(response, "PMS SAP 库存(通用库存/项目部库存).xls", "数据", IotSapStockRespVO.class,
-                        BeanUtils.toBean(list, IotSapStockRespVO.class));
+        ExcelUtils.write(response, "SAP库存列表.xls", "SAP库存列表", IotSapStockRespVO.class,
+                sapStockResults);
     }
 
 }

+ 7 - 23
yudao-module-pms/yudao-module-pms-biz/src/main/java/cn/iocoder/yudao/module/pms/controller/admin/iotsapstock/vo/IotSapStockRespVO.java

@@ -14,35 +14,29 @@ import java.time.LocalDateTime;
 public class IotSapStockRespVO {
 
     @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "12946")
-    @ExcelProperty("主键")
     private Long id;
 
     @Schema(description = "组织部门id", example = "10123")
-    @ExcelProperty("组织部门id")
     private Long deptId;
 
     @Schema(description = "工厂(SAP) 专业公司 sap code")
-    @ExcelProperty("工厂(SAP) 专业公司 sap code")
     private String factoryCode;
 
     @Schema(description = "工厂id (system_sap_org表id)", example = "10123")
-    @ExcelProperty("工厂(SAP) 专业公司")
     private Long factoryId;
 
     @Schema(description = "工厂(SAP) 专业公司 名称")
-    @ExcelProperty("工厂(SAP) 专业公司 名称")
+    @ExcelProperty("工厂")
     private String factory;
 
     @Schema(description = "库存地点 sap code", example = "10123")
-    @ExcelProperty("库存地点 sap code")
     private String storageLocationCode;
 
     @Schema(description = "库存地点id", example = "10123")
-    @ExcelProperty("库存地点id")
     private Long storageLocationId;
 
     @Schema(description = "库存地点 - SAP 部门 项目部级 通用库 项目部库")
-    @ExcelProperty("库存地点 - SAP 部门 项目部级 通用库 项目部库")
+    @ExcelProperty("库存地点")
     private String projectDepartment;
 
     @Schema(description = "物料编码")
@@ -54,11 +48,9 @@ public class IotSapStockRespVO {
     private String materialName;
 
     @Schema(description = "物料组", example = "芋艿")
-    @ExcelProperty("物料组")
     private String materialGroupName;
 
     @Schema(description = "物料组id", example = "14906")
-    @ExcelProperty("物料组id")
     private Long materialGroupId;
 
     @Schema(description = "数量")
@@ -66,7 +58,7 @@ public class IotSapStockRespVO {
     private BigDecimal quantity;
 
     @Schema(description = "单价", example = "14017")
-    @ExcelProperty("单价")
+    @ExcelProperty("单价(元)")
     private BigDecimal unitPrice;
 
     @Schema(description = "单位")
@@ -78,53 +70,45 @@ public class IotSapStockRespVO {
     private BigDecimal safetyStock;
 
     @Schema(description = "库区id", example = "10123")
-    @ExcelProperty("库区id")
     private Long storageAreaId;
 
     @Schema(description = "库区名称")
-    @ExcelProperty("库区名称")
     private String storageAreaName;
 
     @Schema(description = "货架id", example = "24365")
-    @ExcelProperty("货架id")
     private Long shelvesId;
 
     @Schema(description = "库位id", example = "16905")
-    @ExcelProperty("库位id")
     private Long cargoLocationId;
 
     @Schema(description = "类型(通用库 项目部库)", example = "1")
-    @ExcelProperty("类型(通用库 项目部库)")
     private Integer type;
 
     @Schema(description = "同步状态 0未同步 1同步成功 2同步失败", example = "2")
-    @ExcelProperty("同步状态 0未同步 1同步成功 2同步失败")
     private Integer syncStatus;
 
     @Schema(description = "最后一次同步时间")
-    @ExcelProperty("最后一次同步时间")
     private LocalDateTime syncTime;
 
     @Schema(description = "同步失败时的错误信息")
-    @ExcelProperty("同步失败时的错误信息")
     private String syncError;
 
     @Schema(description = "排序")
-    @ExcelProperty("排序")
     private Integer sort;
 
     @Schema(description = "状态 0启用  1停用", example = "2")
-    @ExcelProperty("状态 0启用  1停用")
     private Integer status;
 
     @Schema(description = "备注", example = "你说的对")
-    @ExcelProperty("备注")
     private String remark;
 
     @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
-    @ExcelProperty("创建时间")
     private LocalDateTime createTime;
 
+    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
+    @ExcelProperty("创建时间")
+    private String createTimeStr;
+
     /**
      * 扩展字段
      */