|  |  | @ -3,13 +3,10 @@ package com.glxp.api.admin.service.inventory.impl; | 
			
		
	
		
		
			
				
					
					|  |  |  | import cn.hutool.core.collection.CollUtil; |  |  |  | import cn.hutool.core.collection.CollUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | import cn.hutool.core.util.StrUtil; |  |  |  | import cn.hutool.core.util.StrUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.github.pagehelper.PageHelper; |  |  |  | import com.github.pagehelper.PageHelper; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.dao.inventory.InvMaintenanceOrderDao; |  |  |  | import com.glxp.api.admin.constant.ConstantType; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.dao.inventory.InvMaintenanceOrderDetailDao; |  |  |  | import com.glxp.api.admin.dao.inventory.*; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.dao.inventory.InvProductDetailDao; |  |  |  |  | 
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.entity.basic.UdiEntity; |  |  |  | import com.glxp.api.admin.entity.basic.UdiEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderDetailEntity; |  |  |  | import com.glxp.api.admin.entity.inventory.*; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.entity.inventory.InvMaintenanceOrderEntity; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.entity.inventory.InvProductDetailEntity; |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.req.inventory.AddMAOrderDetailRequest; |  |  |  | import com.glxp.api.admin.req.inventory.AddMAOrderDetailRequest; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.req.inventory.FilterInvMAOrderDetailRequest; |  |  |  | import com.glxp.api.admin.req.inventory.FilterInvMAOrderDetailRequest; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest; |  |  |  | import com.glxp.api.admin.req.inventory.FilterInvProductDetailRequest; | 
			
		
	
	
		
		
			
				
					|  |  | @ -25,7 +22,10 @@ import org.springframework.transaction.annotation.Transactional; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | import javax.annotation.Resource; |  |  |  | import javax.annotation.Resource; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.Collections; |  |  |  | import java.util.Collections; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.HashMap; | 
			
		
	
		
		
			
				
					
					|  |  |  | import java.util.List; |  |  |  | import java.util.List; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.Map; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import java.util.stream.Collectors; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | @Slf4j |  |  |  | @Slf4j | 
			
		
	
		
		
			
				
					
					|  |  |  | @Service |  |  |  | @Service | 
			
		
	
	
		
		
			
				
					|  |  | @ -38,6 +38,10 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { | 
			
		
	
		
		
			
				
					
					|  |  |  |     private InvMaintenanceOrderDao invMaintenanceOrderDao; |  |  |  |     private InvMaintenanceOrderDao invMaintenanceOrderDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     private InvProductDetailDao invProductDetailDao; |  |  |  |     private InvProductDetailDao invProductDetailDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private InvMaintenanceExplanationDao invMaExplanationDao; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     private InvProductDao invProductDao; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public List<InvMAOrderDetailResponse> filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest) { |  |  |  |     public List<InvMAOrderDetailResponse> filterList(FilterInvMAOrderDetailRequest filterInvMAOrderDetailRequest) { | 
			
		
	
	
		
		
			
				
					|  |  | @ -56,6 +60,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         UdiEntity udi = FilterUdiUtils.getUdi(invMaintenanceOrderDetailEntity.getCode()); |  |  |  |         UdiEntity udi = FilterUdiUtils.getUdi(invMaintenanceOrderDetailEntity.getCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |         //查询此条码是否重复
 |  |  |  |         //查询此条码是否重复
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         InvMaintenanceOrderDetailEntity maintenanceOrderDetailEntity = invMAOrderDetailDao.selectByOrderIdAndCode(invMaintenanceOrderDetailEntity.getOrderIdFk(), invMaintenanceOrderDetailEntity.getCode()); |  |  |  |         InvMaintenanceOrderDetailEntity maintenanceOrderDetailEntity = invMAOrderDetailDao.selectByOrderIdAndCode(invMaintenanceOrderDetailEntity.getOrderIdFk(), invMaintenanceOrderDetailEntity.getCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //查询养护说明
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (null != maintenanceOrderDetailEntity) { |  |  |  |         if (null != maintenanceOrderDetailEntity) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()))) { |  |  |  |             if (StrUtil.isBlank(udi.getSerialNo()) || (StrUtil.isBlank(udi.getBatchNo()) && StrUtil.isBlank(udi.getSerialNo()))) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 maintenanceOrderDetailEntity.setCount(maintenanceOrderDetailEntity.getCount() + 1); |  |  |  |                 maintenanceOrderDetailEntity.setCount(maintenanceOrderDetailEntity.getCount() + 1); | 
			
		
	
	
		
		
			
				
					|  |  | @ -87,6 +94,9 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 invMaintenanceOrderDetailEntity.setExpireDate(udi.getExpireDate()); |  |  |  |                 invMaintenanceOrderDetailEntity.setExpireDate(udi.getExpireDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 invMaintenanceOrderDetailEntity.setNameCode(udi.getUdi()); |  |  |  |                 invMaintenanceOrderDetailEntity.setNameCode(udi.getUdi()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 invMaintenanceOrderDetailEntity.setProductId(invProductDetailEntities.get(0).getProductIdFk()); |  |  |  |                 invMaintenanceOrderDetailEntity.setProductId(invProductDetailEntities.get(0).getProductIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (null != invMaintenanceExplanation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     invMaintenanceOrderDetailEntity.setRemark(invMaintenanceExplanation.getText()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |                 invMAOrderDetailDao.insert(invMaintenanceOrderDetailEntity); |  |  |  |                 invMAOrderDetailDao.insert(invMaintenanceOrderDetailEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } else { |  |  |  |             } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "当前仓库中不存在此产品,无法进行养护!"); |  |  |  |                 return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, "当前仓库中不存在此产品,无法进行养护!"); | 
			
		
	
	
		
		
			
				
					|  |  | @ -110,25 +120,68 @@ public class InvMAOrderDetailServiceImpl implements InvMAOrderDetailService { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public BaseResponse batchAddDetail(AddMAOrderDetailRequest addMAOrderDetailRequest) { |  |  |  |     public BaseResponse batchAddDetail(AddMAOrderDetailRequest addMAOrderDetailRequest) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         for (String invProductId : addMAOrderDetailRequest.getInvProductIds()) { |  |  |  |         //查询库存养护记录说明
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         InvMaintenanceExplanationEntity invMaintenanceExplanation = invMaExplanationDao.selectByStatus(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //遍历库存ID,查找库存详情的条码信息,生成库存养护记录详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         addMAOrderDetailRequest.getInvProductIds().forEach(invProductId -> { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //查询库存信息
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             InvProductEntity invProductEntity = invProductDao.selectById(invProductId); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //查询库存详情码信息
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest(); |  |  |  |             FilterInvProductDetailRequest detailRequest = new FilterInvProductDetailRequest(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             detailRequest.setId(invProductId); |  |  |  |             detailRequest.setProductIdFk(invProductEntity.getRelIdFk()); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             detailRequest.setBatchNo(invProductEntity.getBatchNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             detailRequest.setInvStorageCode(invProductEntity.getInvStorageCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             detailRequest.setInvWarehouseCode(invProductEntity.getInvWarehouseCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(detailRequest); |  |  |  |             List<InvProductDetailEntity> invProductDetailEntities = invProductDetailDao.filterInvProductDetail(detailRequest); | 
			
		
	
		
		
			
				
					
					|  |  |  |             InvProductDetailEntity invProductDetailEntity = invProductDetailEntities.get(0); |  |  |  |             //提取去重后的码集合
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             //生成库存养护记录详情
 |  |  |  |             List<String> codeList = invProductDetailEntities.stream().map(InvProductDetailEntity::getOriginCode).distinct().collect(Collectors.toList()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity(); |  |  |  |             //初始化码数量计算集合数据
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk()); |  |  |  |             Map<String, Integer> codeMap = new HashMap<>(codeList.size()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setCode(invProductDetailEntity.getOriginCode()); |  |  |  |             codeList.forEach(code -> codeMap.put(code, 0)); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk()); |  |  |  |             //计算当前在库存中的码明细
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode()); |  |  |  |             for (InvProductDetailEntity invProductDetailEntity : invProductDetailEntities) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setNameCode(udi.getUdi()); |  |  |  |                 Integer count = codeMap.get(invProductDetailEntity.getOriginCode()); | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setProduceDate(invProductDetailEntity.getProductionDate()); |  |  |  |                 if (invProductDetailEntity.getMainAction().equals(ConstantType.TYPE_OUT)) { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setExpireDate(invProductDetailEntity.getExpireDate()); |  |  |  |                     //出库
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setCount(invProductDetailEntity.getCount()); |  |  |  |                     count = count - 1; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setMaintenanceStatus(0); |  |  |  |                 } else { | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             maOrderDetail.setDeviceStatus(1); |  |  |  |                     //入库
 | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |             invMAOrderDetailDao.insert(maOrderDetail); |  |  |  |                     count = count + 1; | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |         } |  |  |  |                 } | 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 codeMap.put(invProductDetailEntity.getOriginCode(), count); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             //根据库存中的码明细,生成库存养护记录详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             for (String code : codeMap.keySet()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (codeMap.get(code) > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     //获取库存详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     InvProductDetailEntity invProductDetailEntity = null; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     for (InvProductDetailEntity detailEntity : invProductDetailEntities) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         if (detailEntity.getOriginCode().equals(code)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             invProductDetailEntity = detailEntity; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                             break; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     //生成库存养护记录详情
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     InvMaintenanceOrderDetailEntity maOrderDetail = new InvMaintenanceOrderDetailEntity(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setOrderIdFk(addMAOrderDetailRequest.getOrderIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setCode(invProductDetailEntity.getOriginCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setProductId(invProductDetailEntity.getProductIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     UdiEntity udi = FilterUdiUtils.getUdi(invProductDetailEntity.getOriginCode()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setNameCode(udi.getUdi()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setProduceDate(udi.getProduceDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setExpireDate(udi.getExpireDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setBatchNo(udi.getBatchNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setCount(codeMap.get(code)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setMaintenanceStatus(0); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     maOrderDetail.setDeviceStatus(1); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     if (null != invMaintenanceExplanation) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                         maOrderDetail.setRemark(invMaintenanceExplanation.getText()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     invMAOrderDetailDao.insert(maOrderDetail); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         }); | 
			
		
	
		
		
			
				
					
					|  |  |  |         return ResultVOUtils.success("添加成功"); |  |  |  |         return ResultVOUtils.success("添加成功"); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |