package com.glxp.api.service.basic; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.entity.basic.BasicProductsEntity; import com.glxp.api.entity.basic.UdiEntity; import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.inout.IoCodeTempEntity; import com.glxp.api.entity.thrsys.ThrSystemEntity; import com.glxp.api.req.basic.CompanyProductRelevanceRequest; import com.glxp.api.req.basic.FilterUdiRelRequest; import com.glxp.api.res.basic.MainIdRelIdAndProductResponse; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.basic.UdiRlSupResponse; import com.glxp.api.service.thrsys.ThrSystemService; import com.glxp.api.util.IntUtil; import com.glxp.api.util.udi.FilterUdiUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; @Service @Transactional(rollbackFor = Exception.class) public class UdiRelevanceService extends ServiceImpl { @Resource UdiRelevanceDao udiRelevanceDao; @Resource UdiRlSupService udiRlSupService; @Resource ThrSystemService basicThirdSysService; public List filterUdiRelevance(FilterUdiRelRequest filterUdiRelRequest) { if (filterUdiRelRequest == null) { return Collections.emptyList(); } if (filterUdiRelRequest.getPage() != null) { int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); } List data = udiRelevanceDao.filterUdiRelevance(filterUdiRelRequest); return data; } public List filterCertUdi(FilterUdiRelRequest filterUdiRelRequest) { if (filterUdiRelRequest == null) { return Collections.emptyList(); } if (filterUdiRelRequest.getPage() != null) { int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); } List data = udiRelevanceDao.filterCertUdi(filterUdiRelRequest); return data; } public List filterUdiJoinSup(FilterUdiRelRequest filterUdiRelRequest) { if (filterUdiRelRequest == null) { return Collections.emptyList(); } if (filterUdiRelRequest.getPage() != null) { int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); } List data = udiRelevanceDao.filterUdiJoinSup(filterUdiRelRequest); return data; } public List filterUdiEntity(FilterUdiRelRequest filterUdiRelRequest) { List data = udiRelevanceDao.filterEntity(filterUdiRelRequest); return data; } public List selectAllByNameCode(String nameCode) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUniqueNameCode(nameCode); List udiRelevanceResponses = filterUdiRelevance(filterUdiRelRequest); return udiRelevanceResponses; } public UdiRelevanceResponse selectByNameCode(String nameCode) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUniqueNameCode(nameCode); List udiRelevanceResponses = filterUdiRelevance(filterUdiRelRequest); if (udiRelevanceResponses != null && udiRelevanceResponses.size() > 0) return udiRelevanceResponses.get(0); return null; } public UdiRelevanceResponse selectByRelId(String relId) { if (StrUtil.isEmpty(relId)) return null; FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setId(Long.parseLong(relId)); UdiRelevanceResponse udiRelevanceResponses = selectOneUdi(filterUdiRelRequest); return udiRelevanceResponses; } public List selectAllByNameCode(String nameCode, String unitFk) { List udiRelevanceResponses; if (StrUtil.isNotEmpty(unitFk)) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUniqueNameCode(nameCode); filterUdiRelRequest.setUnitFk(unitFk); filterUdiRelRequest.setIsDisable(false); filterUdiRelRequest.setKey("key"); udiRelevanceResponses = filterUdiJoinSup(filterUdiRelRequest); } else { udiRelevanceResponses = selectGroupByNameCode(nameCode, false); } return udiRelevanceResponses; } /** * */ public List selectDrugsByNameCode(IoCodeTempEntity codeEnttity, String unitFk) { List udiRelevanceResponses; if (StrUtil.isNotEmpty(unitFk)) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUniqueNameCode(codeEnttity.getNameCode()); filterUdiRelRequest.setUnitFk(unitFk); filterUdiRelRequest.setIsDisable(false); filterUdiRelRequest.setKey("key"); if (codeEnttity.getProductType() != null) { filterUdiRelRequest.setProductsType(codeEnttity.getProductType()); } udiRelevanceResponses = filterUdiJoinSup(filterUdiRelRequest); } else { udiRelevanceResponses = selectGroupByNameCode(codeEnttity.getNameCode(), false); } return udiRelevanceResponses; } /** * 根据收费项目查询产品信息 * * @return */ public UdiRelevanceResponse selectByPayFeeCode(String payFeeCode) { if (StrUtil.isEmpty(payFeeCode)) { return null; } List udiRelevanceResponses; FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setPayFeeCode(payFeeCode); udiRelevanceResponses = filterUdiJoinSup(filterUdiRelRequest); if (CollUtil.isNotEmpty(udiRelevanceResponses)) { return udiRelevanceResponses.get(0); } // if (udiRelevanceResponses.size() == 1) { // UdiRelevanceResponse udiRelevanceResponse = udiRelevanceResponses.get(0); // if (udiRelevanceResponse == null || udiRelevanceResponse.getProductType() == ConstantStatus.PRODUCT_TYPE_THIRD) { // return selectByMainId(nameCode); // } // } return null; } public boolean isExit() { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setPage(1); filterUdiRelRequest.setLimit(1); List data = filterUdiRelevance(filterUdiRelRequest); if (data != null && data.size() > 0) { return true; } return false; } public List filterUdiGp(FilterUdiRelRequest filterUdiRelRequest) { if (filterUdiRelRequest == null) { return Collections.emptyList(); } if (filterUdiRelRequest.getPage() != null) { int offset = (filterUdiRelRequest.getPage() - 1) * filterUdiRelRequest.getLimit(); PageHelper.offsetPage(offset, filterUdiRelRequest.getLimit()); } List data = udiRelevanceDao.filterUdiGp(filterUdiRelRequest); return data; } public boolean isExitByUuid(String uuid) { List udiRelevanceEntities = udiRelevanceDao.selectByUuid(uuid); if (udiRelevanceEntities != null && !udiRelevanceEntities.isEmpty()) { return true; } return false; } public List batchSelectByUuid(List uuids) { return udiRelevanceDao.batchSelectByUuid(uuids); } public List batchSelectByIds(List ids) { return udiRelevanceDao.batchSelectByIds(ids); } public List selectByUuid(String uuid) { return udiRelevanceDao.selectByUuid(uuid); } public UdiRelevanceEntity selectById(Long id) { return udiRelevanceDao.selectById(id); } public UdiRelevanceResponse selectGroupById(Long id) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setId(id); filterUdiRelRequest.setDiType(1); List data = udiRelevanceDao.filterUdiRelevance(filterUdiRelRequest); if (data != null && data.size() > 0) return data.get(0); return null; } public UdiRelevanceResponse selectUdiId(Long id) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setId(id); List data = udiRelevanceDao.filterUdiRelevance(filterUdiRelRequest); if (data != null && data.size() > 0) return data.get(0); return null; } public UdiRelevanceResponse selectSupGroupById(Long id, String supId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); if (StrUtil.isNotEmpty(supId)) filterUdiRelRequest.setUnitFk(supId); filterUdiRelRequest.setId(id); filterUdiRelRequest.setDiType(1); return udiRelevanceDao.selectOneUdiJoinSup(filterUdiRelRequest); } public UdiRelevanceEntity selectUpdateByUuid(String uuid) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setUuid(uuid); List data = udiRelevanceDao.filterEntity(filterUdiRelRequest); if (data != null && data.size() > 0) return data.get(0); return null; } public UdiRelevanceEntity selectUpdateByThirdId(String thirdId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); if (thirdId != null) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectMainThrSys(); String mainSys = basicThirdSysEntity.getThirdId(); if (mainSys.equals("thirdId")) { filterUdiRelRequest.setThirdId(thirdId); } else if (mainSys.equals("thirdId1")) { filterUdiRelRequest.setThirdId1(thirdId); } else if (mainSys.equals("thirdId2")) { filterUdiRelRequest.setThirdId2(thirdId); } else if (mainSys.equals("thirdId3")) { filterUdiRelRequest.setThirdId3(thirdId); } else if (mainSys.equals("thirdId4")) { filterUdiRelRequest.setThirdId4(thirdId); } } List data = udiRelevanceDao.filterEntity(filterUdiRelRequest); if (data != null && data.size() > 0) return data.get(0); return null; } public UdiRelevanceEntity selectByMainIdLimitOne(String mainId) { if (mainId == null) return null; FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); return udiRelevanceDao.selectByThirdId(filterUdiRelRequest); } public List selectByMainId(String mainId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); filterUdiRelRequest.setMainId(mainId); List udiRelevanceResponses = filterUdiRelevance(filterUdiRelRequest); return udiRelevanceResponses; } public UdiRelevanceEntity selectUpteaByAll(String uuid, String thirdId) { FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); if (thirdId != null) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectMainThrSys(); String mainSys = basicThirdSysEntity.getThirdId(); filterUdiRelRequest.setUuid(uuid); if (mainSys.equals("thirdId")) { filterUdiRelRequest.setThirdId(thirdId); } else if (mainSys.equals("thirdId1")) { filterUdiRelRequest.setThirdId1(thirdId); } else if (mainSys.equals("thirdId2")) { filterUdiRelRequest.setThirdId2(thirdId); } else if (mainSys.equals("thirdId3")) { filterUdiRelRequest.setThirdId3(thirdId); } else if (mainSys.equals("thirdId4")) { filterUdiRelRequest.setThirdId4(thirdId); } } List data = udiRelevanceDao.filterEntity(filterUdiRelRequest); if (data != null && data.size() > 0) return data.get(0); return null; } public UdiRelevanceEntity selectByThirdId(String thirdId, String thirdSys) { if (StrUtil.isEmpty(thirdId) || StrUtil.isEmpty(thirdSys)) { return null; } FilterUdiRelRequest filterUdiRelRequest = new FilterUdiRelRequest(); if ("thirdId".equals(thirdSys)) { filterUdiRelRequest.setThirdId(thirdId); } else if ("thirdId1".equals(thirdSys)) { filterUdiRelRequest.setThirdId1(thirdId); } else if ("thirdId2".equals(thirdSys)) { filterUdiRelRequest.setThirdId2(thirdId); } else if ("thirdId3".equals(thirdSys)) { filterUdiRelRequest.setThirdId3(thirdId); } else if ("thirdId4".equals(thirdSys)) { filterUdiRelRequest.setThirdId4(thirdId); } return udiRelevanceDao.selectByThirdId(filterUdiRelRequest); } public List selectListByThirdId(String thirdId, String thirdSys) { if (StrUtil.isEmpty(thirdId) || StrUtil.isEmpty(thirdSys)) { return null; } CompanyProductRelevanceRequest filterUdiRelRequest = new CompanyProductRelevanceRequest(); if ("thirdId".equals(thirdSys)) { filterUdiRelRequest.setThirdId(thirdId); } else if ("thirdId1".equals(thirdSys)) { filterUdiRelRequest.setThirdId1(thirdId); } else if ("thirdId2".equals(thirdSys)) { filterUdiRelRequest.setThirdId2(thirdId); } else if ("thirdId3".equals(thirdSys)) { filterUdiRelRequest.setThirdId3(thirdId); } else if ("thirdId4".equals(thirdSys)) { filterUdiRelRequest.setThirdId4(thirdId); } filterUdiRelRequest.setDiType(1); List data = udiRlSupService.filterUdiGp(filterUdiRelRequest); return data; } public UdiProductEntity getDiProduct(List udiInfoEntities) { return udiInfoEntities.stream() .filter(udiProductEntity -> IntUtil.value(udiProductEntity.getDiType()) == 1) .findFirst() .orElse(null); } public UdiRelevanceEntity insertDefaultLevel(UdiRelevanceEntity udiRelevanceEntity, UdiProductEntity udiProductEntity) { if (udiProductEntity != null) { udiRelevanceEntity.setDistributeLevel(IntUtil.value(udiProductEntity.getPackLevel())); udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode()); udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit()); udiRelevanceEntity.setDistributeLevelCount(IntUtil.value(udiProductEntity.getBhxjsl())); udiRelevanceEntity.setUseLevel(IntUtil.value(udiProductEntity.getPackLevel())); udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode()); udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit()); udiRelevanceEntity.setUseLeverCount(IntUtil.value(udiProductEntity.getBhxjsl())); } return udiRelevanceEntity; } public boolean insertUdiRelevance(UdiRelevanceEntity udiRelevanceEntity) { return udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity); } public boolean insertUdiRelevanceignore(UdiRelevanceEntity udiRelevanceEntity) { return udiRelevanceDao.insertUdiRelevanceignore(udiRelevanceEntity); } public boolean updateUdiRelevance(UdiRelevanceEntity udiRelevanceEntity) { ThrSystemEntity basicThirdSysEntity = basicThirdSysService.selectMainThrSys(); String mainSys = basicThirdSysEntity.getThirdId(); if (mainSys.equals("thirdId")) { udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId()); } else if (mainSys.equals("thirdId1")) { udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId1()); } else if (mainSys.equals("thirdId2")) { udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId2()); } else if (mainSys.equals("thirdId3")) { udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId3()); } else if (mainSys.equals("thirdId4")) { udiRelevanceEntity.setMainId(udiRelevanceEntity.getThirdId4()); } return udiRelevanceDao.updateUdiRelevance(udiRelevanceEntity); } public boolean deleteById(String id) { return udiRelevanceDao.deleteById(id); } public boolean deleteByIds(List ids) { return udiRelevanceDao.deleteByIds(ids); } public boolean deleteByUuid(String uuid) { return udiRelevanceDao.deleteByUuid(uuid); } public String findUuidById(String relId) { return udiRelevanceDao.selectUuidById(relId); } public List selectGroupByNameCode(String nameCode, Boolean isDisable) { return udiRelevanceDao.selectGroupByNameCode(nameCode, isDisable); } public String getRelIdByUdiCode(String code) { if (StrUtil.isBlank(code)) { return null; } UdiEntity udi = FilterUdiUtils.getUdi(code); return udiRelevanceDao.selectRelIdByNameCode(udi.getUdi()); } public UdiRelevanceResponse selectOneUdi(FilterUdiRelRequest filterUdiRelRequest) { return udiRelevanceDao.selectOneUdi(filterUdiRelRequest); } public MainIdRelIdAndProductResponse selectMainIdRelIdAndProductMap(List thrCodes, String thirdSys) { MainIdRelIdAndProductResponse mainIdRelIdAndProductResponse = new MainIdRelIdAndProductResponse(); Map mainIdRelIdMap = new HashMap<>(); Map relIdBasicProductsEntityMap = new HashMap<>(); QueryWrapper qw = new QueryWrapper<>(); qw.in(thirdSys, thrCodes); qw.ne("isDisable", true); qw.select("id", "mainId"); List udiRelevanceEntityList = udiRelevanceDao.selectList(qw); if (CollectionUtil.isNotEmpty(udiRelevanceEntityList)) { mainIdRelIdMap = udiRelevanceEntityList.stream().collect(Collectors.toMap(UdiRelevanceEntity::getMainId, udiRelevanceEntity -> udiRelevanceEntity)); // List relIds = udiRelevanceEntityList.stream().map(UdiRelevanceEntity::getId).collect(Collectors.toList()); // List basicProductsEntities = udiRelevanceDao.selectProductByRelIds(relIds); // if (CollectionUtil.isNotEmpty(basicProductsEntities)){ // relIdBasicProductsEntityMap = basicProductsEntities.stream().collect(Collectors.toMap(BasicProductsEntity::getId, x -> x)); // } } mainIdRelIdAndProductResponse.setMainIdRelIdMap(mainIdRelIdMap); mainIdRelIdAndProductResponse.setRelIdBasicProductsEntityMap(relIdBasicProductsEntityMap); return mainIdRelIdAndProductResponse; } public Integer findPurType(Long relId) { UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectOne(new QueryWrapper().select("purType").eq("id", relId).last("limit 1")); if (udiRelevanceEntity == null) return 0; return IntUtil.value(udiRelevanceEntity.getPurType()); } }