diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApi.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApi.java index e482d683a..b711de35d 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApi.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApi.java @@ -21,8 +21,13 @@ import java.util.List; public interface OrderPlateDatasourceApi { String PREFIX = ApiConstants.PREFIX + "/order-plate"; - @GetMapping(PREFIX + "/summary/byPlate") - @Operation(summary = "按板材汇总板材数据") + @GetMapping(PREFIX + "/summary") + @Operation(summary = "板材汇总") @Parameter(name = "orderId", description = "生产单id", required = true, example = "1") CommonResult> selectPlateGoodsListSummary(@RequestParam("orderId") Long orderId); + + @GetMapping(PREFIX + "/detail") + @Operation(summary = "板材明细") + @Parameter(name = "orderId", description = "生产单id", required = true, example = "1") + CommonResult> selectPlateGoodsList(@RequestParam("orderId") Long orderId); } diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/dto/PlateGoodsRespDTO.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/dto/PlateGoodsRespDTO.java index d77ec4f3c..6f65f2735 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/dto/PlateGoodsRespDTO.java +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/api/datasource/dto/PlateGoodsRespDTO.java @@ -154,7 +154,7 @@ public class PlateGoodsRespDTO { @Schema(description = "是否孤形对角") private Boolean isArcAcross; - @Schema(description = "是否异性") + @Schema(description = "是否异形") private Boolean isSpecialShaped; @Schema(description = "是否造型") diff --git a/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderPlateOpenDoorTypeEnum.java b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderPlateOpenDoorTypeEnum.java new file mode 100644 index 000000000..370d86ae9 --- /dev/null +++ b/cf-module-prod-executor/cf-module-prod-executor-api/src/main/java/com/cf/imes/module/executor/enums/OrderPlateOpenDoorTypeEnum.java @@ -0,0 +1,40 @@ +package com.cf.imes.module.executor.enums; + +/** + * 板材开门类型枚举 + * + * @author Gqr + * @since 2024/7/29 9:58 + */ +public enum OrderPlateOpenDoorTypeEnum { + NO(0, "无"), + LEFT(1, "左"), + RIGHT(2, "右"), + UP(3, "上"), + DOWN(4, "下"); + + private final int code; + private final String desc; + + OrderPlateOpenDoorTypeEnum(int code, String desc) { + this.code = code; + this.desc = desc; + } + + public int getCode() { + return code; + } + + public String getDesc() { + return desc; + } + + public static String getDescFromCode(int code) { + for (OrderPlateOpenDoorTypeEnum orderPlateOpenDoorTypeEnum : OrderPlateOpenDoorTypeEnum.values()) { + if (orderPlateOpenDoorTypeEnum.getCode() == code) { + return orderPlateOpenDoorTypeEnum.getDesc(); + } + } + return null; + } +} diff --git a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApiImpl.java b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApiImpl.java index d27d79569..016ffb0aa 100644 --- a/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApiImpl.java +++ b/cf-module-prod-executor/cf-module-prod-executor-biz/src/main/java/com/cf/imes/module/executor/api/datasource/OrderPlateDatasourceApiImpl.java @@ -31,4 +31,12 @@ public class OrderPlateDatasourceApiImpl implements OrderPlateDatasourceApi { List plateGoodsRespVOS = plateMapper.selectPlateGoodsListSummary(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(), notDeletedStatus); return CommonResult.success(BeanUtils.toBean(plateGoodsRespVOS, PlateGoodsRespDTO.class)); } + + @Override + public CommonResult> selectPlateGoodsList(Long orderId) { + // 查询分组统计 + Integer notDeletedStatus = OrderDeletedEnum.NOT_DELETED.getStatus(); + List plateGoodsRespVOS = plateMapper.selectPlateGoodsList(orderId, SecurityFrameworkUtils.getLoginUser().getOrganId(), notDeletedStatus); + return CommonResult.success(BeanUtils.toBean(plateGoodsRespVOS, PlateGoodsRespDTO.class)); + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java index e013ef8a8..d8e0ee82c 100644 --- a/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java +++ b/cf-module-report/cf-module-report-biz/src/main/java/com/cf/imes/module/report/framework/ureport/bean/OrderSummaryBeanDatasource.java @@ -7,6 +7,7 @@ import com.cf.imes.module.executor.api.datasource.OrderDatasourceApi; import com.cf.imes.module.executor.api.datasource.OrderPlateDatasourceApi; import com.cf.imes.module.executor.api.datasource.dto.OrderDTO; import com.cf.imes.module.executor.api.datasource.dto.PlateGoodsRespDTO; +import com.cf.imes.module.executor.enums.OrderPlateOpenDoorTypeEnum; import com.cf.imes.module.report.framework.ureport.annotation.CfReportSpringbeanDatasource; import lombok.extern.slf4j.Slf4j; @@ -76,15 +77,15 @@ public class OrderSummaryBeanDatasource { } /** - * 板材汇总-按板材 + * 板材汇总 * * @param dsName * @param datasetName * @param parameters * @return */ - public List> orderPlateSummaryByPlate(String dsName, String datasetName, Map parameters) { - log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateSummaryByPlate][{}][{}]调用开始", dsName, datasetName); + public List> orderPlateGoodsSummary(String dsName, String datasetName, Map parameters) { + log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateGoodsSummary][{}][{}]调用开始", dsName, datasetName); List> resultList = new ArrayList<>(); Object orderId = parameters.get(ORDER_ID_FIELD_NAME); @@ -100,19 +101,94 @@ public class OrderSummaryBeanDatasource { // 构造报表所需结构 resultMap.put("roomName", p.getRoomName()); resultMap.put("bodyName", p.getBodyName()); - resultMap.put("thickness", p.getThickness()); + resultMap.put("thickness", stripTrailingZeros(p.getThickness())); resultMap.put("name", p.getName()); - resultMap.put("height", p.getHeight()); - resultMap.put("width", p.getWidth()); + resultMap.put("height", stripTrailingZeros(p.getHeight())); + resultMap.put("width", stripTrailingZeros(p.getWidth())); resultMap.put("count", count); - resultMap.put("area", area); - resultMap.put("openDoorType", p.getOpenDoorType()); + resultMap.put("area", stripTrailingZeros(area)); + resultMap.put("openDoorType", OrderPlateOpenDoorTypeEnum.getDescFromCode(p.getOpenDoorType())); + resultMap.put("material", p.getMaterial()); + resultMap.put("color", p.getColor()); resultMap.put("remark", p.getRemark()); - resultMap.put("areaAll", area.multiply(BigDecimal.valueOf(count))); + resultMap.put("areaAll", stripTrailingZeros(area.multiply(BigDecimal.valueOf(count)))); resultList.add(resultMap); }); } - log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateSummaryByPlate][{}][{}]调用结束", dsName, datasetName); + log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateGoodsSummary][{}][{}]调用结束", dsName, datasetName); return resultList; } + + /** + * 板材明细 + * + * @param dsName + * @param datasetName + * @param parameters + * @return + */ + public List> orderPlateGoodsList(String dsName, String datasetName, Map parameters) { + log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateGoodsList][{}][{}]调用开始", dsName, datasetName); + List> resultList = new ArrayList<>(); + + Object orderId = parameters.get(ORDER_ID_FIELD_NAME); + // 查询统计信息 + CommonResult> commonResult = orderPlateDatasourceApi.selectPlateGoodsList(Long.parseLong(orderId.toString())); + List plateGoodsRespDTOS = commonResult.getData(); + + if (CollUtil.isNotEmpty(plateGoodsRespDTOS)) { + plateGoodsRespDTOS.forEach(p -> { + Map resultMap = new HashMap<>(); + BigDecimal area = p.getArea(); + Integer count = p.getCount(); + // 构造报表所需结构 + resultMap.put("goodsName", p.getGoodsName()); + resultMap.put("name", p.getName()); + resultMap.put("material", p.getMaterial()); + resultMap.put("color", p.getColor()); + resultMap.put("goodsThickness", p.getGoodsThickness()); + resultMap.put("count", p.getCount()); + resultMap.put("roomName", p.getRoomName()); + resultMap.put("bodyName", p.getBodyName()); + resultMap.put("plateNo", p.getPlateNo()); + resultMap.put("height", stripTrailingZeros(p.getHeight())); + resultMap.put("width", stripTrailingZeros(p.getWidth())); + resultMap.put("thickness", stripTrailingZeros(p.getThickness())); + resultMap.put("area", stripTrailingZeros(area)); + resultMap.put("remark", p.getRemark()); + resultMap.put("isSpecialShaped", getBooleanString(p.getIsSpecialShaped())); + resultMap.put("isSculpt", getBooleanString(p.getIsSculpt())); + resultMap.put("openDoorType", OrderPlateOpenDoorTypeEnum.getDescFromCode(p.getOpenDoorType())); + resultMap.put("seal", String.join(",", stripTrailingZeros(p.getSealLeft()), stripTrailingZeros(p.getSealRight()), stripTrailingZeros(p.getSealUp()), stripTrailingZeros(p.getSealDown()))); + resultMap.put("areaAll", stripTrailingZeros(area.multiply(BigDecimal.valueOf(count)))); + resultList.add(resultMap); + }); + } + log.info("报表数据源[OrderSummaryBeanDatasource][orderPlateGoodsList][{}][{}]调用结束", dsName, datasetName); + return resultList; + } + + /** + * 移除尾数的0,600.000 -> 600 + * + * @param data + * @return + */ + private String stripTrailingZeros(BigDecimal data) { + if (ObjectUtil.isNotNull(data)) { + return data.stripTrailingZeros().toPlainString(); + } else { + return ""; + } + } + + /** + * 布尔值转是否 + * + * @param b + * @return + */ + private String getBooleanString(Boolean b) { + return b ? "是" : "否"; + } } diff --git a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar index e3b1628bb..88c8279ef 100644 Binary files a/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar and b/cf-module-report/cf-module-report-biz/src/main/resources/lib/ureport-core-2.3.0-SNAPSHOT.jar differ