diff --git a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/OrderController.java b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/OrderController.java index cddcaeb..1c0ae22 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/OrderController.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/controller/inout/OrderController.java @@ -8,10 +8,8 @@ import com.github.pagehelper.PageInfo; import com.glxp.sale.admin.annotation.AuthRuleAnnotation; import com.glxp.sale.admin.constant.ConstantStatus; import com.glxp.sale.admin.controller.inout.utils.DataTransUtil; -import com.glxp.sale.admin.dao.inout.CodesDao; import com.glxp.sale.admin.dao.inout.CodesTempDao; import com.glxp.sale.admin.dao.inout.OrderDao; -import com.glxp.sale.admin.dao.inout.StockOrderDao; import com.glxp.sale.admin.dao.inventory.InvWarehouseDao; import com.glxp.sale.admin.entity.auth.AuthAdmin; import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; @@ -38,7 +36,6 @@ import com.glxp.sale.common.enums.ResultEnum; import com.glxp.sale.common.res.BaseResponse; import com.glxp.sale.common.util.ResultVOUtils; import org.apache.commons.lang3.StringUtils; -import org.apache.regexp.RE; import org.springframework.beans.factory.annotation.Value; import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; @@ -703,4 +700,19 @@ public class OrderController { return ResultVOUtils.success(); } + /** + * 根据扫码单据号查询单据信息 + * + * @param id + * @return + */ + @GetMapping("/udiwms/inout/order/getOrderById") + public BaseResponse getOrderById(String id) { + if (StrUtil.isBlank(id)) { + return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL); + } + OrderEntity orderEntity = orderService.findById(id); + return ResultVOUtils.success(orderEntity); + } + } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/CodesDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/CodesDao.java index ec97f7b..8a7e2f3 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/CodesDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/CodesDao.java @@ -46,4 +46,11 @@ public interface CodesDao { boolean updateSupId(@Param("supId") String supId, @Param("nameCode") String nameCode, @Param("orderId") String orderId); boolean deleteByOrderIdAndCode(@Param("orderId") String orderId, @Param("code") String code); + + /** + * 根据ID删除条码 + * + * @param id + */ + void deleteById(@Param("id") Long id); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDetailDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDetailDao.java index 8cccb01..9d0d318 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDetailDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/OrderDetailDao.java @@ -62,4 +62,12 @@ public interface OrderDetailDao { * @return */ int countByOrderId(@Param("orderId") String orderId); + + /** + * 查询扫码单据详情 + * + * @param filterErpOrderRequest + * @return + */ + List filterErpOrder(@Param("filterErpOrderRequest") FilterErpOrderRequest filterErpOrderRequest); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java index ed80aa9..f52e819 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDao.java @@ -56,4 +56,12 @@ public interface StockOrderDao { * @return */ boolean deleteByOrderIdFk(String orderIdFk); + + /** + * 根据扫码单据号,查询业务单据的数据ID(非业务单据号) + * + * @param orderIdFk + * @return + */ + Integer selectIdByOrderIdFk(@Param("orderIdFk") String orderIdFk); } diff --git a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDetailDao.java b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDetailDao.java index 30e01a4..9a9b847 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDetailDao.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/dao/inout/StockOrderDetailDao.java @@ -15,6 +15,8 @@ public interface StockOrderDetailDao { List filterStockOrderDetail2(StockOrderDetailFilterRequest stockOrderDetailFilterRequest); + List filterStockOrderDetail3(StockOrderDetailFilterRequest stockOrderDetailFilterRequest); + boolean insertStockOrderDetail(StockOrderDetailEntity stockOrderDetailEntity); boolean insertStockOrderDetails(@Param("stockOrderDetailEntities") List stockOrderDetailEntitys); diff --git a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java index 23f21b6..14aac48 100644 --- a/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java +++ b/api-admin/src/main/java/com/glxp/sale/admin/service/inout/impl/CodesServiceImpl.java @@ -8,9 +8,7 @@ import com.glxp.sale.admin.constant.ConstantType; import com.glxp.sale.admin.dao.inout.*; import com.glxp.sale.admin.dao.inventory.InvProductDao; import com.glxp.sale.admin.dao.inventory.InvProductDetailDao; -import com.glxp.sale.admin.entity.inout.FilterErpOrderRequest; -import com.glxp.sale.admin.entity.inout.OrderEntity; -import com.glxp.sale.admin.entity.inout.WarehouseEntity; +import com.glxp.sale.admin.entity.inout.*; import com.glxp.sale.admin.entity.inventory.InvProductDetailEntity; import com.glxp.sale.admin.entity.inventory.InvProductEntity; import com.glxp.sale.admin.req.inout.CodesReplaceRequest; @@ -177,89 +175,123 @@ public class CodesServiceImpl implements CodesService { warehouseQueryRequest.setCode(codesReplaceRequest.getCode()); List warehouseEntities = codesDao.findByOrderId(warehouseQueryRequest); if (CollUtil.isNotEmpty(warehouseEntities)) { - for (WarehouseEntity warehouseEntity : warehouseEntities) { - //删除码详情 - codesDao.deleteByOrderIdAndCode(warehouseEntity.getOrderId(), warehouseEntity.getCode()); - - if (order.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { - //查询库存详情 - FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); - filterInvProductDetailRequest.setOriginCode(codesReplaceRequest.getCode()); - filterInvProductDetailRequest.setProductIdFk(warehouseEntity.getRelId()); - filterInvProductDetailRequest.setOrderIdFk(order.getId()); - if (StrUtil.isNotBlank(warehouseEntity.getBatchNo())) { - filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo()); + WarehouseEntity warehouseEntity = warehouseEntities.get(0); + if (warehouseEntity.getCount() > 1) { + //删除一个条码 + warehouseEntity.setCount(warehouseEntity.getCount() - 1); + codesDao.updateCode(warehouseEntity); //更新码详情 + } else { + //如果数量扣减之后为0,直接删除此条码 + codesDao.deleteById(warehouseEntity.getId()); + } + + //库存详情扣减1 + if (order.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { + FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); + filterInvProductDetailRequest.setOriginCode(codesReplaceRequest.getCode()); + filterInvProductDetailRequest.setProductIdFk(warehouseEntity.getRelId()); + filterInvProductDetailRequest.setOrderIdFk(order.getId()); + if (StrUtil.isNotBlank(warehouseEntity.getBatchNo())) { + filterInvProductDetailRequest.setBatchNo(warehouseEntity.getBatchNo()); + } else { + filterInvProductDetailRequest.setBatchNo("empty"); + } + List invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); + if (CollUtil.isNotEmpty(invProductDetailEntities)) { + //库存详情不为空,单据已验收,扣减库存 + InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0); + if (invProductDetailEntity.getCount() > 1) { + invProductDetailEntity.setCount(invProductDetailEntity.getCount() - 1); //更新库存 + invProductDetailDao.updateInvProductDetail(invProductDetailEntity); + } else { + //库存详情扣减之后等于0,删除库存详情 + invProductDetailDao.deleteByOrderIdAndCode(order.getId(), warehouseEntity.getCode()); + } + + + //查询原库存详情和新的库存详情 + FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); + filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); + filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); + filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); + if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { + filterInvProductRequest.setBatchNo("empty"); + } else { + filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); + } + InvProductEntity invProductEntity = invProductDao.filterInvProduct(filterInvProductRequest).get(0); + if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { + //入库 + invProductEntity.setInCount(invProductEntity.getInCount() - 1); + } else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { + //出库 + invProductEntity.setOutCount(invProductEntity.getOutCount() - 1); + } + + //查询库存码详情,如果库存码详情为空,则删除此库存 + FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); + detailParams.setBatchNo(invProductEntity.getBatchNo()); + detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); + detailParams.setProductIdFk(invProductEntity.getRelIdFk()); + int count = invProductDetailDao.statCount(detailParams); + if (count == 0) { + //如果库存码详情为空,则删除此库存 + invProductDao.deleteById(String.valueOf(invProductEntity.getId())); } else { - filterInvProductDetailRequest.setBatchNo("empty"); + //更新库存 + invProductDao.updateInvProduct(invProductEntity); } - List invProductDetailEntities = invProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); - if (CollUtil.isNotEmpty(invProductDetailEntities)) { - //库存详情不为空,单据已验收,更新库存 - InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0); //库存 - - //删除库存详情 - invProductDetailDao.deleteByOrderIdAndCode(warehouseEntity.getOrderId(), codesReplaceRequest.getCode()); - //查询原库存详情和新的库存详情 - FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); - filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); - filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); - filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); - if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { - filterInvProductRequest.setBatchNo("empty"); + + //查询扫码单据详情 + FilterErpOrderRequest orderDetailRequest = new FilterErpOrderRequest(); + orderDetailRequest.setOrderIdFk(order.getId()); + orderDetailRequest.setGoodsid(warehouseEntity.getRelId()); + orderDetailRequest.setBatchNo(warehouseEntity.getBatchNo()); + List erpOrderEntities = orderDetailDao.filterErpOrder(orderDetailRequest); + if (CollUtil.isNotEmpty(erpOrderEntities)) { + ErpOrderEntity erpOrderEntity = erpOrderEntities.get(0); + if (erpOrderEntity.getReCount() > 1) { + erpOrderEntity.setReCount(erpOrderEntity.getReCount() - 1); //应收数量 - 1 + erpOrderEntity.setCount(erpOrderEntity.getCount() - 1); //实际数量 - 1 + //更新扫码单据详情 + orderDetailDao.updateErpOrder(erpOrderEntity); } else { - filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); - } - InvProductEntity invProductEntity = invProductDao.filterInvProduct(filterInvProductRequest).get(0); - - if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { - //出库 - int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount(); - invProductEntity.setOutCount(count); - } else if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_PUT)) { - //入库 - int count = invProductEntity.getInCount() - invProductDetailEntity.getCount(); - invProductEntity.setInCount(count); + orderDetailDao.deleteByPrimiyId(String.valueOf(erpOrderEntity.getId())); } + } - //查询库存码详情,如果库存码详情为空,则删除此库存 - FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); - detailParams.setBatchNo(invProductEntity.getBatchNo()); - detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); - detailParams.setProductIdFk(invProductEntity.getRelIdFk()); - int count = invProductDetailDao.statCount(detailParams); - if (count == 0) { - //如果库存码详情为空,则删除此库存 - invProductDao.deleteById(String.valueOf(invProductEntity.getId())); + //查询业务单据详情 + StockOrderDetailFilterRequest stockOrderDetailFilterRequest = new StockOrderDetailFilterRequest(); + stockOrderDetailFilterRequest.setProductId(warehouseEntity.getRelId()); + stockOrderDetailFilterRequest.setBatchNo(warehouseEntity.getBatchNo()); + //查询业务单据数据ID + Integer stockOrderId = stockOrderDao.selectIdByOrderIdFk(order.getId()); + stockOrderDetailFilterRequest.setOrderIdFk(String.valueOf(stockOrderId)); + List stockOrderDetailEntities = stockOrderDetailDao.filterStockOrderDetail3(stockOrderDetailFilterRequest); + if (CollUtil.isNotEmpty(stockOrderDetailEntities)) { + StockOrderDetailEntity stockOrderDetailEntity = stockOrderDetailEntities.get(0); + if (Integer.parseInt(stockOrderDetailEntity.getReCount()) > 1) { + stockOrderDetailEntity.setReCount(String.valueOf(Integer.parseInt(stockOrderDetailEntity.getReCount()) - 1)); //实际数量 - 1 + stockOrderDetailEntity.setSweepCount(String.valueOf(Integer.parseInt(stockOrderDetailEntity.getSweepCount()) - 1)); //扫码数量 -1 + //更新业务单据详情 + stockOrderDetailDao.updateById(stockOrderDetailEntity); } else { - //更新库存 - invProductDao.updateInvProduct(invProductEntity); + //删除业务单据详情 + stockOrderDetailDao.deleteById(stockOrderDetailEntity.getId()); } } - } - //删除单据详情 - FilterErpOrderRequest deleteOrderDetailParam = new FilterErpOrderRequest(); - deleteOrderDetailParam.setOrderIdFk(order.getId()); - deleteOrderDetailParam.setGoodsid(warehouseEntity.getRelId()); - deleteOrderDetailParam.setBatchNo(warehouseEntity.getBatchNo()); - orderDetailDao.deleteOrder(deleteOrderDetailParam); //删除扫码单据详情 - - StockOrderDetailFilterRequest deleteStockOrderDetailParam = new StockOrderDetailFilterRequest(); - deleteStockOrderDetailParam.setProductId(warehouseEntity.getRelId()); - deleteStockOrderDetailParam.setBatchNo(warehouseEntity.getBatchNo()); - deleteStockOrderDetailParam.setOrderIdFk(order.getId()); - stockOrderDetailDao.deleteStockOrderDetail(deleteStockOrderDetailParam); //删除业务单据详情 - } - - int orderDetailCount = orderDetailDao.countByOrderId(order.getId()); - if (orderDetailCount == 0) { - //当单据详情数量为0时,删除扫码单据和业务单据 - orderDao.deleteById(order.getId()); - stockOrderDao.deleteByOrderIdFk(order.getId()); + //若扫码单据详情已全部被删除,关联删除扫码单据和业务单据 + int orderDetailCount = orderDetailDao.countByOrderId(order.getId()); + if (orderDetailCount == 0) { + //当单据详情数量为0时,删除扫码单据和业务单据 + orderDao.deleteById(order.getId()); + stockOrderDao.deleteByOrderIdFk(order.getId()); + } + } } } } - } } diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/CodesDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/CodesDao.xml index 5617bc2..bfd463b 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/CodesDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/CodesDao.xml @@ -183,4 +183,10 @@ and code = #{code} + + delete + from io_codes + where id = #{id} + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/OrderDetailDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/OrderDetailDao.xml index a2982c0..478ccde 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/OrderDetailDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/OrderDetailDao.xml @@ -273,5 +273,21 @@ + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml index d5df34b..fad5f55 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDao.xml @@ -291,4 +291,10 @@ where orderIdFk = #{orderIdFk} + + \ No newline at end of file diff --git a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDetail.xml b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDetail.xml index 65e1ebe..350fcc3 100644 --- a/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDetail.xml +++ b/api-admin/src/main/resources/mybatis/mapper/inout/StockOrderDetail.xml @@ -129,6 +129,7 @@ sweepCount=#{sweepCount}, count=#{count}, reCount=#{reCount}, + sweepCount=#{sweepCount}, price=#{price}, secSalesListNo=#{secSalesListNo}, firstSalesInvNo=#{firstSalesInvNo}, @@ -174,4 +175,21 @@ + + \ No newline at end of file