|
@@ -5,12 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.diagbot.dto.KlConceptSimDTO;
|
|
|
import com.diagbot.dto.KlDrugRegisterDTO;
|
|
|
import com.diagbot.entity.CommonParam;
|
|
|
+import com.diagbot.entity.KlConcept;
|
|
|
import com.diagbot.entity.KlDrugMapping;
|
|
|
import com.diagbot.entity.KlDrugRegister;
|
|
|
import com.diagbot.enums.InsertOrUpdateEnum;
|
|
|
import com.diagbot.enums.IsDeleteEnum;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.service.KlDrugMappingService;
|
|
|
import com.diagbot.service.KlDrugRegisterService;
|
|
|
import com.diagbot.service.impl.KlDrugRegisterServiceImpl;
|
|
|
import com.diagbot.util.BeanUtil;
|
|
@@ -25,6 +27,8 @@ import com.diagbot.vo.KlDrugRegisterPageVO;
|
|
|
import com.diagbot.vo.KlDrugRegisterSaveVO;
|
|
|
import com.diagbot.vo.KlDrugSearchVO;
|
|
|
import com.google.common.collect.Lists;
|
|
|
+import org.apache.commons.collections4.map.LinkedMap;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
|
import org.springframework.stereotype.Component;
|
|
@@ -32,6 +36,8 @@ import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
import java.io.InputStream;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author zhoutg
|
|
@@ -42,7 +48,8 @@ import java.util.List;
|
|
|
public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
|
|
|
@Autowired
|
|
|
- KlDrugMappingFacade klDrugMappingFacade;
|
|
|
+ @Qualifier("klDrugMappingServiceImpl")
|
|
|
+ KlDrugMappingService klDrugMappingService;
|
|
|
@Autowired
|
|
|
KlConceptFacade klConceptFacade;
|
|
|
@Autowired
|
|
@@ -86,7 +93,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
this.saveOrUpdate(klDrugRegister);
|
|
|
|
|
|
// 保存药品通用名和注册名映射关系
|
|
|
- klDrugMappingFacade.remove(new QueryWrapper<KlDrugMapping>()
|
|
|
+ klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>()
|
|
|
.eq("register_id", klDrugRegister.getId()));
|
|
|
|
|
|
// 保存药品通用名和注册药品的关联
|
|
@@ -98,7 +105,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
klDrugMapping.setModifier(param.getPerson());
|
|
|
klDrugMapping.setGmtModified(param.getNow());
|
|
|
klDrugMapping.setGmtCreate(param.getNow());
|
|
|
- klDrugMappingFacade.save(klDrugMapping);
|
|
|
+ klDrugMappingService.save(klDrugMapping);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -134,7 +141,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
* @return
|
|
|
*/
|
|
|
public void deleteByIdFac(KlDrugRegisterDelVO klDrugRegisterDelVO) {
|
|
|
- List<KlDrugMapping> klDrugMappingList = klDrugMappingFacade.list(new QueryWrapper<KlDrugMapping>()
|
|
|
+ List<KlDrugMapping> klDrugMappingList = klDrugMappingService.list(new QueryWrapper<KlDrugMapping>()
|
|
|
.eq("is_deleted", IsDeleteEnum.N.getKey())
|
|
|
.eq("register_id", klDrugRegisterDelVO.getId()));
|
|
|
if (ListUtil.isNotEmpty(klDrugMappingList)) {
|
|
@@ -148,7 +155,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
// throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "已关联药品通用名:" + errMsg);
|
|
|
// }
|
|
|
// }
|
|
|
- klDrugMappingFacade.remove(new QueryWrapper<KlDrugMapping>().in("register_id", klDrugRegisterDelVO.getId()));
|
|
|
+ klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>().in("register_id", klDrugRegisterDelVO.getId()));
|
|
|
}
|
|
|
this.remove(new QueryWrapper<KlDrugRegister>().eq("id", klDrugRegisterDelVO.getId()));
|
|
|
}
|
|
@@ -195,58 +202,69 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
*
|
|
|
* @param file
|
|
|
*/
|
|
|
- public void importRegister(MultipartFile file) {
|
|
|
+ public Map importRegister(MultipartFile file) {
|
|
|
+ Map res = new LinkedMap();
|
|
|
try {
|
|
|
InputStream inputStream = file.getInputStream();
|
|
|
- // List<String[]> list = XLSXCovertCSVReader
|
|
|
- // .readerExcel(
|
|
|
- // "D:\\newSVN\\2020新版CDSS\\05.其他资料\\数据\\其他数据\\【注册药品导入模板】 - 副本.xlsx",
|
|
|
- // "注册药品", 100);
|
|
|
-
|
|
|
-
|
|
|
- // Map<String, String> map = new LinkedHashMap();
|
|
|
- // map.put("注册代码", "drugCode");
|
|
|
- // map.put("注册名称", "name");
|
|
|
- // KlDrugRegisterImportExVO klDrugRegisterImportExVO = new KlDrugRegisterImportExVO();
|
|
|
-
|
|
|
- this.remove(new QueryWrapper<KlDrugRegister>());
|
|
|
-
|
|
|
- List<String[]> list = XLSXCovertCSVReader
|
|
|
- .readerExcel(
|
|
|
- inputStream,
|
|
|
- "注册药品", 100);
|
|
|
+ List<String[]> list = XLSXCovertCSVReader.readerExcel(inputStream,
|
|
|
+ "注册药品", 100);
|
|
|
List<KlDrugRegister> drugRegisterList = Lists.newLinkedList();
|
|
|
int i = 0;
|
|
|
+
|
|
|
+ List<KlConcept> klConceptList = klConceptFacade.list(new QueryWrapper<KlConcept>()
|
|
|
+ .eq("is_deleted", IsDeleteEnum.N.getKey()).eq("lib_type", 101));
|
|
|
+ Map<String, Long> druMap = klConceptList.stream().collect(Collectors.toMap(k -> k.getLibName(), v -> v.getId(), (r1, r2) -> (r2)));
|
|
|
+
|
|
|
+ List<String> errMsg = Lists.newArrayList();
|
|
|
for (String[] record : list) {
|
|
|
// System.out.println(i);
|
|
|
if (i++ == 0) {
|
|
|
continue;
|
|
|
}
|
|
|
KlDrugRegister klDrugRegister = new KlDrugRegister();
|
|
|
- klDrugRegister.setDrugCode(getObject(record[0]));
|
|
|
- klDrugRegister.setName(getObject(record[1]));
|
|
|
- klDrugRegister.setTradeName(getObject(record[2]));
|
|
|
- klDrugRegister.setForm(getObject(record[3]));
|
|
|
- klDrugRegister.setSpecification(getObject(record[4]));
|
|
|
- klDrugRegister.setMinPackQuantity(getObject(record[5]));
|
|
|
- klDrugRegister.setMinPackUnit(getObject(record[6]));
|
|
|
- klDrugRegister.setCompany(getObject(record[7]));
|
|
|
- klDrugRegister.setApproval(getObject(record[8]));
|
|
|
- klDrugRegister.setStandardCode(getObject(record[9]));
|
|
|
- klDrugRegister.setInsuranceType(getObject(record[10]));
|
|
|
- klDrugRegister.setInsuranceRemrk(getObject(record[11]));
|
|
|
- // 药品通用名入映射表
|
|
|
- klDrugRegister.setEnName(getObject(record[13]));
|
|
|
- klDrugRegister.setDrugType(getObject(record[14]));
|
|
|
+ klDrugRegister.setDrugCode(getObject(record[0])); // 药品代码
|
|
|
+ klDrugRegister.setName(getObject(record[1])); // 注册名称
|
|
|
+ klDrugRegister.setTradeName(getObject(record[2])); // 商品名称
|
|
|
+ klDrugRegister.setForm(getObject(record[3])); // 注册剂型
|
|
|
+ klDrugRegister.setSpecification(getObject(record[4])); // 注册规格
|
|
|
+ klDrugRegister.setMinPackQuantity(getObject(record[5])); // 最小包装数量
|
|
|
+ klDrugRegister.setMinPackUnit(getObject(record[6])); // 最小包装单位
|
|
|
+ klDrugRegister.setCompany(getObject(record[7])); // 药品企业
|
|
|
+ klDrugRegister.setApproval(getObject(record[8])); // 批准文号
|
|
|
+ klDrugRegister.setStandardCode(getObject(record[9])); // 药品本位码
|
|
|
+ klDrugRegister.setInsuranceType(getObject(record[10])); // 甲乙类
|
|
|
+ klDrugRegister.setInsuranceRemrk(getObject(record[11])); // 医保备注
|
|
|
+ klDrugRegister.setRemark(getObject(record[12]));// 药品通用名
|
|
|
+ klDrugRegister.setEnName(getObject(record[13])); // 英文名称
|
|
|
+ klDrugRegister.setDrugType(getObject(record[14])); // 药品类别
|
|
|
drugRegisterList.add(klDrugRegister);
|
|
|
+
|
|
|
+ String drugName = getObject(record[12]);
|
|
|
+ if (StringUtil.isBlank(drugName)) {
|
|
|
+ errMsg.add(String.format("第%s行药品通用名为空", i));
|
|
|
+ } else if (druMap.get(drugName) == null) {
|
|
|
+ errMsg.add(String.format("第%s行【%s】不是标准词", i, drugName));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (ListUtil.isNotEmpty(errMsg)) {
|
|
|
+ res.put("错误", StringUtils.join(errMsg, ";"));
|
|
|
+ return res;
|
|
|
}
|
|
|
- // List<KlDrugRegisterImportExVO> data = ExcelUtils.importExcel(file, 0, 1, KlDrugRegisterImportExVO.class);
|
|
|
- // List<KlDrugRegister> drugRegisterList = BeanUtil.listCopyTo(data, KlDrugRegister.class);
|
|
|
- // // TODO 校验通用名,删除原注册名称、映射关系
|
|
|
+ this.remove(new QueryWrapper<KlDrugRegister>()); // 删除主表
|
|
|
klDrugRegisterService.saveBatch(drugRegisterList);
|
|
|
+ List<KlDrugMapping> klDrugMappingList = ListUtil.newArrayList();
|
|
|
+ for (KlDrugRegister klDrugRegister : drugRegisterList) {
|
|
|
+ KlDrugMapping klDrugMapping = new KlDrugMapping();
|
|
|
+ klDrugMapping.setRegisterId(klDrugRegister.getId());
|
|
|
+ klDrugMapping.setDrugConcept(druMap.get(klDrugRegister.getRemark()));
|
|
|
+ klDrugMappingList.add(klDrugMapping);
|
|
|
+ }
|
|
|
+ klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>());
|
|
|
+ klDrugMappingService.saveBatch(klDrugMappingList);
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
+ return res;
|
|
|
}
|
|
|
|
|
|
public static String getObject(String s) {
|
|
@@ -265,10 +283,4 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
|
|
|
}
|
|
|
return s;
|
|
|
}
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
- String text = "\"需经营养风险筛查,明确具有营养风险,且不能经饮食或使用\"肠内营养剂 \"补充足够营养的重症住院患者方予支付。\"";
|
|
|
-
|
|
|
- System.out.println(getObject(text));
|
|
|
- }
|
|
|
}
|