|  |  | @ -45,8 +45,10 @@ import com.glxp.api.service.inout.IoOrderService; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.service.system.SystemParamConfigService; |  |  |  | import com.glxp.api.service.system.SystemParamConfigService; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.service.thrsys.ThrInvOrderService; |  |  |  | import com.glxp.api.service.thrsys.ThrInvOrderService; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.util.GennerOrderUtils; |  |  |  | import com.glxp.api.util.GennerOrderUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.glxp.api.util.IntUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.util.OrderNoTypeBean; |  |  |  | import com.glxp.api.util.OrderNoTypeBean; | 
			
		
	
		
		
			
				
					
					|  |  |  | import com.glxp.api.util.udi.FilterUdiUtils; |  |  |  | import com.glxp.api.util.udi.FilterUdiUtils; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | import com.glxp.api.util.udi.UdiCalCountUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | import lombok.extern.slf4j.Slf4j; |  |  |  | import lombok.extern.slf4j.Slf4j; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.apache.poi.ss.formula.functions.T; |  |  |  | import org.apache.poi.ss.formula.functions.T; | 
			
		
	
		
		
			
				
					
					|  |  |  | import org.springframework.beans.BeanUtils; |  |  |  | import org.springframework.beans.BeanUtils; | 
			
		
	
	
		
		
			
				
					|  |  | @ -91,7 +93,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |     UdiRelevanceService udiRelevanceService; |  |  |  |     UdiRelevanceService udiRelevanceService; | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |     IoCodeTempDao ioCodeTempDao; |  |  |  |     IoCodeTempDao ioCodeTempDao; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |     @Resource | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     IBasicBussinessTypeService bussinessTypeService; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     IoAddInoutService addInoutService; | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     @Resource | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     UdiCalCountUtil udiCalCountUtil; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     // 设置要输出的日期格式
 |  |  |  |     // 设置要输出的日期格式
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |  |  |  |     SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); | 
			
		
	
	
		
		
			
				
					|  |  | @ -201,6 +208,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setOrderIdFk(billNo); |  |  |  |                 thrInvOrderDetail.setOrderIdFk(billNo); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setNameCode(nameCode); |  |  |  |                 thrInvOrderDetail.setNameCode(nameCode); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setRelId(relId); |  |  |  |                 thrInvOrderDetail.setRelId(relId); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 //校验产品是否被供应商关联
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (udiRlSupEntity != null) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     exmsg.append(thrCode + "供应商未关联"); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setUdiCode(udiCode); |  |  |  |                 thrInvOrderDetail.setUdiCode(udiCode); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setThrCode(thrCode); |  |  |  |                 thrInvOrderDetail.setThrCode(thrCode); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setReCount(String.valueOf(count)); |  |  |  |                 thrInvOrderDetail.setReCount(String.valueOf(count)); | 
			
		
	
	
		
		
			
				
					|  |  | @ -208,7 +221,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setProductionDate(udiEntity.getProduceDate()); |  |  |  |                 thrInvOrderDetail.setProductionDate(udiEntity.getProduceDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setExpireDate(udiEntity.getExpireDate()); |  |  |  |                 thrInvOrderDetail.setExpireDate(udiEntity.getExpireDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetail.setSerialNo(udiEntity.getSerialNo()); |  |  |  |                 thrInvOrderDetail.setSerialNo(udiEntity.getSerialNo()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |                 thrInvOrderDetails.add(thrInvOrderDetail); |  |  |  |                 thrInvOrderDetails.add(thrInvOrderDetail); | 
			
		
	
		
		
			
				
					
					|  |  |  |             } else { |  |  |  |             } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 String mainAction = item.getMainAction(); |  |  |  |                 String mainAction = item.getMainAction(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -311,11 +323,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return thrInvOrderMapper.delete(uw); |  |  |  |         return thrInvOrderMapper.delete(uw); | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     IBasicBussinessTypeService bussinessTypeService; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Resource |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |     IoAddInoutService addInoutService; |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |     /** | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 普耗收费出入库明细单据生成 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @param generateOrderRequest | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public boolean generateOrder(GenerateOrderRequest generateOrderRequest) { |  |  |  |     public boolean generateOrder(GenerateOrderRequest generateOrderRequest) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         String billNo = generateOrderRequest.getBillNo(); |  |  |  |         String billNo = generateOrderRequest.getBillNo(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -340,7 +354,6 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>(); |  |  |  |         Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |         //往来类型为患者,则需要根据患者进行拆单
 |  |  |  |         //往来类型为患者,则需要根据患者进行拆单
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { |  |  |  |         if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |  | 
			
		
	
		
		
			
				
					
					|  |  |  |             grouped = thrInvOrderDetails.stream() |  |  |  |             grouped = thrInvOrderDetails.stream() | 
			
		
	
		
		
			
				
					
					|  |  |  |                     .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); |  |  |  |                     .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); | 
			
		
	
		
		
			
				
					
					|  |  |  |         } else { |  |  |  |         } else { | 
			
		
	
	
		
		
			
				
					|  |  | @ -387,7 +400,12 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         return true; |  |  |  |         return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |     /** | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * 高值耗材出入库明细单据生成 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @param generateOrderRequest | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      * @return | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     @Override |  |  |  |     @Override | 
			
		
	
		
		
			
				
					
					|  |  |  |     public boolean generateGhOrder(GenerateOrderRequest generateOrderRequest) { |  |  |  |     public boolean generateGhOrder(GenerateOrderRequest generateOrderRequest) { | 
			
		
	
		
		
			
				
					
					|  |  |  |         String billNo = generateOrderRequest.getBillNo(); |  |  |  |         String billNo = generateOrderRequest.getBillNo(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -406,6 +424,16 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |         //校验单据的relId有null不生成单据
 |  |  |  |         //校验单据的relId有null不生成单据
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if (!inspectionDocuments(thrInvOrderDetails)) return false; |  |  |  |         if (!inspectionDocuments(thrInvOrderDetails)) return false; | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         BasicBussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findByAction(generateOrderRequest.getAction()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         Map<String, List<ThrInvOrderDetail>> grouped = new HashMap<>(); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         //往来类型为患者,则需要根据患者进行拆单
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_INPUT) { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             grouped = thrInvOrderDetails.stream() | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     .collect(Collectors.groupingBy(ThrInvOrderDetail::getSickerCode)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } else { | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             grouped.put(generateOrderRequest.getFromCorp(), thrInvOrderDetails); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         for (Map.Entry<String, List<ThrInvOrderDetail>> entry : grouped.entrySet()) { | 
			
		
	
		
		
			
				
					
					|  |  |  |             //新单号
 |  |  |  |             //新单号
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); |  |  |  |             String newBillNo = gennerOrderUtils.createScOrderNo(new OrderNoTypeBean(Constant.SCAN_ORDER, "yyyyMMdd")); | 
			
		
	
		
		
			
				
					
					|  |  |  |             IoOrderEntity ioOrderEntity = new IoOrderEntity(); |  |  |  |             IoOrderEntity ioOrderEntity = new IoOrderEntity(); | 
			
		
	
	
		
		
			
				
					|  |  | @ -425,7 +453,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |             Long userId = customerService.getUserId(); |  |  |  |             Long userId = customerService.getUserId(); | 
			
		
	
		
		
			
				
					
					|  |  |  |             ioOrderEntity.setCreateUser(userId + ""); |  |  |  |             ioOrderEntity.setCreateUser(userId + ""); | 
			
		
	
		
		
			
				
					
					|  |  |  |             ioOrderEntity.setUpdateUser(userId + ""); |  |  |  |             ioOrderEntity.setUpdateUser(userId + ""); | 
			
		
	
		
		
			
				
					
					|  |  |  |         ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_NORMAL);//正常单据处理
 |  |  |  |             ioOrderEntity.setOrderType(ConstantStatus.ORDER_TYPE_SCAN);//正常单据处理
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             List<IoCodeTempEntity> newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size()); |  |  |  |             List<IoCodeTempEntity> newIoCodeTemps = new ArrayList<>(thrInvOrderDetails.size()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -444,9 +472,10 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |             thrInvOrder.setUpdateUser(userId + ""); |  |  |  |             thrInvOrder.setUpdateUser(userId + ""); | 
			
		
	
		
		
			
				
					
					|  |  |  |             thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); |  |  |  |             thrInvOrderMapper.updateByPrimaryKey(thrInvOrder); | 
			
		
	
		
		
			
				
					
					|  |  |  |             ioCodeTempDao.insertBatch(newIoCodeTemps); |  |  |  |             ioCodeTempDao.insertBatch(newIoCodeTemps); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |         } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         ioAddInoutService.dealProcess(ioOrderEntity); |  |  |  | //        ioAddInoutService.dealProcess(ioOrderEntity);
 | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         return true; |  |  |  |         return true; | 
			
		
	
		
		
			
				
					
					|  |  |  |     } |  |  |  |     } | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -683,8 +712,7 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |      * @param newBillNo |  |  |  |      * @param newBillNo | 
			
		
	
		
		
			
				
					
					|  |  |  |      * @return |  |  |  |      * @return | 
			
		
	
		
		
			
				
					
					|  |  |  |      */ |  |  |  |      */ | 
			
		
	
		
		
			
				
					
					|  |  |  |     private boolean copyIoCodeTemps |  |  |  |     private boolean copyIoCodeTemps(List<ThrInvOrderDetail> thrInvOrderDetails, List<IoCodeTempEntity> newIoCodeTemps, String | 
			
				
				
			
		
	
		
		
			
				
					
					|  |  |  |     (List<ThrInvOrderDetail> thrInvOrderDetails, List<IoCodeTempEntity> newIoCodeTemps, String |  |  |  |  | 
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             newBillNo, GenerateOrderRequest generateOrderRequest) { |  |  |  |             newBillNo, GenerateOrderRequest generateOrderRequest) { | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |         thrInvOrderDetails.forEach(item -> { |  |  |  |         thrInvOrderDetails.forEach(item -> { | 
			
		
	
	
		
		
			
				
					|  |  | @ -696,7 +724,11 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |             BeanUtils.copyProperties(item, ioCodeTempEntity); |  |  |  |             BeanUtils.copyProperties(item, ioCodeTempEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |             ioCodeTempEntity.setUpdateTime(new Date()); |  |  |  |             ioCodeTempEntity.setUpdateTime(new Date()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             ioCodeTempEntity.setCreateTime(new Date()); |  |  |  |             ioCodeTempEntity.setCreateTime(new Date()); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  |             ioCodeTempEntity.setSupId(item.getSupId()); | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ioCodeTempEntity.setProduceDate(item.getProductionDate()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ioCodeTempEntity.setCount(IntUtil.value(item.getReCount())); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ioCodeTempEntity.setReCount(udiCalCountUtil.getActCount(ioCodeTempEntity)); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |             ioCodeTempEntity.setCorpOrderId(item.getOrderIdFk()); | 
			
		
	
		
		
			
				
					
					|  |  |  |             newIoCodeTemps.add(ioCodeTempEntity); |  |  |  |             newIoCodeTemps.add(ioCodeTempEntity); | 
			
		
	
		
		
			
				
					
					|  |  |  |         }); |  |  |  |         }); | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | @ -809,6 +841,13 @@ public class ThrInvOrderServiceImpl implements ThrInvOrderService { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 if (ObjectUtil.isNull(relId)) { |  |  |  |                 if (ObjectUtil.isNull(relId)) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                     exmsg.append(thrCode + ","); |  |  |  |                     exmsg.append(thrCode + ","); | 
			
		
	
		
		
			
				
					
					|  |  |  |                 } |  |  |  |                 } | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 //校验产品是否被供应商关联
 | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 UdiRlSupEntity udiRlSupEntity = udiRlSupService.selOneByRlId(relId); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 if (udiRlSupEntity != null) | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     thrInvOrderDetail.setSupId(udiRlSupEntity.getCustomerId()); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                 else | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  |                     exmsg.append(thrCode + "供应商未关联"); | 
			
		
	
		
		
			
				
					
					|  |  |  |  |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |             }); |  |  |  |             }); | 
			
		
	
		
		
			
				
					
					|  |  |  |             if (exmsg.length() > 0) { |  |  |  |             if (exmsg.length() > 0) { | 
			
		
	
		
		
			
				
					
					|  |  |  |                 exmsg.deleteCharAt(exmsg.length() - 1); |  |  |  |                 exmsg.deleteCharAt(exmsg.length() - 1); | 
			
		
	
	
		
		
			
				
					|  |  | 
 |