|
|
@@ -19,7 +19,6 @@ import thyyxxk.webserver.entity.ResultVo;
|
|
|
import thyyxxk.webserver.entity.login.UserInfo;
|
|
|
import thyyxxk.webserver.entity.medicine.MzDrugTracCodg;
|
|
|
import thyyxxk.webserver.entity.medicine.YpCodgLine;
|
|
|
-import thyyxxk.webserver.entity.medicine.YpDictConstant;
|
|
|
import thyyxxk.webserver.entity.medicine.YpInDetlVo;
|
|
|
import thyyxxk.webserver.entity.medicine.YpSelinfoSold;
|
|
|
import thyyxxk.webserver.entity.medicine.YpZdSupply;
|
|
|
@@ -127,21 +126,20 @@ public class YpCodgMatchService {
|
|
|
* @Description 查询获取的追溯码匹配信息
|
|
|
* @Author hsh
|
|
|
* @param vo 处方信息
|
|
|
+ * @param cfDetail 处方明细信息
|
|
|
* @return map
|
|
|
* @Date 2025/7/7 0007 14:48
|
|
|
*/
|
|
|
- public ResultVo<Map<String, Object>> selectMatchCodgInfo(YpCodgVo vo){
|
|
|
+ public ResultVo<Map<String, Object>> selectMatchCodgInfo(YpCodgVo vo, List<Map<String, Object>> cfDetail){
|
|
|
String codgLine = vo.getCodeLine();
|
|
|
if(StringUtils.isBlank(codgLine)){
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "药品追溯码信息不存在,请检查!");
|
|
|
}
|
|
|
- // 查询处方明细
|
|
|
- List<Map<String, Object>> cfDetail = matchDao.selectMzCfDetail(vo);
|
|
|
- // 查询是否开放码上放心平台核对校验功能(0:否; 1:是)
|
|
|
- String isOpenTb = matchDao.selectIsOpenTb();
|
|
|
if(cfDetail.isEmpty()){
|
|
|
return ResultVoUtil.fail(ExceptionEnum.LOGICAL_ERROR, "病人处方信息不存在,请检查!");
|
|
|
}
|
|
|
+ // 查询是否开放码上放心平台核对校验功能(0:否; 1:是)
|
|
|
+ String isOpenTb = matchDao.selectIsOpenTb();
|
|
|
Map<String, Object> resultMap = new HashMap<>();
|
|
|
List<MzDrugTracCodg> resultList = new ArrayList<>();
|
|
|
UserInfo us = userCache.getUserInfoByToken();
|
|
|
@@ -256,7 +254,8 @@ public class YpCodgMatchService {
|
|
|
// 生产企业名称
|
|
|
String factory = pUserEntDto.getEntName();
|
|
|
// 模糊查询入库信息(根据追溯码只能模糊匹配) 2025.07.25 暂时不根据批准文号匹配,因院内维护原因会有很多不一致
|
|
|
- List<YpInDetlVo> detlVoList = inDao.selectYpInDetlListByName(manuNo, chargeName);
|
|
|
+ // 2025.10.16 进一步取消药品名称匹配,因院内药品名称与淘宝名称会有不一致的情况
|
|
|
+ List<YpInDetlVo> detlVoList = inDao.selectYpInDetlListByName(manuNo);
|
|
|
if(null == detlVoList || detlVoList.isEmpty()){
|
|
|
codg.setFlag("-1");
|
|
|
codg.setMatchFlag("-1");
|
|
|
@@ -268,53 +267,49 @@ public class YpCodgMatchService {
|
|
|
codg.setExpyEnd(expyEnd);
|
|
|
codg.setMatchMessage("未匹配到入库信息:扫码药品【" + chargeName + "】,请核对!");
|
|
|
} else {
|
|
|
- List<Map<String, Object>> l = m.get(detlVoList.get(0).getChargeCode());
|
|
|
- if(null != l && !l.isEmpty()){
|
|
|
- String drugName = Convert.toStr(l.get(0).get("chargeName"));
|
|
|
- String serial = Convert.toStr(l.get(0).get("serial"));
|
|
|
- if(serial.equals(detlVoList.get(0).getSerial())){
|
|
|
- codg.setFlag("0");
|
|
|
- codg.setMatchFlag("1");
|
|
|
- codg.setMatchMessage("匹配码上放心平台药品信息成功");
|
|
|
- // 补全处方信息
|
|
|
- codg.setItemNo(Convert.toInt(l.get(0).get("itemNo")));
|
|
|
- codg.setDrugName(drugName);
|
|
|
- codg.setChargeItemCode(Convert.toStr(l.get(0).get("chargeCode")));
|
|
|
- codg.setSerial(Convert.toStr(l.get(0).get("serial")));
|
|
|
- codg.setChargeDate(Convert.toStr(l.get(0).get("chargeDate")));
|
|
|
- codg.setWarnDeptName(Convert.toStr(l.get(0).get("deptName")));
|
|
|
- codg.setSpecification(Convert.toStr(l.get(0).get("specification")));
|
|
|
- codg.setAbbrName(Convert.toStr(l.get(0).get("factory")));
|
|
|
- codg.setUnitPrice(Convert.toBigDecimal(l.get(0).get("retprice")));
|
|
|
- codg.setManuNo(manuNo);
|
|
|
- codg.setManuDate(manuDate);
|
|
|
- codg.setExpyEnd(expyEnd);
|
|
|
+ Map<String, List<YpInDetlVo>> detlVoMap = detlVoList.stream().collect(Collectors.groupingBy(YpInDetlVo::getChargeCode, Collectors.toList()));
|
|
|
+ Map<String, Object> m1 = new HashMap<>();
|
|
|
+ YpInDetlVo m2 = new YpInDetlVo();
|
|
|
+ for (Map.Entry<String, List<YpInDetlVo>> entry : detlVoMap.entrySet()) {
|
|
|
+ String chargeCode = entry.getKey();
|
|
|
+ List<YpInDetlVo> l2 = entry.getValue();
|
|
|
+ List<Map<String, Object>> l1 = m.get(chargeCode);
|
|
|
+ if(null != l1 && !l1.isEmpty()){
|
|
|
+ m1 = l1.get(0);
|
|
|
+ m2 = l2.get(0);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(null != m1 && !m1.isEmpty()){
|
|
|
+ codg.setFlag("0");
|
|
|
+ codg.setMatchFlag("1");
|
|
|
+ codg.setMatchMessage("匹配码上放心平台药品信息成功");
|
|
|
+ // 补全处方信息
|
|
|
+ codg.setItemNo(Convert.toInt(m1.get("itemNo")));
|
|
|
+ codg.setDrugName(Convert.toStr(m1.get("chargeName")));
|
|
|
+ codg.setChargeItemCode(Convert.toStr(m1.get("chargeCode")));
|
|
|
+ codg.setSerial(Convert.toStr(m1.get("serial")));
|
|
|
+ codg.setChargeDate(Convert.toStr(m1.get("chargeDate")));
|
|
|
+ codg.setWarnDeptName(Convert.toStr(m1.get("deptName")));
|
|
|
+ codg.setSpecification(Convert.toStr(m1.get("specification")));
|
|
|
+ codg.setAbbrName(Convert.toStr(m1.get("factory")));
|
|
|
+ codg.setUnitPrice(Convert.toBigDecimal(m1.get("retprice")));
|
|
|
+ codg.setManuNo(manuNo);
|
|
|
+ codg.setManuDate(manuDate);
|
|
|
+ codg.setExpyEnd(expyEnd);
|
|
|
+ if("1".equals(String.valueOf(m1.get("trdnFlag")))){
|
|
|
+ codg.setTrdnFlag("1");
|
|
|
+ codg.setMatchMessage("拆零药品," + codg.getMatchMessage());
|
|
|
+ codg.setDrugTracCodg(codg.getDrugTracCodg() + "_CL" + UUID.randomUUID().toString().replace("-", ""));
|
|
|
} else {
|
|
|
- if(YpDictConstant.SERIAL_01.equals(serial)){
|
|
|
- codg.setTrdnFlag("1");
|
|
|
- codg.setFlag("0");
|
|
|
- codg.setMatchFlag("1");
|
|
|
- // 补全处方信息
|
|
|
- codg.setItemNo(Convert.toInt(l.get(0).get("itemNo")));
|
|
|
- codg.setChargeItemCode(Convert.toStr(l.get(0).get("chargeCode")));
|
|
|
- codg.setSerial(Convert.toStr(l.get(0).get("serial")));
|
|
|
- codg.setChargeDate(Convert.toStr(l.get(0).get("chargeDate")));
|
|
|
- codg.setWarnDeptName(Convert.toStr(l.get(0).get("deptName")));
|
|
|
- codg.setSpecification(Convert.toStr(l.get(0).get("specification")));
|
|
|
- codg.setAbbrName(Convert.toStr(l.get(0).get("factory")));
|
|
|
- codg.setUnitPrice(Convert.toBigDecimal(l.get(0).get("retprice")));
|
|
|
- codg.setMatchMessage("拆零药品,匹配码上放心平台药品信息成功");
|
|
|
- codg.setDrugTracCodg(codg.getDrugTracCodg() + "_CL" + UUID.randomUUID().toString().replace("-", ""));
|
|
|
- } else {
|
|
|
+ String serial = codg.getSerial();
|
|
|
+ if(!serial.equals(m2.getSerial())){
|
|
|
codg.setFlag("-1");
|
|
|
codg.setMatchFlag("-1");
|
|
|
- codg.setMatchMessage("未匹配到药品信息,药品大小包装规格【" + serial + "】不对,请核对是否拆零");
|
|
|
+ codg.setMatchMessage("检查发现发药与入库包装规格不一致,也未标识成拆零药品,请核对!");
|
|
|
+ } else {
|
|
|
+ codg.setTrdnFlag("0");
|
|
|
}
|
|
|
- codg.setDrugName(chargeName);
|
|
|
- codg.setManuNo(manuNo);
|
|
|
- codg.setManuDate(manuDate);
|
|
|
- codg.setAbbrName(factory);
|
|
|
- codg.setExpyEnd(expyEnd);
|
|
|
}
|
|
|
} else {
|
|
|
codg.setFlag("-1");
|
|
|
@@ -375,51 +370,28 @@ public class YpCodgMatchService {
|
|
|
} else {
|
|
|
List<Map<String, Object>> l = m.get(StringUtils.trim(detlVo.getChargeCode()));
|
|
|
if(null != l && !l.isEmpty()){
|
|
|
- String chargeName = Convert.toStr(l.get(0).get("chargeName"));
|
|
|
- String serial = Convert.toStr(l.get(0).get("serial"));
|
|
|
- if(serial.equals(detlVo.getSerial())){
|
|
|
- codg.setFlag("0");
|
|
|
- codg.setMatchFlag("0");
|
|
|
- codg.setMatchMessage("匹配企业追溯下载信息成功");
|
|
|
- // 补全处方信息
|
|
|
- codg.setItemNo(Convert.toInt(l.get(0).get("itemNo")));
|
|
|
- codg.setDrugName(chargeName);
|
|
|
- codg.setChargeItemCode(Convert.toStr(l.get(0).get("chargeCode")));
|
|
|
- codg.setSerial(Convert.toStr(l.get(0).get("serial")));
|
|
|
- codg.setChargeDate(Convert.toStr(l.get(0).get("chargeDate")));
|
|
|
- codg.setWarnDeptName(Convert.toStr(l.get(0).get("deptName")));
|
|
|
- codg.setSpecification(Convert.toStr(l.get(0).get("specification")));
|
|
|
- codg.setAbbrName(Convert.toStr(l.get(0).get("factory")));
|
|
|
- codg.setUnitPrice(Convert.toBigDecimal(l.get(0).get("retprice")));
|
|
|
- codg.setManuNo(line.getManuBchno());
|
|
|
- codg.setManuDate(line.getManuDate());
|
|
|
- codg.setExpyEnd(line.getExpyEnd());
|
|
|
+ codg.setFlag("0");
|
|
|
+ codg.setMatchFlag("0");
|
|
|
+ codg.setMatchMessage("匹配企业追溯下载信息成功");
|
|
|
+ // 补全处方信息
|
|
|
+ codg.setItemNo(Convert.toInt(l.get(0).get("itemNo")));
|
|
|
+ codg.setDrugName(Convert.toStr(l.get(0).get("chargeName")));
|
|
|
+ codg.setChargeItemCode(Convert.toStr(l.get(0).get("chargeCode")));
|
|
|
+ codg.setSerial(Convert.toStr(l.get(0).get("serial")));
|
|
|
+ codg.setChargeDate(Convert.toStr(l.get(0).get("chargeDate")));
|
|
|
+ codg.setWarnDeptName(Convert.toStr(l.get(0).get("deptName")));
|
|
|
+ codg.setSpecification(Convert.toStr(l.get(0).get("specification")));
|
|
|
+ codg.setAbbrName(Convert.toStr(l.get(0).get("factory")));
|
|
|
+ codg.setUnitPrice(Convert.toBigDecimal(l.get(0).get("retprice")));
|
|
|
+ codg.setManuNo(line.getManuBchno());
|
|
|
+ codg.setManuDate(StringUtils.substring(line.getManuDate(), 0, 10));
|
|
|
+ codg.setExpyEnd(StringUtils.substring(line.getExpyEnd(), 0, 10));
|
|
|
+ if("1".equals(String.valueOf(l.get(0).get("trdnFlag")))){
|
|
|
+ codg.setTrdnFlag("1");
|
|
|
+ codg.setMatchMessage("拆零药品," + codg.getMatchMessage());
|
|
|
+ codg.setDrugTracCodg(codg.getDrugTracCodg() + "_CL" + UUID.randomUUID().toString().replace("-", ""));
|
|
|
} else {
|
|
|
- if(YpDictConstant.SERIAL_01.equals(serial)){
|
|
|
- codg.setTrdnFlag("1");
|
|
|
- codg.setFlag("0");
|
|
|
- codg.setMatchFlag("1");
|
|
|
- // 补全处方信息
|
|
|
- codg.setItemNo(Convert.toInt(l.get(0).get("itemNo")));
|
|
|
- codg.setChargeItemCode(Convert.toStr(l.get(0).get("chargeCode")));
|
|
|
- codg.setSerial(Convert.toStr(l.get(0).get("serial")));
|
|
|
- codg.setChargeDate(Convert.toStr(l.get(0).get("chargeDate")));
|
|
|
- codg.setWarnDeptName(Convert.toStr(l.get(0).get("deptName")));
|
|
|
- codg.setSpecification(Convert.toStr(l.get(0).get("specification")));
|
|
|
- codg.setAbbrName(Convert.toStr(l.get(0).get("factory")));
|
|
|
- codg.setUnitPrice(Convert.toBigDecimal(l.get(0).get("retprice")));
|
|
|
- codg.setMatchMessage("拆零药品,匹配码上放心平台药品信息成功");
|
|
|
- codg.setDrugTracCodg(codg.getDrugTracCodg() + "_CL" + UUID.randomUUID().toString().replace("-", ""));
|
|
|
- } else {
|
|
|
- codg.setFlag("-1");
|
|
|
- codg.setMatchFlag("-1");
|
|
|
- codg.setMatchMessage("未匹配到药品信息,药品大小包装规格【" + serial + "】不对,请核对是否拆零");
|
|
|
- }
|
|
|
- codg.setDrugName(line.getDrugProdname());
|
|
|
- codg.setManuNo(line.getManuBchno());
|
|
|
- codg.setManuDate(line.getManuDate());
|
|
|
- codg.setAbbrName(line.getProdentpName());
|
|
|
- codg.setExpyEnd(line.getExpyEnd());
|
|
|
+ codg.setTrdnFlag("0");
|
|
|
}
|
|
|
} else {
|
|
|
codg.setFlag("-1");
|