diff --git a/dbhelper.jar b/dbhelper.jar index 63c1316..d572b1e 100644 Binary files a/dbhelper.jar and b/dbhelper.jar differ diff --git a/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java b/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java index 25804d4..fb4dadb 100644 --- a/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java +++ b/src/main/java/com/syjiaer/clinic/server/common/config/ControllerAspect.java @@ -43,6 +43,7 @@ public class ControllerAspect { result.setData(null); result.setCode(101); log.error(e.getMessage()); + e.printStackTrace(); return result; } } diff --git a/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java b/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java index de7a076..1a48bd4 100644 --- a/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java +++ b/src/main/java/com/syjiaer/clinic/server/entity/inventory/Inventory.java @@ -80,4 +80,7 @@ public class Inventory implements Serializable { @ApiModelProperty("标识码 由追溯码生成") private String idCodes; + + @ApiModelProperty("警告日期") + private LocalDate warmDate; } diff --git a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java index 79702d1..add6a83 100644 --- a/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java +++ b/src/main/java/com/syjiaer/clinic/server/mapper/inventory/InventoryMapper.java @@ -20,14 +20,14 @@ import java.util.Map; */ public interface InventoryMapper extends BaseMapper { @Select("SELECT" + - " inventory.*,goods.expiry_warn_days,goods.unit_price,EXTRACT(EPOCH FROM AGE(expiry_date, CURRENT_DATE)) / 86400 AS remaining_days" + + " inventory.*,goods.expiry_warn_days,goods.unit_price" + " FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" + - " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT #{limit} offset #{offset} ") + " WHERE CURRENT_DATE >= inventory.warm_date AND inventory.whole_number !=0 ORDER BY inventory.expiry_date ASC LIMIT #{limit} offset #{offset} ") List> selectExpiryWarn(@Param("limit") Integer limit, @Param("offset") Integer offset); @Select("SELECT" + " count(1)" + " FROM inventory LEFT JOIN goods ON inventory.good_id = goods.id" + - " WHERE CURRENT_DATE + INTERVAL '1 day' * goods.expiry_warn_days >= inventory.expiry_date AND inventory.whole_number !=0 ") + " WHERE CURRENT_DATE >= inventory.warm_date AND inventory.whole_number !=0 ") Long countExpiryWarn(); } diff --git a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java index a563b34..23f8c07 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/goods/GoodsService.java @@ -38,6 +38,7 @@ import java.time.LocalDate; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Objects; @Service public class GoodsService extends BaseService { @@ -97,6 +98,21 @@ public class GoodsService extends BaseService { } else { //修改建档信息 Goods dbGoods = goodsMapper.selectById(goods.getId()); + + if (!Objects.equals(dbGoods.getExpiryWarnDays(), goods.getExpiryWarnDays())) + { + QueryWrapper inventoryWrapper = new QueryWrapper<>(); + + inventoryWrapper.eq("good_id", goods.getId()); + + List inventoryList = inventoryMapper.selectList(inventoryWrapper); + + for (Inventory inventory : inventoryList) { + inventory.setWarmDate(inventory.getExpiryDate().minusDays(goods.getExpiryWarnDays())); + inventoryMapper.updateById(inventory); + } + } + goodsMapper.updateById(goods); if (!dbGoods.getTrdnFlag().equals(goods.getTrdnFlag())) { // todo 拆零标志变化 重新初始化医保库存 diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java index 17cd10d..38b130d 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryPurchaseService.java @@ -136,6 +136,11 @@ public class InventoryPurchaseService extends BaseService { remark = Constants.InitInventory; } inventory.setRefererType(refererTypeEnum.getType()); + + if (goods.getExpiryWarnDays() != null && goods.getExpiryWarnDays() > 0) { + inventory.setWarmDate(inventory.getExpiryDate().minusDays(goods.getExpiryWarnDays())); + } + inventoryMapper.insert(inventory); if (init != null) { init.setInventoryId(inventory.getId()); diff --git a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java index 2687501..8873969 100644 --- a/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java +++ b/src/main/java/com/syjiaer/clinic/server/service/inventory/InventoryService.java @@ -31,7 +31,9 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; +import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -257,12 +259,18 @@ public class InventoryService extends BaseService { Integer limit = pageSize; Integer offset = (pageNum - 1) * pageSize; Long totalCount = inventoryMapper.countExpiryWarn(); + + System.out.println(totalCount); + int totalPage= (int) (totalCount % pageSize == 0 ? totalCount / pageSize : totalCount / pageSize + 1); List> maps = inventoryMapper.selectExpiryWarn(limit, offset); + + for (Map map : maps) { + long days = LocalDate.now().until(LocalDate.parse(map.get("expiry_date").toString()), ChronoUnit.DAYS); + map.put("remaining_days",days); + } + Page> page = new Page<>(); - page.setList(maps); - page.setTotal_page(totalPage); - page.setTotal_count(totalCount); return page; }