|  |  | @ -7,12 +7,10 @@ import cn.hutool.core.util.StrUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.github.pagehelper.PageHelper; |  |  |  | import com.github.pagehelper.PageHelper; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.constant.ConstantStatus; |  |  |  | import com.glxp.sale.admin.constant.ConstantStatus; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.constant.ConstantType; |  |  |  | import com.glxp.sale.admin.constant.ConstantType; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.glxp.sale.admin.dao.basic.BussinessLocalTypeDao; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.basic.BussinessTypeDao; |  |  |  | import com.glxp.sale.admin.dao.basic.BussinessTypeDao; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.inout.*; |  |  |  | import com.glxp.sale.admin.dao.inout.*; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.inventory.InvProductDao; |  |  |  | import com.glxp.sale.admin.dao.inventory.*; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.inventory.InvProductDetailDao; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.inventory.InvSubWarehouseDao; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.dao.inventory.InvWarehouseDao; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; |  |  |  | import com.glxp.sale.admin.entity.basic.BussinessTypeEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.entity.inout.OrderEntity; |  |  |  | import com.glxp.sale.admin.entity.inout.OrderEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.sale.admin.entity.inout.StockOrderEntity; |  |  |  | import com.glxp.sale.admin.entity.inout.StockOrderEntity; | 
			
		
	
	
		
		
			
				
					|  |  | @ -49,25 +47,25 @@ import java.util.stream.Collectors; | 
			
		
	
		
		
			
				
					
					|  |  |  | public class OrderServiceImpl implements OrderService { |  |  |  | public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     OrderDao orderDao; |  |  |  |     private OrderDao orderDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     WarehouseDao warehouseDao; |  |  |  |     private WarehouseDao warehouseDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     BussinessTypeDao bussinessTypeDao; |  |  |  |     private BussinessTypeDao bussinessTypeDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     StockOrderDao stockOrderDao; |  |  |  |     private StockOrderDao stockOrderDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     InvWarehouseDao invWarehouseDao; |  |  |  |     private InvWarehouseDao invWarehouseDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     InvSubWarehouseService invSubWarehouseService; |  |  |  |     private InvSubWarehouseService invSubWarehouseService; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     CodesDao codesDao; |  |  |  |     private CodesDao codesDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     CodesTempDao codesTempDao; |  |  |  |     private CodesTempDao codesTempDao; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     SystemParamConfigService systemParamConfigService; |  |  |  |     private SystemParamConfigService systemParamConfigService; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     GennerOrderUtils gennerOrderUtils; |  |  |  |     private GennerOrderUtils gennerOrderUtils; | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     private InvProductDao invProductDao; |  |  |  |     private InvProductDao invProductDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
	
		
		
			
				
					|  |  | @ -78,6 +76,12 @@ public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |     private OrderDetailDao orderDetailDao; |  |  |  |     private OrderDetailDao orderDetailDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     private InvSubWarehouseDao invSubWarehouseDao; |  |  |  |     private InvSubWarehouseDao invSubWarehouseDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private BussinessLocalTypeDao bussinessLocalTypeDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private InvPreInProductDao invPreInProductDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private InvPreInProductDetailDao invPreInProductDetailDao; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) { |  |  |  |     public List<OrderEntity> listOrders(OrderQueryRequest orderQueryRequest) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -445,6 +449,61 @@ public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |             orderFilterRequest.setId(id); |  |  |  |             orderFilterRequest.setId(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |             OrderEntity orderEntity = orderDao.findOne(orderFilterRequest); |  |  |  |             OrderEntity orderEntity = orderDao.findOne(orderFilterRequest); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { |  |  |  |             if (orderEntity.getStatus().equals(ConstantStatus.ORDER_STATUS_SUCCESS)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 //删除单据相关数据,更新库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 try { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (isPreInOrder(orderEntity)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         //查询预验收库详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         filterInvProductDetailRequest.setOrderIdFk(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         List<InvProductDetailEntity> invProductDetailEntities = invPreInProductDetailDao.filterInvProductDetail(filterInvProductDetailRequest); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         Map<String, List<InvProductDetailEntity>> invPreInProductDetailMap = invProductDetailEntities.stream().collect(Collectors.groupingBy(InvProductDetailEntity::getProductIdFk)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         List<InvProductEntity> invPreInProductList = new ArrayList<>(invPreInProductDetailMap.keySet().size()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             FilterInvProductRequest filterInvProductRequest = new FilterInvProductRequest(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             filterInvProductRequest.setRelIdFk(invProductDetailEntity.getProductIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             filterInvProductRequest.setSupId(invProductDetailEntity.getSupId()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             filterInvProductRequest.setInvStorageCode(invProductDetailEntity.getInvStorageCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             filterInvProductRequest.setInvWarehouseCode(invProductDetailEntity.getInvWarehouseCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             if (StrUtil.isBlank(invProductDetailEntity.getBatchNo())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 filterInvProductRequest.setBatchNo("empty"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 filterInvProductRequest.setBatchNo(invProductDetailEntity.getBatchNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             List<InvProductEntity> invPerInProductEntities = invPreInProductDao.filterInvProduct(filterInvProductRequest); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             InvProductEntity invProductEntity = invPerInProductEntities.get(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             if (ConstantType.TYPE_PUT.equals(invProductDetailEntity.getMainAction())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 //入库,在原有库存基础上减库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 int count = invProductEntity.getInCount() - invProductDetailEntity.getCount(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 invProductEntity.setInCount(count); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } else if (ConstantType.TYPE_OUT.equals(invProductDetailEntity.getMainAction())) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 //出库,在原有库存上增加库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 int count = invProductEntity.getOutCount() - invProductDetailEntity.getCount(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 invProductEntity.setOutCount(count); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             invPreInProductList.add(invProductEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         //删除库存详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         invPreInProductDetailDao.deleteByOrderId(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         //更新库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         for (InvProductEntity invProductEntity : invPreInProductList) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             //查询库存码详情,如果库存码详情为空,则删除此库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             FilterInvProductDetailRequest detailParams = new FilterInvProductDetailRequest(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             detailParams.setBatchNo(invProductEntity.getBatchNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             detailParams.setInvCodes(Collections.singletonList(invProductEntity.getInvStorageCode())); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             detailParams.setProductIdFk(invProductEntity.getRelIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             int count = invPreInProductDetailDao.statCount(detailParams); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             if (count == 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 //如果库存码详情为空,则删除此库存
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 invPreInProductDao.deleteById(String.valueOf(invProductEntity.getId())); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                                 invProductDao.updateInvProduct(invProductEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |                         //查询库存详情
 |  |  |  |                         //查询库存详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); |  |  |  |                         FilterInvProductDetailRequest filterInvProductDetailRequest = new FilterInvProductDetailRequest(); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         filterInvProductDetailRequest.setOrderIdFk(id); |  |  |  |                         filterInvProductDetailRequest.setOrderIdFk(id); | 
			
		
	
	
		
		
			
				
					|  |  | @ -479,8 +538,6 @@ public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                             invProductList.add(productEntity); |  |  |  |                             invProductList.add(productEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                 //删除单据相关数据,更新库存
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 try { |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                         //删除库存详情
 |  |  |  |                         //删除库存详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                         invProductDetailDao.deleteByOrderId(id); |  |  |  |                         invProductDetailDao.deleteByOrderId(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |                         //更新库存
 |  |  |  |                         //更新库存
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -498,6 +555,8 @@ public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                                 invProductDao.updateInvProduct(invProductEntity); |  |  |  |                                 invProductDao.updateInvProduct(invProductEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |                             } |  |  |  |                             } | 
			
		
	
		
		
			
				
					
					|  |  |  |                         } |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     //删除码详情
 |  |  |  |                     //删除码详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |                     codesDao.deleteByOrderId(id); |  |  |  |                     codesDao.deleteByOrderId(id); | 
			
		
	
		
		
			
				
					
					|  |  |  |                     //查询业务单据
 |  |  |  |                     //查询业务单据
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -553,4 +612,15 @@ public class OrderServiceImpl implements OrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds); |  |  |  |         return orderDao.updateOrderTime(actDate, auditTime, DateUtil.getDateTime(), orderIds); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 判断单据是否是预验收单据 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @param orderEntity | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private boolean isPreInOrder(OrderEntity orderEntity) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         return bussinessLocalTypeDao.selectPreInByOrderType(orderEntity.getAction()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | } |  |  |  | } | 
			
		
	
	
		
		
			
				
					|  |  | 
 |