diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java index b95e0232f..67ed282e9 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/oem/pojo/vo/PriceSheetVO.java @@ -138,7 +138,7 @@ public class PriceSheetVO { * 镀种描述 */ @Schema(description = "镀种描述") - private String coating_desc; + private String coatingDesc; /** * 阶梯价计量单位 */ @@ -146,6 +146,9 @@ public class PriceSheetVO { private String stairunit; @Schema(description = "金银价格") - private String au_ag_price; + private String auAgPrice; + + @Schema(description = "标准工艺代码") + private String standardProcessCode; } diff --git a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java index aaa6c1348..38b1109ee 100644 --- a/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java +++ b/blade-service-api/blade-desk-api/src/main/java/org/springblade/desk/util/PriceMatcher.java @@ -89,6 +89,53 @@ public class PriceMatcher { return false; } + + /** + * 判断备注是否包含目标价格 + */ + private static boolean containsPriceNew(String remark, BigDecimal targetPrice) { + if(StringUtils.isEmpty(remark)){ + return false; + } + // 正则表达式匹配价格范围或单价 + // 匹配如:350.01-360、467.5、100.5-200.8 + String regex = "(\\d+(?:\\.\\d+)?)(?:,(\\d+(?:\\.\\d+)?))?"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(remark); + + while (matcher.find()) { + String startPriceStr = matcher.group(1); + String endPriceStr = matcher.group(2); + + try { + if (endPriceStr != null) { + // 价格范围,如 "350.01-360" + BigDecimal startPrice = new BigDecimal(startPriceStr); + BigDecimal endPrice = new BigDecimal(endPriceStr); + + // 检查目标价格是否在范围内 + if (targetPrice.compareTo(startPrice) >= 0 && + targetPrice.compareTo(endPrice) <= 0) { + return true; + } + } else { + // 单一价格,如 "467.5" + BigDecimal singlePrice = new BigDecimal(startPriceStr); + + // 检查目标价格是否等于这个价格 + if (targetPrice.compareTo(singlePrice) == 0) { + return true; + } + } + } catch (NumberFormatException e) { + // 解析失败,跳过这个匹配 + continue; + } + } + + return false; + } + /** * 使用Stream API的版本 */ @@ -111,6 +158,6 @@ public class PriceMatcher { * @return */ public static boolean isContainsPrice(String remark, BigDecimal targetPrice) { - return containsPrice(remark, targetPrice); + return containsPriceNew(remark, targetPrice); } } diff --git a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java index 5b93c38af..9c9bc195f 100644 --- a/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java +++ b/blade-service-api/blade-wms-api/src/main/java/org/springblade/wms/pojo/entity/StRealtimeStock.java @@ -69,8 +69,8 @@ public class StRealtimeStock extends TenantEntity { /** * 过期/报废日期 */ - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") @Schema(description = "过期/报废日期") private Date scrapCycle; /** @@ -194,6 +194,12 @@ public class StRealtimeStock extends TenantEntity { @Schema(description = "出库数量") private Double outQuantity; + /** + * 是否量具保养 0否 1是 + */ + @Schema(description = "是否量具保养 0否 1是") + private Integer isMeasureMaintenance; + @TableField(exist = false) private Long outRecordId; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml index b2523fad2..db601271a 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/mapper/MeasuringUpkeepMapper.xml @@ -93,6 +93,7 @@ + @@ -104,14 +105,12 @@ st.sl_id, st.pi_no, st.quantity, - st.quantity_level, st.balance_money, st.sum_num, + st.stay_maintain_num, g.goods_name, - g.goods_code, g.specifications, sh.sh_name, - sl.location, CASE WHEN mmu.status = 0 THEN '新建' diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java index 4806fd8d2..5908c55c4 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/oem/service/impl/OemStatementServiceImpl.java @@ -827,9 +827,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl> coatingDescPriceSheetMap = priceSheetList.stream().filter(priceSheet -> { - String coatingDesc = priceSheet.getCoating_desc(); + String coatingDesc = priceSheet.getCoatingDesc(); return coatingDesc != null && !coatingDesc.trim().isEmpty() && ("涂色标".equals(coatingDesc) || "涂色带".equals(coatingDesc) || "涂箭头".equals(coatingDesc)); - }).collect(Collectors.groupingBy(PriceSheetVO::getCoating_desc, Collectors.toList())); + }).collect(Collectors.groupingBy(PriceSheetVO::getCoatingDesc, Collectors.toList())); // 如果没有任何报价记录 if (coatingDescPriceSheetMap.isEmpty()) { //结算异常:无报价记录结算结果 @@ -1759,7 +1759,7 @@ public class OemStatementServiceImpl extends BaseServiceImpl colorPriceSheetVOS = new ArrayList<>(); for (PriceSheetVO sheet : priceSheetList) { - boolean match = StringUtils.equals(sheet.getSplycode(), ocCode) - // TODO 报价单标准工艺代码没加 - && StringUtils.equals(sheet.getWono(), standardProcessCode); + boolean match = StringUtils.equals(sheet.getSplycode(), ocCode) && StringUtils.equals(sheet.getStandardProcessCode(), standardProcessCode); if (match && price != null && price.compareTo(BigDecimal.ZERO) != 0) { - match = PriceMatcher.isContainsPrice(sheet.getAu_ag_price(), price); + match = PriceMatcher.isContainsPrice(sheet.getAuAgPrice(), price); } if (match) { if (hasColorCount(statementVO)) { @@ -2003,9 +1997,9 @@ public class OemStatementServiceImpl extends BaseServiceImpl> coatingDescPriceSheetMap = priceSheetList.stream().filter(priceSheet -> { - String coatingDesc = priceSheet.getCoating_desc(); + String coatingDesc = priceSheet.getCoatingDesc(); return coatingDesc != null && !coatingDesc.trim().isEmpty() && ("涂色标".equals(coatingDesc) || "涂色带".equals(coatingDesc) || "涂箭头".equals(coatingDesc)); - }).collect(Collectors.groupingBy(PriceSheetVO::getCoating_desc, Collectors.toList())); + }).collect(Collectors.groupingBy(PriceSheetVO::getCoatingDesc, Collectors.toList())); // 如果没有任何报价记录 if (coatingDescPriceSheetMap.isEmpty()) { return false; diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/mapper/ProjectMilestoneMapper.xml b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/mapper/ProjectMilestoneMapper.xml index e184ae67b..60fc6fe5d 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/process/mapper/ProjectMilestoneMapper.xml +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/process/mapper/ProjectMilestoneMapper.xml @@ -75,6 +75,7 @@ AND a.milestone_node to_date(concat(#{fmProjectMilestone.milestoneNodeEnd},' 23:59:59'),'YYYY-MM-DD HH24:MI:SS') + and b.APPROVAL_STATUS not in ('0','1','2') order by a.update_time desc diff --git a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml index 0b2a183c0..37d35a0ba 100644 --- a/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml +++ b/blade-service/blade-erpdata/src/main/java/org/springblade/erpdata/mapper/ErpDataOemMapper.xml @@ -5,7 +5,10 @@