From f7eae18a06ffbac6a3b47b85466b6d1f45d2ab15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B8=B8=E7=86=9F=E5=90=B4=E5=BD=A6=E7=A5=96?= Date: Tue, 23 Dec 2025 15:25:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(check):=20=E6=9B=B4=E6=96=B0=E7=9B=98?= =?UTF-8?q?=E7=82=B9=E5=A4=84=E7=90=86=E6=9C=BA=E5=88=B6=E5=92=8C=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E5=8F=82=E6=95=B0=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改CountResult实体类中的处理方式常量,从调整库存、忽略差异、重新盘点改为人工处理和系统处理 - 新增manualHandleCount接口用于手动处理盘点结果 - 在PhysicalInventoryMapper中添加获取和更新盘点结果、系统参数等数据库操作方法 - 实现manualHandleCount业务逻辑,包括验证和更新处理标记 - 添加系统参数管理功能,支持开启关闭盘点模式和周期性盘点控制 - 集成系统参数验证和盘点状态检查机制 --- .../PhysicalInventoryController.java | 7 ++ .../modules/check/entity/CountResult.java | 11 ++- .../check/mapper/PhysicalInventoryMapper.java | 14 ++++ .../service/PhysicalInventoryService.java | 21 ++++++ .../impl/PhysicalInventoryServiceImpl.java | 72 +++++++++++++++++++ .../mapper/check/PhysicalInventoryMapper.xml | 28 ++++++++ 6 files changed, 147 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gaotao/modules/check/controller/PhysicalInventoryController.java b/src/main/java/com/gaotao/modules/check/controller/PhysicalInventoryController.java index 2d0d12f..dbd9620 100644 --- a/src/main/java/com/gaotao/modules/check/controller/PhysicalInventoryController.java +++ b/src/main/java/com/gaotao/modules/check/controller/PhysicalInventoryController.java @@ -421,4 +421,11 @@ public class PhysicalInventoryController { int result = physicalInventoryService.saveExceptionHandle(site, countNo, username, exceptionList); return R.ok().put("result", result); } + + + @PostMapping("/manualHandleCount") + public R manualHandleCount(@RequestBody CountResultData query) { + physicalInventoryService.manualHandleCount(query); + return R.ok(); + } } diff --git a/src/main/java/com/gaotao/modules/check/entity/CountResult.java b/src/main/java/com/gaotao/modules/check/entity/CountResult.java index 740b65f..7684cc3 100644 --- a/src/main/java/com/gaotao/modules/check/entity/CountResult.java +++ b/src/main/java/com/gaotao/modules/check/entity/CountResult.java @@ -187,11 +187,10 @@ public class CountResult { /** 处理标记:已处理 - rqrq */ public static final String HANDLE_FLAG_YES = "Y"; - /** 处理方式:调整库存 - rqrq */ - public static final String HANDLE_TYPE_ADJUST = "ADJUST"; - /** 处理方式:忽略差异 - rqrq */ - public static final String HANDLE_TYPE_IGNORE = "IGNORE"; - /** 处理方式:重新盘点 - rqrq */ - public static final String HANDLE_TYPE_RECOUNT = "RECOUNT"; + /** 处理方式:人工处理 - rqrq */ + public static final String HANDLE_TYPE_MANUAL = "MANUAL"; + /** 处理方式:系统处理 - rqrq */ + public static final String HANDLE_TYPE_SYSTEM = "SYSTEM"; + } diff --git a/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java b/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java index e54b0b2..b8b7f07 100644 --- a/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java +++ b/src/main/java/com/gaotao/modules/check/mapper/PhysicalInventoryMapper.java @@ -9,6 +9,7 @@ import com.gaotao.modules.automatedWarehouse.entity.WmsOrderTaskDetailData; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.Date; import java.util.List; /** @@ -575,4 +576,17 @@ public interface PhysicalInventoryMapper extends BaseMapper { @Param("countNo") String countNo, @Param("unitId") String unitId, @Param("palletId") String palletId, @Param("handleFlag") String handleFlag, @Param("handleType") String handleType, @Param("username") String username); + + CountResultData getCountResultById(Long id); + + void updateCountResultHandleFlagForId(@Param("id") Long id,@Param("handleFlag") String handleFlag); + + String getSysIfCount(@Param("site") String site); + + + String getSysCountCycle(@Param("site") String site); + + void updateLastPandianHU(@Param("site") String site,@Param("lastPandian") Date lastPandian); + + void updateSysIfCount(@Param("site") String site,@Param("value") String value); } diff --git a/src/main/java/com/gaotao/modules/check/service/PhysicalInventoryService.java b/src/main/java/com/gaotao/modules/check/service/PhysicalInventoryService.java index ab2072e..db119ae 100644 --- a/src/main/java/com/gaotao/modules/check/service/PhysicalInventoryService.java +++ b/src/main/java/com/gaotao/modules/check/service/PhysicalInventoryService.java @@ -370,4 +370,25 @@ public interface PhysicalInventoryService { */ int saveExceptionHandle(String site, String countNo, String username, java.util.List> exceptionList); + + void manualHandleCount( CountResultData data); + + /** + * @Description 根据工厂获取系统参数判断当前是否盘点模式 + * @param site 工厂编码 + * @return String 结果 Y 可以盘点 N不可盘点 + * @author rqrq + */ + String getSysIfCount(String site); + + /** + * + * @description 开启或者关闭盘点模式 + * @author 常熟吴彦祖 + * @date 2025/12/23 13:52 + * @return void + */ + void updateSysIfCount(String site, String value); + + } diff --git a/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java b/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java index 7f7b401..8562b7d 100644 --- a/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java +++ b/src/main/java/com/gaotao/modules/check/service/impl/PhysicalInventoryServiceImpl.java @@ -20,6 +20,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; import java.math.BigDecimal; +import java.time.*; import java.util.*; import java.util.stream.Collectors; import java.util.Set; @@ -1867,6 +1868,77 @@ public class PhysicalInventoryServiceImpl extends ServiceImpl 12) { + throw new RuntimeException("盘点周期必须在1-12之间"); + } + YearMonth now = YearMonth.now(); // 获取当前年月 + int currentMonth = now.getMonthValue(); // 1~12 + // 计算当前处于第几个周期(从0开始) + int lastCompletedCycleIndex = (currentMonth - 1) / cycle; + + int month; + if (lastCompletedCycleIndex < 0) { + month= 0; + } else { + // 上一周期的最后一个月 + month= (lastCompletedCycleIndex ) * cycle; + } + // 获取当前年份 + int currentYear = LocalDate.now().getYear(); + YearMonth yearMonth = YearMonth.of(currentYear, month); + LocalDate lastDay = yearMonth.atEndOfMonth(); + LocalDateTime lastDayTime = lastDay.atTime(23, 59, 59); + Date lastPandian=Date.from(lastDayTime.atZone(ZoneId.of("Asia/Shanghai")).toInstant()); + log.info("获得上次盘点结束日期: {}", lastPandian.toString()); + baseMapper.updateLastPandianHU(site, lastPandian); + //开启盘点模式 + + }else { + if("N".equals(nowStatus)){ + throw new RuntimeException("盘点模式已关闭,无需重复关闭"); + } + // 盘点单结束才能退出盘点)- rqrq + CountHeaderData activeCount = baseMapper.checkActiveCountExists(site); + if (activeCount != null) { + throw new RuntimeException("存在进行中的盘点单:" + activeCount.getCountNo() + "(" + activeCount.getStatusDesc() + "),请先完成或取消该盘点单"); + } + + } + + baseMapper.updateSysIfCount(site, value); + } /** * @Description 盘点完成后处理任务单(与RFID接口逻辑一致)- rqrq diff --git a/src/main/resources/mapper/check/PhysicalInventoryMapper.xml b/src/main/resources/mapper/check/PhysicalInventoryMapper.xml index 814faff..772dfd4 100644 --- a/src/main/resources/mapper/check/PhysicalInventoryMapper.xml +++ b/src/main/resources/mapper/check/PhysicalInventoryMapper.xml @@ -1004,4 +1004,32 @@ + + + UPDATE count_result + SET handle_flag = #{handleFlag} + WHERE id = #{id} + + + + + + + + update handling_unit set count_flag='N' where site=#{site} and count_flag='Y' and #{lastPandian}> isnull(last_count_date,'2000-01-01') + + + + update sysParameters set paraValue=#{value} where site=#{site} and parameterId='10001' + +