From 9ac295028b98e51d3a6f3ea851611aa6f05a7109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=83=91=E6=98=8E=E6=A2=81?= <2429105222@qq.com> Date: Fri, 5 May 2023 20:31:04 +0800 Subject: [PATCH] =?UTF-8?q?=E7=89=A9=E8=B4=A8=E6=91=86=E6=94=BE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/inv/InvPlaceController.java | 43 ++- .../api/dao/inv/InvPlaceOrderDetailDao.java | 7 + .../api/dao/inv/InvPreInProductDetailDao.java | 2 + .../api/dao/inv/InvPreProductDetailDao.java | 2 + .../glxp/api/dao/inv/InvProductDetailDao.java | 2 + .../entity/inv/InvPlaceOrderDetailEntity.java | 4 +- .../api/entity/inv/InvPlaceOrderEntity.java | 4 +- .../res/inv/InvPlaceOrderDetailResponse.java | 2 + .../api/service/inv/InvPlaceOrderService.java | 10 + .../glxp/api/service/inv/InvPlaceService.java | 8 +- .../inv/impl/InvPlaceOrderServiceImpl.java | 82 +++++ .../service/inv/impl/InvPlaceServiceImpl.java | 314 ++++++++++++++---- .../mapper/inv/InvPlaceOrderDetailDao.xml | 29 ++ .../mapper/inv/InvPreInProductDetailDao.xml | 12 + .../mapper/inv/InvPreProductDetailDao.xml | 11 + .../mapper/inv/invProductDetailDao.xml | 11 + 16 files changed, 462 insertions(+), 81 deletions(-) diff --git a/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java index d801f9bb6..a904b35ca 100644 --- a/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java +++ b/src/main/java/com/glxp/api/controller/inv/InvPlaceController.java @@ -6,10 +6,15 @@ import com.github.pagehelper.PageInfo; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.dao.inv.InvPlaceOrderDetailDao; +import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; +import com.glxp.api.req.inv.FilterInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceRequest; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; +import com.glxp.api.service.inv.InvPlaceOrderService; import com.glxp.api.service.inv.InvPlaceService; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -18,6 +23,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; +import java.util.ArrayList; import java.util.List; /** @@ -28,6 +34,10 @@ public class InvPlaceController { @Resource private InvPlaceService invPlaceService; + @Resource + private InvPlaceOrderService invPlaceOrderService; + + /** * 查询库存摆放记录 @@ -48,7 +58,7 @@ public class InvPlaceController { * @return */ @PostMapping("/spms/inv/product/bindInvSpace") - public BaseResponse bindInvSpace(@RequestBody @Valid BindInvSpaceRequest bindInvSpaceRequest) { + public BaseResponse bindInvSpace(@RequestBody BindInvSpaceRequest bindInvSpaceRequest) { if (null == bindInvSpaceRequest) { return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); } @@ -87,15 +97,21 @@ public class InvPlaceController { /** * 查询库存产品信息 * - * @param filterInvPlaceRequest + * @param bindInvSpaceRequest * @return */ @GetMapping("/spms/inv/product/getInvProductInfo") - private BaseResponse getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest) { - List list = invPlaceService.getInvProductInfo(filterInvPlaceRequest); - if (CollUtil.isEmpty(list)) - return ResultVOUtils.error(500, "库存未找到产品信息!"); - return ResultVOUtils.success(list); + private BaseResponse getInvProductInfo(BindInvSpaceRequest bindInvSpaceRequest) { + List list = new ArrayList<>(); + //判断有没有库存 + String msg=invPlaceService.checkCount(bindInvSpaceRequest); + if(StrUtil.isEmpty(msg)){ + //有库存做插入货位号 + return invPlaceOrderService.bindInvSpaceOne(bindInvSpaceRequest); + }else{ + return ResultVOUtils.error(500, msg); + } + } /** @@ -114,4 +130,17 @@ public class InvPlaceController { return ResultVOUtils.page(pageInfo); } + /** + * 查询货架详情 + * + * @return + */ + @GetMapping("/spms/inv/product/getInvPlaceOrderDetailList") + public BaseResponse getInvPlaceOrderDetailList(FilterInvPlaceOrderRequest filterInvPlaceOrderRequest) { + List list = invPlaceOrderService.filterInvPlaceOrderDetailList(filterInvPlaceOrderRequest); + PageInfo pageInfo = new PageInfo<>(list); + return ResultVOUtils.page(pageInfo); + } + + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvPlaceOrderDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPlaceOrderDetailDao.java index cd680d171..73fbd679d 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPlaceOrderDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPlaceOrderDetailDao.java @@ -2,7 +2,14 @@ package com.glxp.api.dao.inv; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; +import com.glxp.api.res.inout.IoOrderResponse; +import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; +import org.apache.ibatis.annotations.Param; + +import java.util.List; public interface InvPlaceOrderDetailDao extends BaseMapper { + List selectDetailList(@Param("recordId") String recordId); + } \ No newline at end of file diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java index 042a9fecd..d4f1859d0 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreInProductDetailDao.java @@ -44,4 +44,6 @@ public interface InvPreInProductDetailDao extends BaseMapperPlus getInvPlaceOrderList(FilterInvPlaceRequest filterInvPlaceRequest); + Integer getInventoryQuantity(@Param("code") String code); + } diff --git a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java index 3821caa7c..15972bf6b 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvPreProductDetailDao.java @@ -43,4 +43,6 @@ public interface InvPreProductDetailDao extends BaseMapperPlus ids, @Param("invSpaceCode") String invSpaceCode); List getInvPlaceOrderList(FilterInvPlaceRequest filterInvPlaceRequest); + + Integer getInventoryQuantity(@Param("code") String code); } diff --git a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java index 56ed96199..789eee944 100644 --- a/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java +++ b/src/main/java/com/glxp/api/dao/inv/InvProductDetailDao.java @@ -96,4 +96,6 @@ public interface InvProductDetailDao extends BaseMapperPlus getInvPlaceOrderList(FilterInvPlaceRequest filterInvPlaceRequest); + + Integer getInventoryQuantity(@Param("code") String code); } diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java index 25790de33..72771ce39 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderDetailEntity.java @@ -10,8 +10,8 @@ import lombok.Data; @TableName(value = "inv_place_order_detail") public class InvPlaceOrderDetailEntity { - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + + private Long id; /** * 上架记录号 diff --git a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java index 19d811dd7..c8d3cf1e7 100644 --- a/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java +++ b/src/main/java/com/glxp/api/entity/inv/InvPlaceOrderEntity.java @@ -15,8 +15,8 @@ import java.util.Date; @TableName(value = "inv_place_order") public class InvPlaceOrderEntity { - @TableId(value = "id", type = IdType.AUTO) - private Integer id; + + private Long id; /** * 上架记录号 diff --git a/src/main/java/com/glxp/api/res/inv/InvPlaceOrderDetailResponse.java b/src/main/java/com/glxp/api/res/inv/InvPlaceOrderDetailResponse.java index c7170626a..b4a956549 100644 --- a/src/main/java/com/glxp/api/res/inv/InvPlaceOrderDetailResponse.java +++ b/src/main/java/com/glxp/api/res/inv/InvPlaceOrderDetailResponse.java @@ -68,6 +68,8 @@ public class InvPlaceOrderDetailResponse { */ private String invSpaceCode; + private String invSpaceName; + /** * 供应商名称 */ diff --git a/src/main/java/com/glxp/api/service/inv/InvPlaceOrderService.java b/src/main/java/com/glxp/api/service/inv/InvPlaceOrderService.java index 7f2b98cd9..85b645161 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPlaceOrderService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPlaceOrderService.java @@ -1,8 +1,13 @@ package com.glxp.api.service.inv; import com.glxp.api.common.res.BaseResponse; +import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceOrderRequest; +import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.inout.IoOrderResponse; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; import com.glxp.api.res.inv.InvPlaceOrderResponse; import java.util.List; @@ -16,4 +21,9 @@ public interface InvPlaceOrderService { BaseResponse addInvPlaceOrder(AddInvPlaceOrderRequest addInvPlaceOrderRequest); + //单条绑定货位 + BaseResponse bindInvSpaceOne(BindInvSpaceRequest bindInvSpaceRequest); + + + List filterInvPlaceOrderDetailList(FilterInvPlaceOrderRequest filterInvPlaceOrderRequest); } diff --git a/src/main/java/com/glxp/api/service/inv/InvPlaceService.java b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java index e7009dcf7..e42751e78 100644 --- a/src/main/java/com/glxp/api/service/inv/InvPlaceService.java +++ b/src/main/java/com/glxp/api/service/inv/InvPlaceService.java @@ -47,10 +47,10 @@ public interface InvPlaceService { BaseResponse checkCodeSpace(BindInvSpaceRequest bindInvSpaceRequest); /** - * @param filterInvPlaceRequest + * @param bindInvSpaceRequest * @return */ - List getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest); + List getInvProductInfo(BindInvSpaceRequest bindInvSpaceRequest); /** * 从库存详情查询单据列表 @@ -59,4 +59,8 @@ public interface InvPlaceService { * @return */ List getInvPlaceOrderList(FilterInvPlaceRequest filterInvPlaceRequest); + + //判断有没有库存 + String checkCount(BindInvSpaceRequest bindInvSpaceRequest); + } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java index 87f803670..59d132a84 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceOrderServiceImpl.java @@ -1,7 +1,9 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; @@ -12,6 +14,10 @@ import com.glxp.api.entity.inv.InvPlaceOrderDetailEntity; import com.glxp.api.entity.inv.InvPlaceOrderEntity; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceOrderRequest; +import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.inout.IoOrderResponse; +import com.glxp.api.res.inv.BindInvSpaceRequest; +import com.glxp.api.res.inv.InvPlaceOrderDetailResponse; import com.glxp.api.res.inv.InvPlaceOrderResponse; import com.glxp.api.service.auth.CustomerService; import com.glxp.api.service.inv.InvPlaceOrderService; @@ -90,4 +96,80 @@ public class InvPlaceOrderServiceImpl implements InvPlaceOrderService { invPlaceOrderDao.insert(orderEntity); return ResultVOUtils.success(); } + + + @Override + public BaseResponse bindInvSpaceOne(BindInvSpaceRequest bindInvSpaceRequest) { + +// QueryWrapper ew=new QueryWrapper(); +// ew.eq("code",filterInvPlaceRequest.getCode()); +// ew.isNull("invSpaceCode"); +// ew. +// invPreInProductDetailDao.selectOne() + + //判断是不是第一次进行添加 是就插入一条主表 + String recordId = ""; + if(StrUtil.isEmpty(bindInvSpaceRequest.getOrderId())){ + InvPlaceOrderEntity invPlaceOrderEntity=new InvPlaceOrderEntity(); + //操作人ID + String userId = customerService.getUserIdStr(); + + recordId = gennerOrderUtils.createInvPlaceOrderNo(new OrderNoTypeBean(Constant.INV_PLACE_ORDER, "yyyyMMdd")); + InvPlaceOrderEntity orderEntity = new InvPlaceOrderEntity(); + orderEntity.setId(IdUtil.getSnowflakeNextId()); + orderEntity.setRecordId(recordId); + orderEntity.setType(1); +// orderEntity.setOrderId(addInvPlaceOrderRequest.getOrderId()); + orderEntity.setCreateUser(userId); + orderEntity.setCreateTime(new Date()); + orderEntity.setUpdateTime(new Date()); + invPlaceOrderDao.insert(orderEntity); + + //插入附表 + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); + invPlaceOrderDetailEntity.setRecordId(recordId); + invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); + invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); + invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); + invPlaceOrderDetailEntity.setCount(1); + invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); + }else{ + recordId=bindInvSpaceRequest.getOrderId(); + //查询有没有存在一样的code有就加数量没有新增 + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + ew.eq("code",bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity=invPlaceOrderDetailDao.selectOne(ew); + if(invPlaceOrderDetailEntity!=null){ + invPlaceOrderDetailEntity.setCount(invPlaceOrderDetailEntity.getCount()+1); + invPlaceOrderDetailDao.updateById(invPlaceOrderDetailEntity); + }else{ + //插入附表 + invPlaceOrderDetailEntity=new InvPlaceOrderDetailEntity(); + invPlaceOrderDetailEntity.setId(IdUtil.getSnowflakeNextId()); + invPlaceOrderDetailEntity.setRecordId(bindInvSpaceRequest.getOrderId()); + invPlaceOrderDetailEntity.setInvCode(bindInvSpaceRequest.getInvCode()); + invPlaceOrderDetailEntity.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); + invPlaceOrderDetailEntity.setCode(bindInvSpaceRequest.getCode()); + invPlaceOrderDetailEntity.setCount(1); + invPlaceOrderDetailDao.insert(invPlaceOrderDetailEntity); + } + } + + + + return ResultVOUtils.success(recordId); + } + + @Override + public List filterInvPlaceOrderDetailList(FilterInvPlaceOrderRequest filterInvPlaceOrderRequest) { + if (null == filterInvPlaceOrderRequest) { + return Collections.emptyList(); + } + if (null != filterInvPlaceOrderRequest.getPage() && null != filterInvPlaceOrderRequest.getLimit()) { + PageHelper.offsetPage((filterInvPlaceOrderRequest.getPage() - 1) * filterInvPlaceOrderRequest.getLimit(), filterInvPlaceOrderRequest.getLimit()); + } + return invPlaceOrderDetailDao.selectDetailList(filterInvPlaceOrderRequest.getOrderId()); + } } diff --git a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java index a6e7cad05..4131ff70c 100644 --- a/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java +++ b/src/main/java/com/glxp/api/service/inv/impl/InvPlaceServiceImpl.java @@ -1,31 +1,32 @@ package com.glxp.api.service.inv.impl; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.pagehelper.PageHelper; import com.glxp.api.common.enums.ResultEnum; import com.glxp.api.common.res.BaseResponse; import com.glxp.api.common.util.ResultVOUtils; +import com.glxp.api.constant.Constant; import com.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.auth.InvSpaceDao; import com.glxp.api.dao.auth.InvWarehouseDao; -import com.glxp.api.dao.inv.InvPreInProductDetailDao; -import com.glxp.api.dao.inv.InvPreProductDetailDao; -import com.glxp.api.dao.inv.InvProductDetailDao; +import com.glxp.api.dao.inv.*; import com.glxp.api.entity.auth.InvSpace; import com.glxp.api.entity.auth.InvWarehouseEntity; -import com.glxp.api.entity.inv.InvPreInProductDetailEntity; -import com.glxp.api.entity.inv.InvPreProductDetailEntity; -import com.glxp.api.entity.inv.InvProductDetailEntity; +import com.glxp.api.entity.inv.*; import com.glxp.api.req.inv.AddInvPlaceOrderRequest; import com.glxp.api.req.inv.FilterInvPlaceRequest; +import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.res.inv.BindInvSpaceRequest; import com.glxp.api.res.inv.InvPlaceDetailResponse; +import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inv.InvPlaceOrderService; import com.glxp.api.service.inv.InvPlaceService; import com.glxp.api.util.BeanCopyUtils; +import com.glxp.api.util.OrderNoTypeBean; import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -34,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; +import java.util.Date; import java.util.List; import java.util.stream.Collectors; @@ -54,6 +56,14 @@ public class InvPlaceServiceImpl implements InvPlaceService { private InvSpaceDao invSpaceDao; @Resource private InvPlaceOrderService invPlaceOrderService; + @Resource + private InvPlaceOrderDao invPlaceOrderDao; + @Resource + private InvPlaceOrderDetailDao invPlaceOrderDetailDao; + @Resource + private UdiRelevanceService udiRelevanceService; + + @Override public List getPlaceDetailList(FilterInvPlaceRequest filterInvPlaceRequest) { @@ -75,67 +85,160 @@ public class InvPlaceServiceImpl implements InvPlaceService { List list = new ArrayList<>(); if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { - List invPreInProductDetailEntities = invPreInProductDetailDao.selectList(new QueryWrapper() - .select("id", "code", "relId", "batchNo") - .eq("deptCode", deptCode) - .eq("invCode", bindInvSpaceRequest.getInvCode()) - .in("code", bindInvSpaceRequest.getCodeArray()) - ); - for (InvPreInProductDetailEntity invPreInProductDetailEntity : invPreInProductDetailEntities) { - InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity(); - BeanCopyUtils.copy(invPreInProductDetailEntity, invProductDetailEntity); - list.add(invProductDetailEntity); + List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { + + for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { + //拆解库存表 + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.and(o-> o.isNull("invSpaceCode").or().eq("invSpaceCode","")); + + ew.gt("inCount",0); + ew.last("limit 1"); + InvPreInProductDetailEntity invPreInProductDetailEntity=invPreInProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity.getInCount()>0){ + invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); + invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); +// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreInProductDetailDao.updateById(invPreInProductDetailEntity); + + + ew.clear(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.eq("invSpaceCode",invPlaceOrderDetailEntity.getInvSpaceCode()); + + InvPreInProductDetailEntity invPreInProductDetailEntity1=invPreInProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity1!=null){ + invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); + invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreInProductDetailDao.updateById(invPreInProductDetailEntity1); + }else{ + invPreInProductDetailEntity.setId(null); + invPreInProductDetailEntity.setInCount(1); + invPreInProductDetailEntity.setCount(1); + invPreInProductDetailEntity.setOutCount(0); + invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); + invPreInProductDetailDao.insert(invPreInProductDetailEntity); + } + } + } } + + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { - List invPreProductDetailEntities = invPreProductDetailDao.selectList(new QueryWrapper() - .select("id", "code", "relId", "batchNo") - .eq("deptCode", deptCode) - .eq("invCode", bindInvSpaceRequest.getInvCode()) - .in("code", bindInvSpaceRequest.getCodeArray()) - ); - for (InvPreProductDetailEntity invPreInProductDetailEntity : invPreProductDetailEntities) { - InvProductDetailEntity invProductDetailEntity = new InvProductDetailEntity(); - BeanCopyUtils.copy(invPreInProductDetailEntity, invProductDetailEntity); - list.add(invProductDetailEntity); + List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { + + for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { + //拆解库存表 + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.and(o-> o.isNull("invSpaceCode").or().eq("invSpaceCode","")); + + ew.gt("inCount",0); + ew.last("limit 1"); + InvPreProductDetailEntity invPreInProductDetailEntity=invPreProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity.getInCount()>0){ + invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); + invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); +// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invPreProductDetailDao.updateById(invPreInProductDetailEntity); + + + ew.clear(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.eq("invSpaceCode",invPlaceOrderDetailEntity.getInvSpaceCode()); + + InvPreProductDetailEntity invPreInProductDetailEntity1=invPreProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity1!=null){ + invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); + invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invPreProductDetailDao.updateById(invPreInProductDetailEntity1); + }else{ + invPreInProductDetailEntity.setId(null); + invPreInProductDetailEntity.setInCount(1); + invPreInProductDetailEntity.setCount(1); + invPreInProductDetailEntity.setOutCount(0); + invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); + invPreProductDetailDao.insert(invPreInProductDetailEntity); + } + } + } } } else { - list = invProductDetailDao.selectList(new QueryWrapper() - .select("id", "code", "relId", "batchNo") - .eq("deptCode", deptCode) - .eq("invCode", bindInvSpaceRequest.getInvCode()) - .in("code", bindInvSpaceRequest.getCodeArray()) - ); - } - - if (CollUtil.isNotEmpty(list)) { - List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); - log.info("本次绑定货位的库存详情数量为:{} 条", ids.size()); - - - if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { - invPreInProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); - } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { - invPreProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); - } else { - invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); + List invPlaceOrderDetailEntityList=invPlaceOrderDetailDao.selectList(new QueryWrapper().eq("recordId",bindInvSpaceRequest.getOrderId())); + for (InvPlaceOrderDetailEntity invPlaceOrderDetailEntity : invPlaceOrderDetailEntityList) { + + for (Integer i = 0; i < invPlaceOrderDetailEntity.getCount(); i++) { + //拆解库存表 + QueryWrapper ew=new QueryWrapper<>(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.and(o-> o.isNull("invSpaceCode").or().eq("invSpaceCode","")); + + ew.gt("inCount",0); + ew.last("limit 1"); + InvProductDetailEntity invPreInProductDetailEntity=invProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity.getInCount()>0){ + invPreInProductDetailEntity.setInCount(invPreInProductDetailEntity.getInCount()-1); + invPreInProductDetailEntity.setCount(invPreInProductDetailEntity.getCount()-1); +// invPreInProductDetailEntity.setReCount(invPreInProductDetailEntity.getReCount()-getActCount(invPlaceOrderDetailEntity.get)); + invProductDetailDao.updateById(invPreInProductDetailEntity); + + + ew.clear(); + ew.eq("code",invPlaceOrderDetailEntity.getCode()); + ew.eq("invSpaceCode",invPlaceOrderDetailEntity.getInvSpaceCode()); + + InvProductDetailEntity invPreInProductDetailEntity1=invProductDetailDao.selectOne(ew); + if(invPreInProductDetailEntity1!=null){ + invPreInProductDetailEntity1.setCount(invPreInProductDetailEntity1.getCount()+1); + invPreInProductDetailEntity1.setInCount(invPreInProductDetailEntity1.getInCount()+1); + invProductDetailDao.updateById(invPreInProductDetailEntity1); + }else{ + invPreInProductDetailEntity.setId(null); + invPreInProductDetailEntity.setInCount(1); + invPreInProductDetailEntity.setCount(1); + invPreInProductDetailEntity.setOutCount(0); + invPreInProductDetailEntity.setInvSpaceCode(invPlaceOrderDetailEntity.getInvSpaceCode()); + invProductDetailDao.insert(invPreInProductDetailEntity); + } + } + } } - - //添加物资上架记录 - AddInvPlaceOrderRequest addInvPlaceOrderRequest = new AddInvPlaceOrderRequest(); - addInvPlaceOrderRequest.setType(bindInvSpaceRequest.getType()); - addInvPlaceOrderRequest.setOrderId(bindInvSpaceRequest.getOrderId()); - addInvPlaceOrderRequest.setCodeList(list); - addInvPlaceOrderRequest.setInvCode(bindInvSpaceRequest.getInvCode()); - addInvPlaceOrderRequest.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); - invPlaceOrderService.addInvPlaceOrder(addInvPlaceOrderRequest); - return ResultVOUtils.success("绑定成功!本次绑定货位的库存详情数量为:" + ids.size() + "条"); - } else { - log.info("绑定货位列表查询无数据"); - return ResultVOUtils.error(500, "绑定货位列表查询无数据"); } + +// if (CollUtil.isNotEmpty(list)) { +// List ids = list.stream().map(InvProductDetailEntity::getId).collect(Collectors.toList()); +// log.info("本次绑定货位的库存详情数量为:{} 条", ids.size()); +// +// +// if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { +// invPreInProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); +// } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { +// invPreProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); +// } else { +// invProductDetailDao.batchBindSpace(ids, bindInvSpaceRequest.getInvSpaceCode()); +// } +// +// +// //添加物资上架记录 +// AddInvPlaceOrderRequest addInvPlaceOrderRequest = new AddInvPlaceOrderRequest(); +// addInvPlaceOrderRequest.setType(bindInvSpaceRequest.getType()); +// addInvPlaceOrderRequest.setOrderId(bindInvSpaceRequest.getOrderId()); +// addInvPlaceOrderRequest.setCodeList(list); +// addInvPlaceOrderRequest.setInvCode(bindInvSpaceRequest.getInvCode()); +// addInvPlaceOrderRequest.setInvSpaceCode(bindInvSpaceRequest.getInvSpaceCode()); +// invPlaceOrderService.addInvPlaceOrder(addInvPlaceOrderRequest); +// return ResultVOUtils.success("绑定成功!本次绑定货位的库存详情数量为:" + ids.size() + "条"); +// } else { +// log.info("绑定货位列表查询无数据"); +// return ResultVOUtils.error(500, "绑定货位列表查询无数据"); +// } + return ResultVOUtils.success(); } @Override @@ -229,16 +332,16 @@ public class InvPlaceServiceImpl implements InvPlaceService { } @Override - public List getInvProductInfo(FilterInvPlaceRequest filterInvPlaceRequest) { - - InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", filterInvPlaceRequest.getInvCode())); - if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { - return invPreInProductDetailDao.getInvProductInfo(filterInvPlaceRequest); - } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { - return invPreProductDetailDao.getInvProductInfo(filterInvPlaceRequest); - } else - return invProductDetailDao.getInvProductInfo(filterInvPlaceRequest); - + public List getInvProductInfo(BindInvSpaceRequest bindInvSpaceRequest) { + return null; +// +// InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", filterInvPlaceRequest.getInvCode())); +// if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { +// return invPreInProductDetailDao.getInvProductInfo(filterInvPlaceRequest); +// } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { +// return invPreProductDetailDao.getInvProductInfo(filterInvPlaceRequest); +// } else +// return invProductDetailDao.getInvProductInfo(filterInvPlaceRequest); } @Override @@ -261,4 +364,79 @@ public class InvPlaceServiceImpl implements InvPlaceService { } + + @Override + public String checkCount(BindInvSpaceRequest bindInvSpaceRequest) { + InvWarehouseEntity invWarehouseEntity = invWarehouseDao.selectOne(new QueryWrapper().eq("code", bindInvSpaceRequest.getInvCode())); + if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_PREIN) { + Integer count = invPreInProductDetailDao.getInventoryQuantity(bindInvSpaceRequest.getCode()); + if(count==null || count<=0){ + return "该产品库存不足!"; + } + if(StrUtil.isNotBlank(bindInvSpaceRequest.getOrderId())){ + QueryWrapper ew=new QueryWrapper(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + ew.eq("code",bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity =invPlaceOrderDetailDao.selectOne(ew); + if(invPlaceOrderDetailEntity.getCount()>=count){ + return "该产品库存不足!"; + } + } + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_ADVANCE) { + Integer count = invPreProductDetailDao.getInventoryQuantity(bindInvSpaceRequest.getCode()); + if(count==null || count<=0){ + return "该产品库存不足!"; + } + if(StrUtil.isNotBlank(bindInvSpaceRequest.getOrderId())){ + QueryWrapper ew=new QueryWrapper(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + ew.eq("code",bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity =invPlaceOrderDetailDao.selectOne(ew); + if(invPlaceOrderDetailEntity.getCount()>=count){ + return "该产品库存不足!"; + } + } + } else if (invWarehouseEntity.getAdvanceType() == ConstantStatus.ACTION_TYPE_NORMAL){ + Integer count = invProductDetailDao.getInventoryQuantity(bindInvSpaceRequest.getCode()); + if(count==null || count<=0){ + return "该产品库存不足!"; + } + if(StrUtil.isNotBlank(bindInvSpaceRequest.getOrderId())){ + QueryWrapper ew=new QueryWrapper(); + ew.eq("recordId",bindInvSpaceRequest.getOrderId()); + ew.eq("code",bindInvSpaceRequest.getCode()); + InvPlaceOrderDetailEntity invPlaceOrderDetailEntity =invPlaceOrderDetailDao.selectOne(ew); + if(invPlaceOrderDetailEntity.getCount()>=count){ + return "该产品库存不足!"; + } + } + } + return ""; + } + + public int getActCount(String nameCode) { + UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByNameCode(nameCode); + int count = getActCount(udiRelevanceResponse); + return count; + } + public int getActCount(UdiRelevanceResponse udiRelevanceResponse) { + int actCount; + if (!udiRelevanceResponse.getUseDy() && (udiRelevanceResponse.getDiType() == null || udiRelevanceResponse.getDiType() != 2)) { + if (udiRelevanceResponse.getBhzxxsbzsl() == 0) { + actCount = udiRelevanceResponse.getZxxsbzbhsydysl(); + } else { + if (udiRelevanceResponse.getBhzxxsbzsl() == 0) { + udiRelevanceResponse.setBhzxxsbzsl(1); + } + if (udiRelevanceResponse.getZxxsbzbhsydysl() == null || udiRelevanceResponse.getZxxsbzbhsydysl() == 0) { + udiRelevanceResponse.setZxxsbzbhsydysl(1); + } + actCount = udiRelevanceResponse.getBhzxxsbzsl() * udiRelevanceResponse.getZxxsbzbhsydysl(); + } + } else { + actCount = udiRelevanceResponse.getBhzxxsbzsl(); + } + + return actCount; + } } diff --git a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml index 806ddfb91..94f90ec68 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPlaceOrderDetailDao.xml @@ -1,4 +1,33 @@ + + + + + \ No newline at end of file diff --git a/src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml index 0b1a11fe9..e09f24a2e 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreInProductDetailDao.xml @@ -221,4 +221,16 @@ group by ipd.orderId + + + diff --git a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml index 8f5b04a9f..f23a222d4 100644 --- a/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/InvPreProductDetailDao.xml @@ -221,4 +221,15 @@ group by ipd.orderId + + diff --git a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml index af68d03ce..f2c474299 100644 --- a/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml +++ b/src/main/resources/mybatis/mapper/inv/invProductDetailDao.xml @@ -303,4 +303,15 @@ group by ipd.orderId + +