package com.glxp.api.service.basic; import com.glxp.api.util.IntUtil; import org.springframework.beans.BeanUtils; 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.glxp.api.constant.ConstantStatus; import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.thrsys.ThrProductsEntity; import com.glxp.api.http.NmpaUdiClient; import com.glxp.api.req.basic.UdiCombineRequest; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.req.thrsys.FilterThrProductsRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.service.thrsys.ThrProductsService; import com.glxp.api.util.CustomUtil; import com.glxp.api.util.GennerOrderUtils; import com.glxp.api.util.udi.UdiInfoUtil; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Date; import java.util.List; import java.util.logging.Logger; /** * 耗材字典对照 */ @Service public class UdiContrastService { @Resource UdiRelevanceDao udiRelevanceDao; @Resource GennerOrderUtils gennerOrderUtils; @Resource ThrProductsService thrProductsService; @Resource UdiRelevanceService udiRelevanceService; @Resource UdiProductService udiProductService; @Resource NmpaUdiClient udiDlHttpClient; public boolean isExit(String originUuid, String mainId, String thirdSys) { String deviceRecordKey = null; if (StrUtil.isNotEmpty(originUuid)) { UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid); if (udiProductEntity != null) deviceRecordKey = udiProductEntity.getDeviceRecordKey(); } if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { List udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) { List udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { return true; } } } return false; } else if (StrUtil.isEmpty(originUuid) && StrUtil.isNotEmpty(mainId)) { List udiRelevanceEntities = findByMainId(mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getOriginUuid()) && StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) { return true; } } } return false; } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { List udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } return false; } public boolean isDrugExit(String originUuid,String mainId, String thirdSys) { String deviceRecordKey = null; //国家库的key if (StrUtil.isNotEmpty(originUuid)) { UdiProductEntity udiProductEntity = udiProductService.findOneByOriginUuid(originUuid); if (udiProductEntity != null) deviceRecordKey = udiProductEntity.getDeviceRecordKey(); } if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isNotEmpty(mainId) && StrUtil.isBlank(thirdSys)) { List udiRelevanceEntities = findDrkByUnion(deviceRecordKey, mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } else if (StrUtil.isNotEmpty(deviceRecordKey) && StrUtil.isEmpty(mainId)) { List udiRelevanceEntities = findByDeviceRecordKey(deviceRecordKey); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getMainId()) && StrUtil.isNotEmpty(udiRelevanceEntity.getOriginUuid())) { return true; } } } return false; } else if (StrUtil.isNotEmpty(originUuid) && StrUtil.isNotEmpty(mainId)) { List udiRelevanceEntities = findByMainId(mainId); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { for (UdiRelevanceResponse udiRelevanceEntity : udiRelevanceEntities) { if (StrUtil.isEmpty(udiRelevanceEntity.getOriginUuid()) && StrUtil.isNotEmpty(udiRelevanceEntity.getMainId())) { return true; } } } return false; } else if (StrUtil.isNotBlank(deviceRecordKey) && StrUtil.isNotBlank(mainId) && StrUtil.isNotBlank(thirdSys)) { List udiRelevanceEntities = findByUnion2(deviceRecordKey, mainId, thirdSys); if (CollUtil.isNotEmpty(udiRelevanceEntities)) { return true; } else return false; } return false; } private List findByUnion2(String deviceRecordKey, String mainId, String thirdSys) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); filterUdiRelRequest.setThirdSys(thirdSys); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByUnion(String originUuid, String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setOriginUuid(originUuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findDrkByUnion(String deviceRecordKey, String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByUuid(String uuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUuid(uuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public UdiRelevanceResponse findById(Long id) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setId(id); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); if (CollUtil.isNotEmpty(udiRelevanceEntities)) return udiRelevanceEntities.get(0); return null; } public List findByOriginUuid(String originUuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setOriginUuid(originUuid); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByDeviceRecordKey(String deviceRecordKey) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setDeviceRecordKey(deviceRecordKey); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List findByMainId(String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public List filterAll(FilterUdiRelRequest filterUdiRelRequest) { List udiRelevanceEntities = udiRelevanceDao.contrastJoinSelect(filterUdiRelRequest); return udiRelevanceEntities; } public void createUnionContrast(UdiCombineRequest udiCombineRequest, String key) { List udiInfoEntities = udiDlHttpClient.getOrUpdateByUuid(key); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setThirdId(udiCombineRequest.getThirdId()); udiRelevanceEntity.setMainId(udiCombineRequest.getThirdId()); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(udiInfoEntities.get(0).getUuid()); udiRelevanceEntity.setSupName(udiCombineRequest.getSupName()); udiRelevanceEntity.setId(gennerOrderUtils.getRelId()); udiRelevanceEntity.setIsDisable(false); UdiProductEntity udiProductEntity = getDiProduct(udiInfoEntities); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); insertUdiInfos(udiInfoEntities); } public UdiProductEntity getDiProduct(List udiInfoEntities) { return udiInfoEntities.stream() .filter(udiProductEntity -> IntUtil.value(udiProductEntity.getDiType()) == 1) .findFirst() .orElse(null); } public void createOnlyMainId(String mainId) { FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest(); filterThrProductsRequest.setCode(mainId); ThrProductsEntity thrProductsEntity = thrProductsService.selectByCode(mainId); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setThirdId(thrProductsEntity.getCode()); udiRelevanceEntity.setMainId(thrProductsEntity.getCode()); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(CustomUtil.getUUId()); udiRelevanceEntity.setSupName(thrProductsEntity.getSupName()); udiRelevanceEntity.setId(gennerOrderUtils.getRelId()); udiRelevanceEntity.setIsDisable(false); UdiProductEntity udiProductEntity = new UdiProductEntity(); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); udiProductEntity.setNameCode(thrProductsEntity.getCode()); udiProductEntity.setCpmctymc(thrProductsEntity.getName()); udiProductEntity.setManufactory(thrProductsEntity.getManufactory()); udiProductEntity.setYlqxzcrbarmc(thrProductsEntity.getManufactory()); udiProductEntity.setGgxh(thrProductsEntity.getSpec()); udiProductEntity.setZczbhhzbapzbh(thrProductsEntity.getRegisterNo()); udiProductEntity.setUuid(udiRelevanceEntity.getUuid()); udiProductEntity.setProductType(ConstantStatus.PRODUCT_TYPE_THIRD); udiProductEntity.setDiType(1); udiProductEntity.setScbssfbhph("是"); udiProductEntity.setScbssfbhscrq("是"); udiProductEntity.setScbssfbhsxrq("是"); udiProductEntity.setScbssfbhxlh("否"); udiProductEntity.setProductsType(thrProductsEntity.getProductType()); if (thrProductsEntity.getProductType() == 2){ udiProductEntity.setRequireScanCode(1); udiProductEntity.setMajorStatus(1); }else { udiProductEntity.setRequireScanCode(0); } if (StrUtil.isEmpty(udiProductEntity.getPrice())) { udiProductEntity.setPrice(null); } udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity); udiProductService.insertUdiInfo(udiProductEntity); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); } public Long createOnlyUuid(UdiCombineRequest udiCombineRequest, String key) { List udiInfoEntities = udiDlHttpClient.getOrUpdateByUuid(key); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setUpdateTime(new Date()); udiRelevanceEntity.setModifyTime(new Date()); udiRelevanceEntity.setUuid(udiInfoEntities.get(0).getUuid()); if (StrUtil.isNotBlank(udiCombineRequest.getSupName())) { udiRelevanceEntity.setSupName(udiCombineRequest.getSupName()); } Long relId = gennerOrderUtils.getRelId(); udiRelevanceEntity.setId(relId); udiRelevanceEntity.setIsDisable(false); UdiProductEntity udiProductEntity = udiRelevanceService.getDiProduct(udiInfoEntities); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, udiProductEntity); insertUdiInfos(udiInfoEntities); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); return relId; } public void insertUdiInfos(List udiInfoEntities) { Boolean falg = false; String uuid = ""; if (CollUtil.isNotEmpty(udiInfoEntities)) { UdiProductEntity udiProductEntity = udiProductService.findByUuid(udiInfoEntities.get(0).getUuid()); if (udiProductEntity == null) { for (UdiProductEntity udiInfoEntity : udiInfoEntities) { udiInfoEntity.setId(IdUtil.getSnowflakeNextId()); if (udiInfoEntity.getZxxsbzbhsydysl() > 0) { uuid = udiInfoEntity.getUuid(); falg = true; } } udiProductService.insertUdiInfos(UdiInfoUtil.initUdiInfoEntitys(udiInfoEntities)); //判断产品zxxsbzbhsydysl大于0就启动使用单元 if (falg) { QueryWrapper ew = new QueryWrapper<>(); ew.eq("uuid", uuid); UdiRelevanceEntity udiRelevanceEntity = new UdiRelevanceEntity(); udiRelevanceEntity.setIsUseDy(true); udiRelevanceService.update(udiRelevanceEntity, ew); } } } } }