From 0666085986dc365a39098c3ed22dfab7e8dd99fb Mon Sep 17 00:00:00 2001 From: gaowdong Date: Wed, 9 Jul 2025 13:47:00 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=93=E5=AD=98=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ImsInventoryController.java | 7 +- .../core/ims/domain/ImsIntoInventory.java | 8 +++ .../ims/domain/ImsIntoInventoryDetail.java | 24 +++++++ .../canteen/core/ims/domain/ImsInventory.java | 28 ++++++++ .../core/ims/domain/ImsOutInventory.java | 10 ++- .../ims/domain/param/ImsOutInventoryAdd.java | 9 ++- .../param/ImsOutInventoryDetailAdd.java | 2 - .../domain/param/ImsOutInventoryQuery.java | 3 + .../domain/param/ImsOutInventoryUpdate.java | 7 +- .../domain/vo/ImsIntoInventoryDetailVO.java | 28 ++++++++ .../ims/domain/vo/ImsIntoInventoryVO.java | 8 +++ .../core/ims/domain/vo/ImsInventoryVO.java | 44 ++++++++++++ .../core/ims/domain/vo/ImsOutInventoryVO.java | 16 +++++ .../ims/mapper/ImsIntoInventoryMapper.java | 32 +++++---- .../ims/service/IImsInventoryService.java | 2 +- .../impl/ImsIntoInventoryServiceImpl.java | 4 +- .../service/impl/ImsInventoryServiceImpl.java | 29 ++++++-- .../impl/ImsOutInventoryServiceImpl.java | 47 ++++++++++++ .../mapper/ims/ImsIntoInventoryMapper.xml | 72 +++++++++++++++++-- .../mapper/ims/ImsInventoryMapper.xml | 15 +++- .../mapper/ims/ImsOutInventoryMapper.xml | 14 +++- 21 files changed, 368 insertions(+), 41 deletions(-) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/controller/ImsInventoryController.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/controller/ImsInventoryController.java index 339265e..0050276 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/controller/ImsInventoryController.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/controller/ImsInventoryController.java @@ -90,7 +90,12 @@ public class ImsInventoryController extends BaseController @PostMapping public AjaxResult add(@RequestBody ImsInventoryAdd imsInventoryAdd) { - return toAjax(imsInventoryService.insertImsInventory(imsInventoryAdd)); + try { + imsInventoryService.insertImsInventory(imsInventoryAdd); + }catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + return AjaxResult.success(); } /** diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventory.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventory.java index f4b6162..fda78e1 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventory.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventory.java @@ -98,6 +98,14 @@ public class ImsIntoInventory extends BaseEntity @Excel(name = "仓库名称") private String warehouseName; + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; + @ApiModelProperty("开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime startDateTime; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventoryDetail.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventoryDetail.java index e702e7f..596fb2c 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventoryDetail.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsIntoInventoryDetail.java @@ -128,4 +128,28 @@ public class ImsIntoInventoryDetail extends BaseEntity @Excel(name = "供应商名称") private String supplierName; + @ApiModelProperty(value = "材料名称") + @Excel(name = "材料名称") + private String materialName; + + @ApiModelProperty(value = "货品类别") + @Excel(name = "货品类别") + private String materialTypeName; + + @ApiModelProperty(value = "计量单位") + @Excel(name = "计量单位") + private String unitName; + + @ApiModelProperty(value = "条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty(value = "货品规格") + @Excel(name = "货品规格") + private String materialSize; + + @ApiModelProperty(value = "货品编码") + @Excel(name = "货品编码") + private String materialCode; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsInventory.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsInventory.java index e16db4d..cf7690a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsInventory.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsInventory.java @@ -82,4 +82,32 @@ public class ImsInventory extends BaseEntity /** 出库数量 */ @ApiModelProperty(value = "出库数量") private BigDecimal fetchNum; + + @ApiModelProperty(value = "货品类别") + @Excel(name = "货品类别") + private String materialTypeName; + + @ApiModelProperty(value = "计量单位") + @Excel(name = "计量单位") + private String unitName; + + @ApiModelProperty(value = "条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty(value = "货品规格") + @Excel(name = "货品规格") + private String size; + + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; + + @ApiModelProperty(value = "货品编码") + @Excel(name = "货品编码") + private String materialCode; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsOutInventory.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsOutInventory.java index 6c7546d..552f906 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsOutInventory.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/ImsOutInventory.java @@ -95,7 +95,15 @@ public class ImsOutInventory extends BaseEntity @ApiModelProperty(value = "领料人") @Excel(name = "领料人") - private String fetchUserName; + private String fetchUser; + + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; @ApiModelProperty("开始时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryAdd.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryAdd.java index efa5d9d..adf9226 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryAdd.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryAdd.java @@ -3,6 +3,8 @@ package com.bonus.canteen.core.ims.domain.param; import java.math.BigDecimal; import java.util.List; import java.time.LocalDateTime; + +import com.bonus.common.core.annotation.Excel; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -41,11 +43,11 @@ public class ImsOutInventoryAdd implements Serializable /** 出库时间 */ @ApiModelProperty(value = "出库时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @NotNull(message = "出库时间不能为空") private LocalDateTime outDate; /** 领取人id */ @ApiModelProperty(value = "领取人id") - @NotNull(message = "领取人id不能为空") private Long fetchUserId; /** 总数量 */ @@ -68,8 +70,6 @@ public class ImsOutInventoryAdd implements Serializable /** 总金额 */ @ApiModelProperty(value = "总金额") - @NotNull(message = "总金额不能为空") - @Min(value = 0, message = "总金额不能小于0") private Long totalAmount; /** 采购计划ID */ @@ -84,6 +84,9 @@ public class ImsOutInventoryAdd implements Serializable @ApiModelProperty(value = "调拨单号") private String goodsAllocationId; + @ApiModelProperty(value = "领料人") + private String fetchUser; + // /** 删除标志(0代表存在 2代表删除) */ // private String delFlag; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryDetailAdd.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryDetailAdd.java index 012bc72..eb8ebea 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryDetailAdd.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryDetailAdd.java @@ -42,7 +42,6 @@ public class ImsOutInventoryDetailAdd implements Serializable /** 总价 */ @ApiModelProperty(value = "总价") - @NotNull(message = "总价不能为空") private Long totalPrice; /** 入库批次详情id */ @@ -59,7 +58,6 @@ public class ImsOutInventoryDetailAdd implements Serializable /** 出库原料照片 */ @ApiModelProperty(value = "出库原料照片") - @NotNull(message = "出库原料照片不能为空") private String imgUrl; /** 是否透支库存明细(1是2否) */ diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryQuery.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryQuery.java index 81edd5a..5dd61cd 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryQuery.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryQuery.java @@ -82,4 +82,7 @@ public class ImsOutInventoryQuery implements Serializable @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endDateTime; + @ApiModelProperty(value = "领料人") + private String fetchUser; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryUpdate.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryUpdate.java index e69ca70..f7a3ed2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryUpdate.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ImsOutInventoryUpdate.java @@ -42,11 +42,11 @@ public class ImsOutInventoryUpdate implements Serializable /** 出库时间 */ @ApiModelProperty(value = "出库时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @NotNull(message = "出库时间不能为空") private LocalDateTime outDate; /** 领取人id */ @ApiModelProperty(value = "领取人id") - @NotNull(message = "领取人id不能为空") private Long fetchUserId; /** 总数量 */ @@ -68,8 +68,6 @@ public class ImsOutInventoryUpdate implements Serializable /** 总金额 */ @ApiModelProperty(value = "总金额") - @NotNull(message = "总金额不能为空") - @Min(value = 0, message = "总金额不能小于0") private Long totalAmount; /** 采购计划ID */ @@ -84,6 +82,9 @@ public class ImsOutInventoryUpdate implements Serializable @ApiModelProperty(value = "调拨单号") private String goodsAllocationId; + @ApiModelProperty(value = "领料人") + private String fetchUser; + // /** 删除标志(0代表存在 2代表删除) */ // private String delFlag; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryDetailVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryDetailVO.java index 600968e..488c84b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryDetailVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryDetailVO.java @@ -121,4 +121,32 @@ public class ImsIntoInventoryDetailVO extends BaseEntity @Excel(name = "关联送货单明细id") private Long relateDeliveryGoodsDetailId; + @ApiModelProperty(value = "供应商名称") + @Excel(name = "供应商名称") + private String supplierName; + + @ApiModelProperty(value = "材料名称") + @Excel(name = "材料名称") + private String materialName; + + @ApiModelProperty(value = "货品类别") + @Excel(name = "货品类别") + private String materialTypeName; + + @ApiModelProperty(value = "计量单位") + @Excel(name = "计量单位") + private String unitName; + + @ApiModelProperty(value = "条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty(value = "货品规格") + @Excel(name = "货品规格") + private String materialSize; + + @ApiModelProperty(value = "货品编码") + @Excel(name = "货品编码") + private String materialCode; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryVO.java index 555cb10..773d2a3 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsIntoInventoryVO.java @@ -95,6 +95,14 @@ public class ImsIntoInventoryVO extends BaseEntity @Excel(name = "仓库名称") private String warehouseName; + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; + /** 入库记录明细信息 */ private List imsIntoInventoryDetailVOList; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsInventoryVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsInventoryVO.java index fc0aac2..1055d90 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsInventoryVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsInventoryVO.java @@ -57,4 +57,48 @@ public class ImsInventoryVO extends BaseEntity @Excel(name = "库存状态(1-正常,2-不足,3-超额)") private Long inventoryStatus; + @ApiModelProperty(value = "仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + + @ApiModelProperty(value = "货品类别") + @Excel(name = "货品类别") + private String materialTypeName; + + @ApiModelProperty(value = "货品编码") + @Excel(name = "货品编码") + private String materialCode; + + @ApiModelProperty(value = "计量单位") + @Excel(name = "计量单位") + private String unitName; + + @ApiModelProperty(value = "条码") + @Excel(name = "条码") + private String barCode; + + @ApiModelProperty(value = "货品规格") + @Excel(name = "货品规格") + private String size; + + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; + + @ApiModelProperty(value = "材料名称") + @Excel(name = "材料名称") + private String materialName; + + @ApiModelProperty(value = "库存金额") + @Excel(name = "库存金额") + private BigDecimal totalPrice; + + @ApiModelProperty(value = "总库存数") + @Excel(name = "总库存数") + private BigDecimal totalNum; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsOutInventoryVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsOutInventoryVO.java index 18bcb82..012947b 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsOutInventoryVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/ImsOutInventoryVO.java @@ -86,6 +86,22 @@ public class ImsOutInventoryVO extends BaseEntity @Excel(name = "调拨单号") private String goodsAllocationId; + @ApiModelProperty(value = "领料人") + @Excel(name = "领料人") + private String fetchUser; + + @ApiModelProperty(value = "区域名称") + @Excel(name = "区域名称") + private String areaName; + + @ApiModelProperty(value = "区域ID") + @Excel(name = "区域ID") + private String areaId; + + @ApiModelProperty(value = "仓库名称") + @Excel(name = "仓库名称") + private String warehouseName; + /** 出库记录明细信息 */ private List imsOutInventoryDetailVOList; diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ImsIntoInventoryMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ImsIntoInventoryMapper.java index 4ebd0c6..d75206d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ImsIntoInventoryMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ImsIntoInventoryMapper.java @@ -1,20 +1,20 @@ package com.bonus.canteen.core.ims.mapper; +import java.math.BigDecimal; import java.util.List; import com.bonus.canteen.core.ims.domain.ImsIntoInventory; import com.bonus.canteen.core.ims.domain.ImsIntoInventoryDetail; /** * 入库记录Mapper接口 - * + * * @author gaowdong * @date 2025-07-07 */ -public interface ImsIntoInventoryMapper -{ +public interface ImsIntoInventoryMapper { /** * 查询入库记录 - * + * * @param intoId 入库记录主键 * @return 入库记录 */ @@ -22,7 +22,7 @@ public interface ImsIntoInventoryMapper /** * 查询入库记录列表 - * + * * @param imsIntoInventory 入库记录 * @return 入库记录集合 */ @@ -30,7 +30,7 @@ public interface ImsIntoInventoryMapper /** * 新增入库记录 - * + * * @param imsIntoInventory 入库记录 * @return 结果 */ @@ -38,7 +38,7 @@ public interface ImsIntoInventoryMapper /** * 修改入库记录 - * + * * @param imsIntoInventory 入库记录 * @return 结果 */ @@ -46,7 +46,7 @@ public interface ImsIntoInventoryMapper /** * 删除入库记录 - * + * * @param intoId 入库记录主键 * @return 结果 */ @@ -54,7 +54,7 @@ public interface ImsIntoInventoryMapper /** * 批量删除入库记录 - * + * * @param intoIds 需要删除的数据主键集合 * @return 结果 */ @@ -62,26 +62,30 @@ public interface ImsIntoInventoryMapper /** * 批量删除入库记录明细 - * + * * @param intoIds 需要删除的数据主键集合 * @return 结果 */ public int deleteImsIntoInventoryDetailByIntoIds(Long[] intoIds); - + /** * 批量新增入库记录明细 - * + * * @param imsIntoInventoryDetailList 入库记录明细列表 * @return 结果 */ public int batchImsIntoInventoryDetail(List imsIntoInventoryDetailList); - + /** * 通过入库记录主键删除入库记录明细信息 - * + * * @param intoId 入库记录ID * @return 结果 */ public int deleteImsIntoInventoryDetailByIntoId(Long intoId); + + public List selectImsIntoInventoryDetailListByInventoryId(Long inventoryId); + + public int updateIntoInventoryNum(Long intoDetailId, BigDecimal inventoryNum); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IImsInventoryService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IImsInventoryService.java index f10afd8..86e3762 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IImsInventoryService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IImsInventoryService.java @@ -37,7 +37,7 @@ public interface IImsInventoryService * @param imsInventoryAdd 库存 * @return 结果 */ - public int insertImsInventory(ImsInventoryAdd imsInventoryAdd); + public Long insertImsInventory(ImsInventoryAdd imsInventoryAdd); /** * 修改库存 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsIntoInventoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsIntoInventoryServiceImpl.java index a2a560d..cee1000 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsIntoInventoryServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsIntoInventoryServiceImpl.java @@ -187,6 +187,7 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService imsIntoInventoryDetail.setIntoCode(imsIntoInventory.getIntoCode()); imsIntoInventoryDetail.setCreateTime(DateUtils.getNowDate()); imsIntoInventoryDetail.setCreateBy(SecurityUtils.getUsername()); + imsIntoInventoryDetail.setInventoryNum(imsIntoInventoryDetail.getPurNum()); if(Objects.isNull(imsIntoInventoryDetail.getIfFillInventory())) { imsIntoInventoryDetail.setIfFillInventory(CommonFlagEnum.NO.getKey()); } @@ -210,7 +211,8 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService imsInventoryAdd.setWarehouseId(imsIntoInventory.getWarehouseId()); imsInventoryAdd.setMaterialNum(imsIntoInventoryDetail.getPurNum()); imsInventoryAdd.setUnitId(imsIntoInventoryDetail.getUnitId()); - imsInventoryService.insertImsInventory(imsInventoryAdd); + Long inventoryId = imsInventoryService.insertImsInventory(imsInventoryAdd); + imsIntoInventoryDetail.setInventoryId(inventoryId); } } if (list.size() > 0) diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsInventoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsInventoryServiceImpl.java index 277f716..08f8e95 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsInventoryServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsInventoryServiceImpl.java @@ -1,10 +1,14 @@ package com.bonus.canteen.core.ims.service.impl; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.Objects; +import java.util.stream.Collectors; import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.ims.domain.ImsIntoInventory; import com.bonus.canteen.core.ims.domain.ImsIntoInventoryDetail; import com.bonus.canteen.core.ims.domain.param.ImsInventoryAdd; import com.bonus.canteen.core.ims.domain.param.ImsInventoryQuery; @@ -12,6 +16,7 @@ import com.bonus.canteen.core.ims.domain.param.ImsInventoryUpdate; import com.bonus.canteen.core.ims.domain.vo.ImsIntoInventoryDetailVO; import com.bonus.canteen.core.ims.domain.vo.ImsIntoInventoryVO; import com.bonus.canteen.core.ims.domain.vo.ImsInventoryVO; +import com.bonus.canteen.core.ims.mapper.ImsIntoInventoryMapper; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.security.utils.SecurityUtils; import org.springframework.beans.BeanUtils; @@ -32,6 +37,8 @@ public class ImsInventoryServiceImpl implements IImsInventoryService { @Autowired private ImsInventoryMapper imsInventoryMapper; + @Autowired + private ImsIntoInventoryMapper imsIntoInventoryMapper; /** * 查询库存 @@ -63,12 +70,25 @@ public class ImsInventoryServiceImpl implements IImsInventoryService ImsInventory imsInventory = new ImsInventory(); BeanUtils.copyProperties(imsInventoryQuery, imsInventory); List imsInventoryList = imsInventoryMapper.selectImsInventoryList(imsInventory); - List imsInventoryVOList = null; + List imsInventoryVOList = new ArrayList<>(); if(CollUtil.isNotEmpty(imsInventoryList)) { - imsInventoryVOList = new ArrayList<>(); + Map materialIdCountMap = imsInventoryList.stream() + .collect(Collectors.groupingBy(ImsInventory::getMaterialId, + Collectors.mapping(ImsInventory::getMaterialNum, + Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); for(ImsInventory inventory : imsInventoryList) { + List imsIntoInventoryDetailList = + imsIntoInventoryMapper.selectImsIntoInventoryDetailListByInventoryId(inventory.getInventoryId()); + Map inventoryIdToTotalPrice = imsIntoInventoryDetailList.stream() + .collect(Collectors.groupingBy(ImsIntoInventoryDetail::getInventoryId, + Collectors.mapping(detail -> detail.getInventoryNum().multiply(BigDecimal.valueOf(detail.getUnitPrice())), + Collectors.reducing(BigDecimal.ZERO, BigDecimal::add)))); ImsInventoryVO imsInventoryVO = new ImsInventoryVO(); BeanUtils.copyProperties(inventory, imsInventoryVO); + BigDecimal count = materialIdCountMap.get(inventory.getMaterialId()); + imsInventoryVO.setTotalNum(count == null ? BigDecimal.ZERO : count); + BigDecimal totalPrice = inventoryIdToTotalPrice.get(inventory.getInventoryId()); + imsInventoryVO.setTotalPrice(totalPrice == null ? BigDecimal.ZERO : totalPrice); imsInventoryVOList.add(imsInventoryVO); } } @@ -82,7 +102,7 @@ public class ImsInventoryServiceImpl implements IImsInventoryService * @return 结果 */ @Override - public int insertImsInventory(ImsInventoryAdd imsInventoryAdd) + public Long insertImsInventory(ImsInventoryAdd imsInventoryAdd) { ImsInventory imsInventory = new ImsInventory(); BeanUtils.copyProperties(imsInventoryAdd, imsInventory); @@ -90,7 +110,8 @@ public class ImsInventoryServiceImpl implements IImsInventoryService imsInventory.setCreateBy(SecurityUtils.getUsername()); imsInventory.setUpdateBy(SecurityUtils.getUsername()); imsInventory.setUpdateTime(DateUtils.getNowDate()); - return imsInventoryMapper.insertImsInventory(imsInventory); + imsInventoryMapper.insertImsInventory(imsInventory); + return imsInventory.getInventoryId(); } /** diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsOutInventoryServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsOutInventoryServiceImpl.java index 265b4eb..d03fdb4 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsOutInventoryServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ImsOutInventoryServiceImpl.java @@ -4,10 +4,12 @@ import java.math.BigDecimal; import java.util.List; import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.ims.domain.ImsIntoInventoryDetail; import com.bonus.canteen.core.ims.domain.param.*; import com.bonus.canteen.core.ims.domain.vo.ImsIntoInventoryVO; import com.bonus.canteen.core.ims.domain.vo.ImsOutInventoryDetailVO; import com.bonus.canteen.core.ims.domain.vo.ImsOutInventoryVO; +import com.bonus.canteen.core.ims.mapper.ImsIntoInventoryMapper; import com.bonus.canteen.core.ims.service.IImsInventoryService; import com.bonus.canteen.core.ims.utils.NoGenerateUtils; import com.bonus.canteen.core.kitchen.domain.constants.CommonFlagEnum; @@ -41,6 +43,8 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService private ImsOutInventoryMapper imsOutInventoryMapper; @Autowired private IImsInventoryService imsInventoryService; + @Autowired + private ImsIntoInventoryMapper imsIntoInventoryMapper; /** * 查询出库记录 @@ -110,6 +114,7 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService imsOutInventory.setCreateTime(DateUtils.getNowDate()); imsOutInventory.setCreateBy(SecurityUtils.getUsername()); imsOutInventory.setOutCode(NoGenerateUtils.generateOutCode()); + imsOutInventory.setTotalAmount(0L); int rows = imsOutInventoryMapper.insertImsOutInventory(imsOutInventory); insertImsOutInventoryDetail(imsOutInventoryAdd.getImsOutInventoryDetailAddList(), imsOutInventory); return rows; @@ -181,6 +186,7 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService if (StringUtils.isNotNull(imsOutInventoryDetailAddList)) { List list = new ArrayList(); + long totalPriceSum = 0L; for (ImsOutInventoryDetailAdd imsOutInventoryDetailAdd : imsOutInventoryDetailAddList) { ImsOutInventoryDetail imsOutInventoryDetail = new ImsOutInventoryDetail(); @@ -189,6 +195,7 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService imsOutInventoryDetail.setOutCode(imsOutInventory.getOutCode()); imsOutInventoryDetail.setCreateBy(SecurityUtils.getUsername()); imsOutInventoryDetail.setCreateTime(DateUtils.getNowDate()); + imsOutInventoryDetail.setImgUrl(""); if(Objects.isNull(imsOutInventoryDetail.getTotalPrice())) { imsOutInventoryDetail.setTotalPrice(0L); } @@ -202,6 +209,9 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService || imsOutInventoryDetail.getInventoryId() < 0) { throw new ServiceException("库存ID不能为空"); } + if(Objects.isNull(imsOutInventoryDetail.getFetchNum())) { + throw new ServiceException("出库数量不能为空"); + } ImsInventoryUpdate imsInventoryUpdate = new ImsInventoryUpdate(); imsInventoryUpdate.setInventoryId(imsOutInventoryDetail.getInventoryId()); imsInventoryUpdate.setFetchNum(imsOutInventoryDetail.getFetchNum()); @@ -209,11 +219,48 @@ public class ImsOutInventoryServiceImpl implements IImsOutInventoryService if(rows < 1) { throw new ServiceException("库存不足"); } + if(Objects.isNull(imsOutInventoryDetail.getIntoDetailId())) { + List imsIntoInventoryDetailList = imsIntoInventoryMapper + .selectImsIntoInventoryDetailListByInventoryId(imsOutInventoryDetail.getInventoryId()); + BigDecimal tempFetchLeftNum = imsOutInventoryDetail.getFetchNum(); + long totalPrice = 0L; + for(ImsIntoInventoryDetail imsIntoInventoryDetail : imsIntoInventoryDetailList) { + if(tempFetchLeftNum.compareTo(BigDecimal.ZERO) == 0) { + break; + } + if(imsIntoInventoryDetail.getInventoryNum().compareTo(tempFetchLeftNum) <= 0) { + int updateRows = imsIntoInventoryMapper. + updateIntoInventoryNum(imsIntoInventoryDetail.getIntoDetailId(), imsIntoInventoryDetail.getInventoryNum()); + if(updateRows > 0) { + tempFetchLeftNum = tempFetchLeftNum.subtract(imsIntoInventoryDetail.getInventoryNum()); + totalPrice += (imsIntoInventoryDetail.getInventoryNum() + .multiply(BigDecimal.valueOf(imsIntoInventoryDetail.getUnitPrice()))).longValue(); + } + }else { + int updateRows = imsIntoInventoryMapper. + updateIntoInventoryNum(imsIntoInventoryDetail.getIntoDetailId(), tempFetchLeftNum); + if(updateRows > 0) { + tempFetchLeftNum = tempFetchLeftNum.subtract(tempFetchLeftNum); + totalPrice += (tempFetchLeftNum + .multiply(BigDecimal.valueOf(imsIntoInventoryDetail.getUnitPrice()))).longValue(); + } + } + } + if(tempFetchLeftNum.compareTo(BigDecimal.ZERO) > 0) { + throw new ServiceException("出口失败,库存不足"); + } + imsOutInventoryDetail.setTotalPrice(totalPrice); + totalPriceSum += totalPrice; + } } } if (list.size() > 0) { imsOutInventoryMapper.batchImsOutInventoryDetail(list); + ImsOutInventory imsOutInventoryUpdate = new ImsOutInventory(); + imsOutInventoryUpdate.setOutId(outId); + imsOutInventoryUpdate.setTotalAmount(totalPriceSum); + imsOutInventoryMapper.updateImsOutInventory(imsOutInventoryUpdate); } } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsIntoInventoryMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsIntoInventoryMapper.xml index 57eaa07..c748e4a 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsIntoInventoryMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsIntoInventoryMapper.xml @@ -26,6 +26,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + @@ -59,15 +61,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + select into_id, into_code, iii.warehouse_id, into_date, total_num, into_type, status, refund_out_id, relate_delivery_goods_id, total_amount, relate_order_goods_id, relate_inspect_goods_id, into_relate_out_id, goods_allocation_id, remark, iii.del_flag, - iii.create_by, iii.create_time, iii.update_by, iii.update_time, iwi.warehouse_name + iii.create_by, iii.create_time, iii.update_by, iii.update_time, iwi.warehouse_name, + ba.area_name, ba.area_id from ims_into_inventory iii left join ims_warehouse_info iwi on iii.warehouse_id = iwi.warehouse_id + left join basic_area ba on iwi.area_id = ba.area_id + + insert into ims_into_inventory @@ -217,4 +269,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" ( #{item.intoDetailId}, #{item.intoId}, #{item.intoCode}, #{item.inventoryId}, #{item.materialId}, #{item.supplierId}, #{item.unitId}, #{item.size}, #{item.unitPrice}, #{item.totalPrice}, #{item.deliveryNum}, #{item.purNum}, #{item.unqualifiedNum}, #{item.inventoryNum}, #{item.productDate}, #{item.expireTime}, #{item.imgUrl}, #{item.ifFillInventory}, #{item.relateOrderGoodsDetailId}, #{item.relateDeliveryGoodsDetailId}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + update ims_into_inventory_detail + set inventory_num = inventory_num - #{fetchNum} + where into_detail_id = #{intoDetailId} + AND inventory_num >= #{fetchNum} + AND del_flag = '0' + \ No newline at end of file diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsInventoryMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsInventoryMapper.xml index bea887d..1f42e34 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsInventoryMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ImsInventoryMapper.xml @@ -21,15 +21,26 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + - select inventory_id, ii.warehouse_id, ii.material_id, ii.unit_id, min_num, max_num, + select ii.inventory_id, ii.warehouse_id, ii.material_id, ii.unit_id, min_num, max_num, material_num, inventory_status, remark, ii.del_flag, ii.create_by, ii.create_time, - ii.update_by, ii.update_time, iwi.warehouse_name, cm.material_name + ii.update_by, ii.update_time, iwi.warehouse_name, cm.material_name, cmt.material_type_name, + iu.unit_name, cm.bar_code, cm.size, ba.area_name, ba.area_id, cm.material_code from ims_inventory ii left join ims_warehouse_info iwi on ii.warehouse_id = iwi.warehouse_id left join cook_material cm on ii.material_id = cm.material_id + left join cook_material_type cmt on cm.material_type_id = cmt.material_type_id + left join ims_unit iu on ii.unit_id = iu.unit_id + left join basic_area ba on iwi.area_id = ba.area_id @@ -113,6 +118,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" warehouse_id, out_date, fetch_user_id, + fetch_user, total_num, out_type, status, @@ -133,6 +139,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{warehouseId}, #{outDate}, #{fetchUserId}, + #{fetchUser}, #{totalNum}, #{outType}, #{status}, @@ -157,6 +164,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" warehouse_id = #{warehouseId}, out_date = #{outDate}, fetch_user_id = #{fetchUserId}, + fetch_user = #{fetchUser}, total_num = #{totalNum}, out_type = #{outType}, status = #{status},