diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoods.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoods.java index cc663ef..55e8c77 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoods.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoods.java @@ -176,6 +176,12 @@ public class OrderGoods extends BaseEntity { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endDateTime; + @ApiModelProperty(value = "采购合同编号") + private String contractCode; + + @ApiModelProperty("是否全部入库 查询条件 非空即查入库量小于订单量的数据") + private Integer ifTotalIntoInventory; + private List orderGoodsDetailList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoodsDetail.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoodsDetail.java index 98d3749..35ccf15 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoodsDetail.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/OrderGoodsDetail.java @@ -28,6 +28,10 @@ public class OrderGoodsDetail extends BaseEntity { @ApiModelProperty(value = "订货单id") private Long orderGoodsId; + @Excel(name = "订货单编号") + @ApiModelProperty(value = "订货单编号") + private String orderGoodsCode; + /** 原料id */ @Excel(name = "原料id") @ApiModelProperty(value = "原料id") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/InspectGoodsUpdate.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/InspectGoodsUpdate.java index ed2f41f..d43ee24 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/InspectGoodsUpdate.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/InspectGoodsUpdate.java @@ -110,6 +110,10 @@ public class InspectGoodsUpdate implements Serializable { @ApiModelProperty(value = "备注") private String remark; + @Excel(name = "采购订单Id,逗号分隔存储") + @ApiModelProperty(value = "采购订单Id,逗号分隔存储") + private String orderGoodsId; + private List inspectGoodsDetails; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsAdd.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsAdd.java index dbf96a7..3601a1f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsAdd.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsAdd.java @@ -144,6 +144,9 @@ public class OrderGoodsAdd implements Serializable { @ApiModelProperty(value = "备注") private String remark; + @ApiModelProperty(value = "采购合同编号") + private String contractCode; + private List orderGoodsDetailList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsQuery.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsQuery.java index cb86756..3fd1b83 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsQuery.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsQuery.java @@ -68,4 +68,6 @@ public class OrderGoodsQuery implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime endDateTime; + @ApiModelProperty("是否全部入库 查询条件 非空即查入库量小于订单量的数据") + private Integer ifTotalIntoInventory; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsUpdate.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsUpdate.java index 759f4b5..0dbea72 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsUpdate.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/OrderGoodsUpdate.java @@ -145,6 +145,13 @@ public class OrderGoodsUpdate implements Serializable { @ApiModelProperty(value = "备注") private String remark; + @ApiModelProperty(value = "采购合同编号") + private String contractCode; + + @Excel(name = "采购计划编号,逗号分隔存储") + @ApiModelProperty(value = "采购计划编号,逗号分隔存储") + private String purchasePlanCode; + private List orderGoodsDetailList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ProductionPlanUpdate.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ProductionPlanUpdate.java index 3ebcc67..9dc8310 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ProductionPlanUpdate.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/ProductionPlanUpdate.java @@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import lombok.ToString; +import javax.validation.constraints.NotNull; import java.util.Date; import java.util.List; @@ -90,6 +91,11 @@ public class ProductionPlanUpdate extends BaseEntity { @ApiModelProperty(value = "备注") private String remark; + @ApiModelProperty(value = "货品类型(1 菜品 2 商品 )") + @Excel(name = "货品类型(1 菜品 2 商品 )") + @NotNull(message = "货品类型不能为空") + private Integer goodsType; + @ApiModelProperty(value = "生成计划详情列表") private List productionPlanDetailAddList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/PurchasePlanUpdate.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/PurchasePlanUpdate.java index 347f297..6d7e970 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/PurchasePlanUpdate.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/param/PurchasePlanUpdate.java @@ -47,7 +47,7 @@ public class PurchasePlanUpdate implements Serializable { /** 采购计划Id,逗号分隔存储 */ @Excel(name = "采购计划Id,逗号分隔存储") @ApiModelProperty(value = "采购计划Id,逗号分隔存储") - private String productionPlanId; + private String productionPlanCode; /** 采购审批状态(1待审批,2审批中,3审批同意,4审批拒绝) */ @Excel(name = "采购审批状态(1待审批,2审批中,3审批同意,4审批拒绝)") diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/InspectGoodsSum.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/InspectGoodsSum.java new file mode 100644 index 0000000..b88192e --- /dev/null +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/InspectGoodsSum.java @@ -0,0 +1,37 @@ +package com.bonus.canteen.core.ims.domain.vo; + +import com.bonus.canteen.core.ims.domain.InspectGoodsDetail; +import com.bonus.common.core.annotation.Excel; +import com.bonus.common.core.web.domain.BaseEntity; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.ToString; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; +import java.util.Map; + +/** + * 验货单对象 ims_inspect_goods + * + * @author xsheng + * @date 2025-06-30 + */ + + +@Data +@ToString +public class InspectGoodsSum { + + /** 累计合格总数量 */ + @ApiModelProperty(value = "累计合格总数量") + private BigDecimal totalQualifiedNum; + + /** 累计合格总数量 */ + @ApiModelProperty(value = "货品累计合格总数量") + private Map individualTotalQualifiedNum; + +} diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsDetailVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsDetailVO.java index 222ea7d..3a4c0e2 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsDetailVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsDetailVO.java @@ -29,6 +29,10 @@ public class OrderGoodsDetailVO extends BaseEntity { @ApiModelProperty(value = "订货单id") private Long orderGoodsId; + @Excel(name = "订货单编号") + @ApiModelProperty(value = "订货单编号") + private String orderGoodsCode; + /** 原料id */ @Excel(name = "原料id") @ApiModelProperty(value = "原料id") @@ -95,4 +99,7 @@ public class OrderGoodsDetailVO extends BaseEntity { @ApiModelProperty(value = "货品类型") private String materialTypeName; + @ApiModelProperty(value = "累计合格总数量") + private BigDecimal totalQualifiedNum; + } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsVO.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsVO.java index 77b87dd..02ed09e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsVO.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/domain/vo/OrderGoodsVO.java @@ -174,6 +174,12 @@ public class OrderGoodsVO extends BaseEntity { @ApiModelProperty(value = "采购计划编号列表") private List purchasePlanCodeList; + @ApiModelProperty(value = "采购合同编号") + private String contractCode; + + @ApiModelProperty(value = "累计合格总数量") + private BigDecimal totalQualifiedNum; + private List orderGoodsDetailList; } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ProductionPurchaseOrderMapper.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ProductionPurchaseOrderMapper.java index b5fcf9e..e9d17b6 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ProductionPurchaseOrderMapper.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/mapper/ProductionPurchaseOrderMapper.java @@ -45,10 +45,10 @@ public interface ProductionPurchaseOrderMapper { /** * 删除生产-采购-订单关联 * - * @param id 生产-采购-订单关联主键 + * @param productionPurchaseOrder 生产-采购-订单关联主键 * @return 结果 */ - public int deleteProductionPurchaseOrderById(Long id); + public int deleteProductionPurchaseOrderById(ProductionPurchaseOrder productionPurchaseOrder); /** * 批量删除生产-采购-订单关联 diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IInspectGoodsService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IInspectGoodsService.java index 7dbc0c9..e33046d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IInspectGoodsService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IInspectGoodsService.java @@ -4,6 +4,7 @@ import java.util.List; import com.bonus.canteen.core.ims.domain.InspectGoods; import com.bonus.canteen.core.ims.domain.param.InspectGoodsAdd; import com.bonus.canteen.core.ims.domain.param.InspectGoodsUpdate; +import com.bonus.canteen.core.ims.domain.vo.InspectGoodsSum; import com.bonus.canteen.core.ims.domain.vo.InspectGoodsVO; /** @@ -60,4 +61,6 @@ public interface IInspectGoodsService { * @return 结果 */ public int deleteInspectGoodsByInspectGoodsId(Long inspectGoodsId); + + public InspectGoodsSum getInspectGoodsListByOrderGoodsCode(String orderGoodsCode); } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IProductionPurchaseOrderService.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IProductionPurchaseOrderService.java index e01d72c..7039b49 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IProductionPurchaseOrderService.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/IProductionPurchaseOrderService.java @@ -56,5 +56,5 @@ public interface IProductionPurchaseOrderService { * @param id 生产-采购-订单关联主键 * @return 结果 */ - public int deleteProductionPurchaseOrderById(Long id); + public int deleteProductionPurchaseOrderById(ProductionPurchaseOrder productionPurchaseOrder); } 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 c80d4dc..ac9e27b 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 @@ -4,10 +4,16 @@ import java.math.BigDecimal; import java.util.List; import cn.hutool.core.collection.CollUtil; +import com.bonus.canteen.core.ims.domain.OrderGoods; +import com.bonus.canteen.core.ims.domain.OrderGoodsDetail; import com.bonus.canteen.core.ims.domain.param.*; import com.bonus.canteen.core.ims.domain.vo.ImsIntoInventoryDetailVO; import com.bonus.canteen.core.ims.domain.vo.ImsIntoInventoryVO; -import com.bonus.canteen.core.ims.service.IImsInventoryService; +import com.bonus.canteen.core.ims.domain.vo.OrderGoodsDetailVO; +import com.bonus.canteen.core.ims.domain.vo.OrderGoodsVO; +import com.bonus.canteen.core.ims.mapper.OrderGoodsDetailMapper; +import com.bonus.canteen.core.ims.mapper.OrderGoodsMapper; +import com.bonus.canteen.core.ims.service.*; import com.bonus.canteen.core.ims.utils.NoGenerateUtils; import com.bonus.canteen.core.kitchen.domain.constants.CommonFlagEnum; import com.bonus.common.core.exception.ServiceException; @@ -25,7 +31,6 @@ import org.springframework.transaction.annotation.Transactional; import com.bonus.canteen.core.ims.domain.ImsIntoInventoryDetail; import com.bonus.canteen.core.ims.mapper.ImsIntoInventoryMapper; import com.bonus.canteen.core.ims.domain.ImsIntoInventory; -import com.bonus.canteen.core.ims.service.IImsIntoInventoryService; /** * 入库记录Service业务层处理 @@ -40,6 +45,16 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService private ImsIntoInventoryMapper imsIntoInventoryMapper; @Autowired private IImsInventoryService imsInventoryService; + @Autowired + private OrderGoodsMapper orderGoodsMapper; + @Autowired + private OrderGoodsDetailMapper orderGoodsDetailMapper; + @Autowired + private IInspectGoodsService inspectGoodsService; + @Autowired + private IOrderGoodsService orderGoodsService; + @Autowired + private IOrderGoodsDetailService orderGoodsDetailService; /** * 查询入库记录 @@ -83,7 +98,7 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService imsIntoInventory.setCreateBy(SecurityUtils.getUsername()); imsIntoInventory.setIntoCode(NoGenerateUtils.generateIntoCode()); int rows = imsIntoInventoryMapper.insertImsIntoInventory(imsIntoInventory); - insertImsIntoInventoryDetail(imsIntoInventoryAdd.getImsIntoInventoryDetailAddList(), imsIntoInventory); + insertImsIntoInventoryDetail(imsIntoInventoryAdd.getImsIntoInventoryDetailAddList(), imsIntoInventory, null); return rows; } @@ -113,7 +128,7 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService imsIntoInventory.setUpdateBy(SecurityUtils.getUsername()); imsIntoInventory.setIntoCode(imsIntoInventoryVO.getIntoCode()); imsIntoInventoryMapper.deleteImsIntoInventoryDetailByIntoId(imsIntoInventory.getIntoId()); - insertImsIntoInventoryDetail(imsIntoInventoryUpdate.getImsIntoInventoryDetailAddList(), imsIntoInventory); + insertImsIntoInventoryDetail(imsIntoInventoryUpdate.getImsIntoInventoryDetailAddList(), imsIntoInventory, imsIntoInventoryVO); return imsIntoInventoryMapper.updateImsIntoInventory(imsIntoInventory); } @@ -157,7 +172,9 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService * * @param imsIntoInventory 入库记录对象 */ - public void insertImsIntoInventoryDetail(List imsIntoInventoryDetailAddList, ImsIntoInventory imsIntoInventory) + public void insertImsIntoInventoryDetail(List imsIntoInventoryDetailAddList, + ImsIntoInventory imsIntoInventory, + ImsIntoInventoryVO imsIntoInventoryVO) { if (StringUtils.isNotNull(imsIntoInventoryDetailAddList)) { @@ -197,6 +214,8 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService imsInventoryAdd.setUnitId(imsIntoInventoryDetail.getUnitId()); Long inventoryId = imsInventoryService.insertImsInventory(imsInventoryAdd); imsIntoInventoryDetail.setInventoryId(inventoryId); + updateOrderGoodsDetail(imsIntoInventoryDetail, imsIntoInventory, imsIntoInventoryVO); + updateOrderGoods(imsIntoInventory, imsIntoInventoryVO); } } if (!list.isEmpty()) @@ -205,4 +224,54 @@ public class ImsIntoInventoryServiceImpl implements IImsIntoInventoryService } } } + + private void updateOrderGoods(ImsIntoInventory imsIntoInventory, + ImsIntoInventoryVO imsIntoInventoryVO) { + if(Objects.isNull(imsIntoInventoryVO) || StringUtils.isBlank(imsIntoInventory.getRelateOrderGoodsId())) { + return; + } + OrderGoods orderGoods = new OrderGoods(); + orderGoods.setOrderGoodsCode(imsIntoInventory.getRelateOrderGoodsId()); + orderGoods.setOrderStatus(2L); + List orderGoodsList = orderGoodsService.selectOrderGoodsList(orderGoods); + if(CollUtil.isEmpty(orderGoodsList) || orderGoodsList.size() > 1) { + throw new ServiceException("关联采购单错误, 采购单不存在或存在多条相同采购订单"); + } + OrderGoodsVO orderGoodsVO = orderGoodsList.get(0); + OrderGoods orderGoodsUpdate = new OrderGoods(); + orderGoodsUpdate.setTotalIntoNum(imsIntoInventory.getTotalNum()); + orderGoodsUpdate.setOrderGoodsId(orderGoodsVO.getOrderGoodsId()); +// if((orderGoodsVO.getTotalIntoNum().add(imsIntoInventory.getTotalNum()) +// .compareTo(orderGoodsVO.getTotalNum().multiply(BigDecimal.valueOf(0.95)) +// )) >= 0) { +// orderGoodsUpdate.setIfAllInspect(1L); +// } + orderGoodsMapper.updateOrderGoods(orderGoodsUpdate); + } + + private void updateOrderGoodsDetail(ImsIntoInventoryDetail imsIntoInventoryDetail, + ImsIntoInventory imsIntoInventory, + ImsIntoInventoryVO imsIntoInventoryVO) { + if(Objects.isNull(imsIntoInventoryVO) || StringUtils.isBlank(imsIntoInventory.getRelateOrderGoodsId())) { + return; + } + OrderGoodsDetail orderGoodsDetailQuery = new OrderGoodsDetail(); + orderGoodsDetailQuery.setOrderGoodsCode(imsIntoInventory.getRelateOrderGoodsId()); + orderGoodsDetailQuery.setMaterialId(imsIntoInventoryDetail.getMaterialId()); + List orderGoodsDetailList = orderGoodsDetailService + .selectOrderGoodsDetailList(orderGoodsDetailQuery); + if(CollUtil.isEmpty(orderGoodsDetailList) || orderGoodsDetailList.size() > 1) { + throw new ServiceException("关联采购单详情错误, 采购单详情不存在或存在多条相同采购订单详情"); + } + OrderGoodsDetailVO orderGoodsDetailVO = orderGoodsDetailList.get(0); + OrderGoodsDetail orderGoodsDetailsUpdate = new OrderGoodsDetail(); + orderGoodsDetailsUpdate.setIntoNum(imsIntoInventoryDetail.getPurNum()); + orderGoodsDetailsUpdate.setOrderGoodsDetailId(orderGoodsDetailVO.getOrderGoodsDetailId()); +// if((orderGoodsDetailVO.getIntoNum().add(imsIntoInventoryDetail.getPurNum()) +// .compareTo(orderGoodsDetailVO.getOrderNum().multiply(BigDecimal.valueOf(0.95)) +// )) >= 0) { +// orderGoodsDetailsUpdate.setIfAllInspect(1L); +// } + orderGoodsDetailMapper.updateOrderGoodsDetail(orderGoodsDetailsUpdate); + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/InspectGoodsServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/InspectGoodsServiceImpl.java index 6e9600d..566458c 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/InspectGoodsServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/InspectGoodsServiceImpl.java @@ -1,8 +1,11 @@ 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.InspectGoodsDetail; @@ -13,6 +16,7 @@ import com.bonus.canteen.core.ims.domain.param.InspectGoodsDetailAdd; import com.bonus.canteen.core.ims.domain.param.InspectGoodsDetailUpdate; import com.bonus.canteen.core.ims.domain.param.InspectGoodsUpdate; import com.bonus.canteen.core.ims.domain.vo.InspectGoodsDetailVO; +import com.bonus.canteen.core.ims.domain.vo.InspectGoodsSum; import com.bonus.canteen.core.ims.domain.vo.InspectGoodsVO; import com.bonus.canteen.core.ims.domain.vo.OrderGoodsDetailVO; import com.bonus.canteen.core.ims.enums.SupplierOrderGenerateTypeEnum; @@ -156,6 +160,20 @@ public class InspectGoodsServiceImpl implements IInspectGoodsService { inspectGoodsDetailService.insertInspectGoodsDetail(inspectGoodsDetail); } } + ProductionPurchaseOrder productionPurchaseOrderQuery = new ProductionPurchaseOrder(); + productionPurchaseOrderQuery.setInspectGoodsId(inspectGoodsVO.getInspectGoodsCode()); + productionPurchaseOrderService.deleteProductionPurchaseOrderById(productionPurchaseOrderQuery); + String orderGoodsIdStr = inspectGoodsUpdate.getOrderGoodsId(); + if(StringUtils.isNotBlank(orderGoodsIdStr)) { + String[] orderGoodsIds = orderGoodsIdStr.split(","); + for(String orderGoodId : orderGoodsIds) { + ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder(); + productionPurchaseOrder.setGoodsOrderId(orderGoodId); + productionPurchaseOrder.setInspectGoodsId(String.valueOf(inspectGoods.getInspectGoodsId())); + productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_INSPECT.getKey()); + productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder); + } + } return inspectGoodsMapper.updateInspectGoods(inspectGoods); } catch (Exception e) { throw new ServiceException(e.getMessage()); @@ -187,4 +205,39 @@ public class InspectGoodsServiceImpl implements IInspectGoodsService { inspectGoodsDetailService.deleteInspectGoodsDetailByInspectGoodsId(inspectGoodsId); return inspectGoodsMapper.deleteInspectGoodsByInspectGoodsId(inspectGoodsId); } + + @Override + public InspectGoodsSum getInspectGoodsListByOrderGoodsCode(String orderGoodsCode) { + InspectGoods inspectGoods = new InspectGoods(); + inspectGoods.setRelateOrderGoodsId(orderGoodsCode); + List inspectGoodsList = inspectGoodsMapper.selectInspectGoodsList(inspectGoods); + InspectGoodsSum inspectGoodsSum = null; + if(CollUtil.isNotEmpty(inspectGoodsList)) { + inspectGoodsSum = new InspectGoodsSum(); + BigDecimal totalInspectQualifiedNum = inspectGoodsList.stream() + .map(InspectGoodsVO::getInspectQualifiedNum) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + inspectGoodsSum.setTotalQualifiedNum(totalInspectQualifiedNum); + List inspectGoodsDetailListTotal = new ArrayList<>(); + for(InspectGoodsVO inspectGoodsVO : inspectGoodsList) { + InspectGoodsDetail inspectGoodsDetail = new InspectGoodsDetail(); + inspectGoodsDetail.setInspectGoodsId(inspectGoodsVO.getInspectGoodsId()); + List inspectGoodsDetailList = inspectGoodsDetailService + .selectInspectGoodsDetailList(inspectGoodsDetail); + inspectGoodsDetailListTotal.addAll(inspectGoodsDetailList); + } + Map result = inspectGoodsDetailListTotal.stream() + .filter(detail -> detail.getMaterialId() != null && detail.getQualifiedNum() != null) + .collect(Collectors.groupingBy( + InspectGoodsDetailVO::getMaterialId, + Collectors.mapping( + InspectGoodsDetailVO::getQualifiedNum, + Collectors.reducing(BigDecimal.ZERO, BigDecimal::add) + ) + )); + inspectGoodsSum.setIndividualTotalQualifiedNum(result); + } + return inspectGoodsSum; + } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/OrderGoodsServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/OrderGoodsServiceImpl.java index 6f782a2..24b88f5 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/OrderGoodsServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/OrderGoodsServiceImpl.java @@ -1,6 +1,8 @@ package com.bonus.canteen.core.ims.service.impl; +import java.math.BigDecimal; import java.util.List; +import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @@ -12,9 +14,11 @@ import com.bonus.canteen.core.ims.domain.param.OrderGoodsAdd; import com.bonus.canteen.core.ims.domain.param.OrderGoodsDetailAdd; import com.bonus.canteen.core.ims.domain.param.OrderGoodsDetailUpdate; import com.bonus.canteen.core.ims.domain.param.OrderGoodsUpdate; +import com.bonus.canteen.core.ims.domain.vo.InspectGoodsSum; import com.bonus.canteen.core.ims.domain.vo.OrderGoodsDetailVO; import com.bonus.canteen.core.ims.domain.vo.OrderGoodsVO; import com.bonus.canteen.core.ims.enums.SupplierOrderGenerateTypeEnum; +import com.bonus.canteen.core.ims.service.IInspectGoodsService; import com.bonus.canteen.core.ims.service.IOrderGoodsDetailService; import com.bonus.canteen.core.ims.service.IProductionPurchaseOrderService; import com.bonus.canteen.core.ims.utils.NoGenerateUtils; @@ -44,6 +48,8 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService { private IOrderGoodsDetailService inspectGoodsDetailService; @Autowired private IProductionPurchaseOrderService productionPurchaseOrderService; + @Autowired + private IInspectGoodsService inspectGoodsService; /** * 查询采购订单主 @@ -58,6 +64,20 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService { OrderGoodsDetail orderGoodsDetail = new OrderGoodsDetail(); orderGoodsDetail.setOrderGoodsId(orderGoodsVO.getOrderGoodsId()); List orderGoodsDetails = inspectGoodsDetailService.selectOrderGoodsDetailList(orderGoodsDetail); + if(CollUtil.isNotEmpty(orderGoodsDetails)) { + for(OrderGoodsDetailVO orderGoodsDetailVO : orderGoodsDetails) { + if(orderGoodsDetailVO.getMaterialId() != null) { + InspectGoodsSum inspectGoodsSum = inspectGoodsService + .getInspectGoodsListByOrderGoodsCode(orderGoodsVO.getOrderGoodsCode()); + if(Objects.nonNull(inspectGoodsSum) && Objects.nonNull(inspectGoodsSum.getIndividualTotalQualifiedNum())) { + Map individualTotalQualifiedNumMap = inspectGoodsSum.getIndividualTotalQualifiedNum(); + orderGoodsDetailVO.setTotalQualifiedNum(individualTotalQualifiedNumMap.get(orderGoodsDetailVO.getMaterialId())); + }else{ + orderGoodsDetailVO.setTotalQualifiedNum(BigDecimal.ZERO); + } + } + } + } orderGoodsVO.setOrderGoodsDetailList(orderGoodsDetails); } return orderGoodsVO; @@ -101,6 +121,13 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService { } } } + InspectGoodsSum inspectGoodsSum = inspectGoodsService + .getInspectGoodsListByOrderGoodsCode(orderGoodsVO.getOrderGoodsCode()); + if(Objects.nonNull(inspectGoodsSum) && Objects.nonNull(inspectGoodsSum.getTotalQualifiedNum())) { + orderGoodsVO.setTotalQualifiedNum(inspectGoodsSum.getTotalQualifiedNum()); + }else{ + orderGoodsVO.setTotalQualifiedNum(BigDecimal.ZERO); + } } } } @@ -132,6 +159,7 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService { OrderGoodsDetail orderGoodsDetail = new OrderGoodsDetail(); BeanUtils.copyProperties(orderGoodsDetailAdd, orderGoodsDetail); orderGoodsDetail.setOrderGoodsId(orderGoods.getOrderGoodsId()); + orderGoodsDetail.setOrderGoodsCode(orderGoods.getOrderGoodsCode()); inspectGoodsDetailService.insertOrderGoodsDetail(orderGoodsDetail); } } @@ -183,9 +211,24 @@ public class OrderGoodsServiceImpl implements IOrderGoodsService { OrderGoodsDetail orderGoodsDetail = new OrderGoodsDetail(); BeanUtils.copyProperties(orderGoodsDetailUpdate, orderGoodsDetail); orderGoodsDetail.setOrderGoodsId(orderGoods.getOrderGoodsId()); + orderGoodsDetail.setOrderGoodsCode(orderGoodsVO.getOrderGoodsCode()); inspectGoodsDetailService.insertOrderGoodsDetail(orderGoodsDetail); } } + ProductionPurchaseOrder productionPurchaseOrderQuery = new ProductionPurchaseOrder(); + productionPurchaseOrderQuery.setGoodsOrderId(orderGoodsVO.getOrderGoodsCode()); + productionPurchaseOrderService.deleteProductionPurchaseOrderById(productionPurchaseOrderQuery); + String purchasePlanCodeStr = orderGoodsUpdate.getPurchasePlanCode(); + if(StringUtils.isNotBlank(purchasePlanCodeStr)) { + String[] purchasePlanCodes = purchasePlanCodeStr.split(","); + for(String purchasePlanCode : purchasePlanCodes) { + ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder(); + productionPurchaseOrder.setPurchasePlanId(purchasePlanCode); + productionPurchaseOrder.setGoodsOrderId(orderGoods.getOrderGoodsCode()); + productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PURCHASE_TO_ORDER.getKey()); + productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder); + } + } return orderGoodsMapper.updateOrderGoods(orderGoods); } catch (Exception e) { throw new ServiceException(e.getMessage()); diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ProductionPurchaseOrderServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ProductionPurchaseOrderServiceImpl.java index 17d4e0c..d8361ef 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ProductionPurchaseOrderServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/ProductionPurchaseOrderServiceImpl.java @@ -1,7 +1,10 @@ package com.bonus.canteen.core.ims.service.impl; import java.util.List; +import java.util.Objects; + import com.bonus.common.core.exception.ServiceException; +import com.bonus.common.core.utils.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.bonus.canteen.core.ims.mapper.ProductionPurchaseOrderMapper; @@ -85,11 +88,19 @@ public class ProductionPurchaseOrderServiceImpl implements IProductionPurchaseOr /** * 删除生产-采购-订单关联信息 * - * @param id 生产-采购-订单关联主键 + * @param productionPurchaseOrder 生产-采购-订单关联主键 * @return 结果 */ @Override - public int deleteProductionPurchaseOrderById(Long id) { - return productionPurchaseOrderMapper.deleteProductionPurchaseOrderById(id); + public int deleteProductionPurchaseOrderById(ProductionPurchaseOrder productionPurchaseOrder) { + if(Objects.isNull(productionPurchaseOrder) + || Objects.isNull(productionPurchaseOrder.getId()) + || StringUtils.isBlank(productionPurchaseOrder.getPurchasePlanId()) + || StringUtils.isBlank(productionPurchaseOrder.getGoodsOrderId()) + || StringUtils.isBlank(productionPurchaseOrder.getInspectGoodsId()) + ){ + throw new ServiceException("删除生产-采购-订单关联信息参数错误"); + } + return productionPurchaseOrderMapper.deleteProductionPurchaseOrderById(productionPurchaseOrder); } } diff --git a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/PurchasePlanServiceImpl.java b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/PurchasePlanServiceImpl.java index a903e3c..d57115d 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/PurchasePlanServiceImpl.java +++ b/bonus-modules/bonus-smart-canteen/src/main/java/com/bonus/canteen/core/ims/service/impl/PurchasePlanServiceImpl.java @@ -218,6 +218,20 @@ public class PurchasePlanServiceImpl implements IPurchasePlanService { inspectGoodsDetailService.insertPurchasePlanDetail(purchasePlanDetail); } } + ProductionPurchaseOrder productionPurchaseOrderQuery = new ProductionPurchaseOrder(); + productionPurchaseOrderQuery.setPurchasePlanId(purchasePlan.getPlanCode()); + productionPurchaseOrderService.deleteProductionPurchaseOrderById(productionPurchaseOrderQuery); + String productionPlanCodeStr = purchasePlanUpdate.getProductionPlanCode(); + if(StringUtils.isNotBlank(productionPlanCodeStr)) { + String[] productionPlanCodes = productionPlanCodeStr.split(","); + for(String productionPlanCode : productionPlanCodes) { + ProductionPurchaseOrder productionPurchaseOrder = new ProductionPurchaseOrder(); + productionPurchaseOrder.setProductionPlanId(productionPlanCode); + productionPurchaseOrder.setPurchasePlanId(purchasePlan.getPlanCode()); + productionPurchaseOrder.setOrderType(SupplierOrderGenerateTypeEnum.PRODUCTION_TO_PURCHASE.getKey()); + productionPurchaseOrderService.insertProductionPurchaseOrder(productionPurchaseOrder); + } + } return purchasePlanMapper.updatePurchasePlan(purchasePlan); } catch (Exception e) { throw new ServiceException(e.getMessage()); diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsDetailMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsDetailMapper.xml index a39fe28..5b698ee 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsDetailMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsDetailMapper.xml @@ -6,6 +6,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -29,7 +30,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select order_goods_detail_id, order_goods_id, iogd.material_id, iogd.unit_id, iogd.size, + select order_goods_detail_id, order_goods_id, iogd.order_goods_code, iogd.material_id, iogd.unit_id, iogd.size, order_num, single_price, total_price, into_num, unqualified_num, unqualified_reason, if_all_inspect, remark, del_flag, iogd.create_by, iogd.create_time, iogd.update_by, iogd.update_time, cm.material_name, iu.unit_name, @@ -67,6 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into ims_order_goods_detail + order_goods_code, order_goods_id, material_id, unit_id, @@ -86,6 +88,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, + #{orderGoodsCode}, #{orderGoodsId}, #{materialId}, #{unitId}, @@ -109,6 +112,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ims_order_goods_detail + order_goods_code = #{orderGoodsCode}, order_goods_id = #{orderGoodsId}, material_id = #{materialId}, unit_id = #{unitId}, @@ -116,7 +120,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" order_num = #{orderNum}, single_price = #{singlePrice}, total_price = #{totalPrice}, - into_num = #{intoNum}, + into_num = into_num + #{intoNum}, unqualified_num = #{unqualifiedNum}, unqualified_reason = #{unqualifiedReason}, if_all_inspect = #{ifAllInspect}, diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsMapper.xml index b7ca6fe..6776e1f 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/OrderGoodsMapper.xml @@ -39,6 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -48,7 +49,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" total_num, total_into_num, approve_time, iog.stall_id, iog.canteen_id, iog.area_id, confirm_time, confirm_remark, if_all_inspect, iog.remark, iog.del_flag, iog.create_by, iog.create_time, iog.update_by, iog.update_time, isr.supplier_name, iwi.warehouse_name, - ba.area_name, bc.canteen_name, bs.stall_name + ba.area_name, bc.canteen_name, bs.stall_name, contract_code from ims_order_goods iog left join ims_supplier isr on isr.supplier_id = iog.supplier_id left join ims_warehouse_info iwi on iwi.warehouse_id = iog.warehouse_id @@ -83,6 +84,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and iog.confirm_time = #{confirmTime} and iog.confirm_remark = #{confirmRemark} and iog.if_all_inspect = #{ifAllInspect} + + and iog.total_num ]]> iog.totalIntoNum + and iog.order_goods_code like CONCAT('%',#{orderGoodsCode},'%') @@ -104,6 +108,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into ims_order_goods + contract_code, order_goods_code, supplier_id, order_status, @@ -135,6 +140,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_time, + #{contractCode}, #{orderGoodsCode}, #{supplierId}, #{orderStatus}, @@ -170,6 +176,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update ims_order_goods + contract_code = #{contractCode}, supplier_id = #{supplierId}, order_status = #{orderStatus}, order_amount = #{orderAmount}, @@ -184,7 +191,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" approve_by = #{approveBy}, approve_remark = #{approveRemark}, total_num = #{totalNum}, - total_into_num = #{totalIntoNum}, + total_into_num = total_into_num + #{totalIntoNum}, approve_time = #{approveTime}, stall_id = #{stallId}, canteen_id = #{canteenId}, diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPlanDetailMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPlanDetailMapper.xml index d359d55..eb05951 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPlanDetailMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPlanDetailMapper.xml @@ -43,7 +43,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - where ippd.production_detail_id = #{productionDetailId} + where ippd.production_detail_id = #{productionDetailId} and ippd.del_flag = '0' diff --git a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPurchaseOrderMapper.xml b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPurchaseOrderMapper.xml index d99b284..97a279e 100644 --- a/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPurchaseOrderMapper.xml +++ b/bonus-modules/bonus-smart-canteen/src/main/resources/mapper/ims/ProductionPurchaseOrderMapper.xml @@ -8,11 +8,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + - select id, production_plan_id, purchase_plan_id, goods_order_id, order_type + select id, production_plan_id, purchase_plan_id, goods_order_id, inspect_goods_id, order_type from ims_production_purchase_order @@ -22,6 +23,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and production_plan_id = #{productionPlanId} and purchase_plan_id = #{purchasePlanId} and goods_order_id = #{goodsOrderId} + and inspect_goods_id = #{inspectGoodsId} and order_type = #{orderType} @@ -37,12 +39,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" production_plan_id, purchase_plan_id, goods_order_id, + inspect_goods_id, order_type, #{productionPlanId}, #{purchasePlanId}, #{goodsOrderId}, + #{inspectGoodsId}, #{orderType}, @@ -53,13 +57,27 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" production_plan_id = #{productionPlanId}, purchase_plan_id = #{purchasePlanId}, goods_order_id = #{goodsOrderId}, + inspect_goods_id = #{inspectGoodsId}, order_type = #{orderType}, where id = #{id} - - delete from ims_production_purchase_order where id = #{id} + + delete from ims_production_purchase_order + where + + id = #{id} + + + purchase_plan_id = #{purchasePlanId} + + + goods_order_id = #{goodsOrderId} + + + inspect_goods_id = #{inspectGoodsId} +