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' + +