Merge remote-tracking branch 'origin/dev_drug' into dev_drug

# Conflicts:
#	src/main/resources/mybatis/mapper/basic/UdiProductDao.xml
dev_unify
qiuyt 8 months ago
commit 07d2029e96

@ -128,7 +128,6 @@ public class UdiRelevanceController extends BaseController {
} }
//基础信息-耗材字典-查询页面、业务单据-选入耗材字典-查询页面 //基础信息-耗材字典-查询页面、业务单据-选入耗材字典-查询页面
@AuthRuleAnnotation("") @AuthRuleAnnotation("")
@GetMapping("/udi/udirel/filterUdi") @GetMapping("/udi/udirel/filterUdi")
@ -245,6 +244,18 @@ public class UdiRelevanceController extends BaseController {
tempRequest.setNameCode(filterUdiRelRequest.getNameCode()); tempRequest.setNameCode(filterUdiRelRequest.getNameCode());
} }
List<UdiProductEntity> udiInfoEntities = udiProductService.filterAllUdiInfo(tempRequest); List<UdiProductEntity> udiInfoEntities = udiProductService.filterAllUdiInfo(tempRequest);
//移除层级为空的数据
if (CollUtil.isNotEmpty(udiInfoEntities) && udiInfoEntities.size() > 1) {
for (int i = 0; i < udiInfoEntities.size(); i++) {
if (StrUtil.isEmpty(udiInfoEntities.get(i).getNameCode())) {
udiProductService.deleteById(udiInfoEntities.get(i).getId() + "");
udiInfoEntities.remove(i);
break;
}
}
}
List<UdiRelevanceResponse> udiRelevanceResponses = new ArrayList<>(); List<UdiRelevanceResponse> udiRelevanceResponses = new ArrayList<>();
if (CollUtil.isNotEmpty(udiInfoEntities)) { if (CollUtil.isNotEmpty(udiInfoEntities)) {
for (UdiProductEntity udiProductEntity : udiInfoEntities) { for (UdiProductEntity udiProductEntity : udiInfoEntities) {
@ -400,9 +411,9 @@ public class UdiRelevanceController extends BaseController {
try { try {
CodeRel codeRel = new CodeRel(); CodeRel codeRel = new CodeRel();
if(udiProductEntity.getProductsType() == null || udiProductEntity.getProductsType() == 1){ if (udiProductEntity.getProductsType() == null || udiProductEntity.getProductsType() == 1) {
codeRel.setDiNameCode(udiRelevanceSaveRequest.getNameCode()); codeRel.setDiNameCode(udiRelevanceSaveRequest.getNameCode());
}else { } else {
codeRel.setDrugCode(udiRelevanceSaveRequest.getNameCode()); codeRel.setDrugCode(udiRelevanceSaveRequest.getNameCode());
} }
codeRel.setYbbm(udiRelevanceSaveRequest.getYbbm()); codeRel.setYbbm(udiRelevanceSaveRequest.getYbbm());
@ -410,8 +421,8 @@ public class UdiRelevanceController extends BaseController {
codeRel.setTyshxyh(udiRelevanceSaveRequest.getTyshxydm()); codeRel.setTyshxyh(udiRelevanceSaveRequest.getTyshxydm());
codeRel.setUpdateTime(new Date()); codeRel.setUpdateTime(new Date());
erpBasicClient.updateCodeRelDetail(codeRel); erpBasicClient.updateCodeRelDetail(codeRel);
}catch (Exception e){ } catch (Exception e) {
System.out.println("上传多码融合:"+e); System.out.println("上传多码融合:" + e);
} }
return ResultVOUtils.success("更新成功"); return ResultVOUtils.success("更新成功");

@ -54,6 +54,13 @@ public class ThirdAliDrugController extends BaseController {
if (bindingResult.hasErrors()) { if (bindingResult.hasErrors()) {
return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage()); return ResultVOUtils.error(ResultEnum.PARAM_VERIFY_FALL, bindingResult.getFieldError().getDefaultMessage());
} }
if (StrUtil.isEmpty(thirdAliDrug.getApprovalNum()) && StrUtil.isEmpty(thirdAliDrug.getNameCode()) &&
StrUtil.isEmpty(thirdAliDrug.getCpmctymc())
) {
return ResultVOUtils.success("查询参数不能为空");
}
List<ThirdAliDrug> list = thirdAliDrugService.filterList(thirdAliDrug); List<ThirdAliDrug> list = thirdAliDrugService.filterList(thirdAliDrug);
PageInfo<ThirdAliDrug> pageInfo = new PageInfo<>(list); PageInfo<ThirdAliDrug> pageInfo = new PageInfo<>(list);
PageSimpleResponse<ThirdAliDrug> pageSimpleResponse = new PageSimpleResponse<>(); PageSimpleResponse<ThirdAliDrug> pageSimpleResponse = new PageSimpleResponse<>();
@ -65,7 +72,7 @@ public class ThirdAliDrugController extends BaseController {
@GetMapping("/udiwms/aliDrug/getDrugLevelListBycode") @GetMapping("/udiwms/aliDrug/getDrugLevelListBycode")
public BaseResponse getDrugLevelListBycode(ThirdAliDrugRequest thirdAliDrug, BindingResult bindingResult) { public BaseResponse getDrugLevelListBycode(ThirdAliDrugRequest thirdAliDrug, BindingResult bindingResult) {
String nameCode = thirdAliDrug.getNameCode(); String nameCode = thirdAliDrug.getNameCode();
if (StrUtil.isEmpty(nameCode)){ if (StrUtil.isEmpty(nameCode)) {
return ResultVOUtils.error("标识参数不能为空"); return ResultVOUtils.error("标识参数不能为空");
} }
ThirdAliDrug one = thirdAliDrugService.getOne(new LambdaQueryWrapper<ThirdAliDrug>().eq(ThirdAliDrug::getNameCode, nameCode)); ThirdAliDrug one = thirdAliDrugService.getOne(new LambdaQueryWrapper<ThirdAliDrug>().eq(ThirdAliDrug::getNameCode, nameCode));
@ -74,8 +81,10 @@ public class ThirdAliDrugController extends BaseController {
} }
List<ThirdAliDrug> list = thirdAliDrugService.list(new LambdaQueryWrapper<ThirdAliDrug>() List<ThirdAliDrug> list = thirdAliDrugService.list(new LambdaQueryWrapper<ThirdAliDrug>()
.eq(ThirdAliDrug::getApprovalNum, one.getApprovalNum())
.eq(ThirdAliDrug::getCpmctymc, one.getCpmctymc())
.eq(ThirdAliDrug::getForm, one.getForm()) .eq(ThirdAliDrug::getForm, one.getForm())
.eq(ThirdAliDrug::getFormSpec, one.getFormSpec()) .eq(ThirdAliDrug::getBzgg, one.getBzgg())
.eq(ThirdAliDrug::getPackRatio, one.getPackRatio())); .eq(ThirdAliDrug::getPackRatio, one.getPackRatio()));
return ResultVOUtils.success(list); return ResultVOUtils.success(list);

@ -7,10 +7,7 @@ import com.glxp.api.constant.ConstantStatus;
import com.glxp.api.dao.basic.UdiRelevanceDao; import com.glxp.api.dao.basic.UdiRelevanceDao;
import com.glxp.api.entity.basic.UdiProductEntity; import com.glxp.api.entity.basic.UdiProductEntity;
import com.glxp.api.entity.basic.UdiRelevanceEntity; import com.glxp.api.entity.basic.UdiRelevanceEntity;
import com.glxp.api.entity.thrsys.BasicInsMaterialEntity; import com.glxp.api.entity.thrsys.*;
import com.glxp.api.entity.thrsys.ThrProductsAddDiEntity;
import com.glxp.api.entity.thrsys.ThrProductsEntity;
import com.glxp.api.entity.thrsys.YbDrug;
import com.glxp.api.exception.JsonException; import com.glxp.api.exception.JsonException;
import com.glxp.api.http.NmpaUdiClient; import com.glxp.api.http.NmpaUdiClient;
import com.glxp.api.req.basic.UdiCombineRequest; import com.glxp.api.req.basic.UdiCombineRequest;
@ -21,12 +18,10 @@ import com.glxp.api.req.thrsys.ThrInsDrugFeeRequest;
import com.glxp.api.req.thrsys.ThrInsMaterialFeeRequest; import com.glxp.api.req.thrsys.ThrInsMaterialFeeRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.service.thrsys.BasicInsMaterialService; import com.glxp.api.service.thrsys.BasicInsMaterialService;
import com.glxp.api.service.thrsys.ThirdAliDrugService;
import com.glxp.api.service.thrsys.ThrProductsService; import com.glxp.api.service.thrsys.ThrProductsService;
import com.glxp.api.service.thrsys.YbDrugService; import com.glxp.api.service.thrsys.YbDrugService;
import com.glxp.api.util.CustomUtil; import com.glxp.api.util.*;
import com.glxp.api.util.DateUtil;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.IntUtil;
import com.glxp.api.util.udi.UdiInfoUtil; import com.glxp.api.util.udi.UdiInfoUtil;
import org.springframework.beans.BeanUtils; import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -205,6 +200,8 @@ public class UdiContrastService {
.orElse(null); .orElse(null);
} }
@Resource
ThirdAliDrugService thirdAliDrugService;
public void createOnlyMainId(String mainId) { public void createOnlyMainId(String mainId) {
FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest(); FilterThrProductsRequest filterThrProductsRequest = new FilterThrProductsRequest();
@ -233,18 +230,20 @@ public class UdiContrastService {
ybHcflDetailFilterRequest.setPage(1); ybHcflDetailFilterRequest.setPage(1);
ybHcflDetailFilterRequest.setGoodsCode(thrProductsEntity.getYbbm()); ybHcflDetailFilterRequest.setGoodsCode(thrProductsEntity.getYbbm());
List<YbDrug> list = ybDrugService.getList(ybHcflDetailFilterRequest); List<YbDrug> list = ybDrugService.getList(ybHcflDetailFilterRequest);
UdiProductEntity udiProductEntity = new UdiProductEntity(); UdiProductEntity udiProductEntity = new UdiProductEntity();
BeanUtils.copyProperties(thrProductsEntity, udiProductEntity); BeanUtils.copyProperties(thrProductsEntity, udiProductEntity);
udiProductEntity.setId(IdUtil.getSnowflakeNextId()); if (list != null && list.size() > 0) {
if (list != null && list.size() > 0){
YbDrug ybDrug = list.get(0); YbDrug ybDrug = list.get(0);
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
// udiProductEntity.setNameCode(thrProductsEntity.getCode()); // udiProductEntity.setNameCode(thrProductsEntity.getCode());
udiProductEntity.setPrepnSpec(ybDrug.getRealityOutlook()); udiProductEntity.setPrepnSpec(ybDrug.getRealityOutlook());
udiProductEntity.setZczbhhzbapzbh(ybDrug.getApprovalCode()); udiProductEntity.setZczbhhzbapzbh(ybDrug.getApprovalCode());
udiProductEntity.setCpmctymc(ybDrug.getRegisteredProductName()); udiProductEntity.setCpmctymc(ybDrug.getRegisteredProductName());
udiProductEntity.setSpmc(ybDrug.getGoodsName()); udiProductEntity.setSpmc(ybDrug.getGoodsName());
udiProductEntity.setBzgg(String.valueOf(ybDrug.getFactor())+ ybDrug.getMinUnit() + "/" + ybDrug.getUnit()); udiProductEntity.setBzgg(String.valueOf(ybDrug.getFactor()) + ybDrug.getMinUnit() + "/" + ybDrug.getUnit());
udiProductEntity.setMatrial(ybDrug.getMaterialName()); udiProductEntity.setMatrial(ybDrug.getMaterialName());
udiProductEntity.setPackMatrial(ybDrug.getMaterialName()); udiProductEntity.setPackMatrial(ybDrug.getMaterialName());
udiProductEntity.setMedicareType(setMedicareType(ybDrug.getProductInsuranceType())); udiProductEntity.setMedicareType(setMedicareType(ybDrug.getProductInsuranceType()));
@ -259,28 +258,46 @@ public class UdiContrastService {
//商品条码 essentialDrugMarkName sptm //商品条码 essentialDrugMarkName sptm
// udiProductEntity.setSptm(ybDrug.getBusinessLicense()); // udiProductEntity.setSptm(ybDrug.getBusinessLicense());
udiProductEntity.setPrepnUnit(ybDrug.getRealityMedicinemodel()); udiProductEntity.setPrepnUnit(ybDrug.getRealityMedicinemodel());
udiProductEntity.setUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setDiType(1);
udiProductEntity.setScbssfbhph("是");
udiProductEntity.setScbssfbhscrq("是");
udiProductEntity.setScbssfbhsxrq("是");
udiProductEntity.setScbssfbhxlh("否");
udiProductEntity.setProductsType(thrProductsEntity.getProductType());
udiProductEntity.setRequireScanCode(1);
udiProductEntity.setMajorStatus(1);
udiProductEntity.setPhysicType(3);
if (StrUtil.isEmpty(udiProductEntity.getPrice())) {
udiProductEntity.setPrice("0.00");
}
udiProductEntity.setUpdateTime(new Date());
udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity);
List<ThirdAliDrug> thirdAliDrugList = thirdAliDrugService.findByByApproved(ybDrug.getApprovalCode());
if (CollUtil.isNotEmpty(thirdAliDrugList)) {
for (int i = 0; i < thirdAliDrugList.size(); i++) {
ThirdAliDrug thirdAliDrug = thirdAliDrugList.get(i);
List<Integer> integers = DimaUtil.calculateLevels(thirdAliDrug.getPackRatio());
udiProductEntity.setPackLevel(thirdAliDrug.getPackLevel());
udiProductEntity.setBhxjsl(integers.get(IntUtil.value(thirdAliDrug.getPackLevel()) - 1));
udiProductEntity.setNameCode(thirdAliDrug.getNameCode());
if (IntUtil.value(thirdAliDrug.getPackLevel()) == 1) {
udiProductEntity.setXjdw(ybDrug.getMinUnit());
udiProductEntity.setBhxjsl(ybDrug.getFactor());
}
udiProductEntity.setDiType(IntUtil.value(thirdAliDrug.getPackLevel()) == 1 ? 1 : 4);
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
udiProductService.insertUdiInfo(udiProductEntity);
}
} else {
udiProductService.insertUdiInfo(udiProductEntity);
}
} }
udiProductEntity.setUuid(udiRelevanceEntity.getUuid());
udiProductEntity.setDiType(1);
udiProductEntity.setScbssfbhph("是");
udiProductEntity.setScbssfbhscrq("是");
udiProductEntity.setScbssfbhsxrq("是");
udiProductEntity.setScbssfbhxlh("否");
udiProductEntity.setProductsType(thrProductsEntity.getProductType());
udiProductEntity.setRequireScanCode(1);
udiProductEntity.setMajorStatus(1);
udiProductEntity.setPhysicType(3);
if (StrUtil.isEmpty(udiProductEntity.getPrice())) {
udiProductEntity.setPrice("0.00");
}
udiProductEntity.setUpdateTime(new Date());
udiProductEntity = UdiInfoUtil.initUdiInfoEntity(udiProductEntity);
udiProductService.insertUdiInfo(udiProductEntity);
// setLevel(udiRelevanceEntity.getUuid()); // setLevel(udiRelevanceEntity.getUuid());
UdiProductEntity byUuid = udiProductService.findByUuid(udiRelevanceEntity.getUuid()); UdiProductEntity byUuid = udiProductService.findByUuid(udiRelevanceEntity.getUuid());
udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, byUuid); udiRelevanceEntity = udiRelevanceService.insertDefaultLevel(udiRelevanceEntity, byUuid);
udiRelevanceService.insertUdiRelevance(udiRelevanceEntity); udiRelevanceService.insertUdiRelevance(udiRelevanceEntity);
udiProductService.updateLevelCount(udiRelevanceEntity);
} else { } else {
//器械 //器械
ThrInsMaterialFeeRequest request = new ThrInsMaterialFeeRequest(); ThrInsMaterialFeeRequest request = new ThrInsMaterialFeeRequest();

@ -172,7 +172,7 @@ public class UdiProductServiceImpl implements UdiProductService {
@Override @Override
public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) { public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) {
return udiProductDao.insertUdiInfos(udiInfoEntities); return udiProductDao.replaceBatchs(udiInfoEntities);
} }
@Override @Override

@ -501,51 +501,73 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
//开始处理codeMap //开始处理codeMap
if (!codeMap.isEmpty()){ if (!codeMap.isEmpty()){
Map<String, List<RelCodeDetail>> sortedCodeMap = codeMap.entrySet()
.stream()
.sorted(Comparator.comparing(
e -> Optional.ofNullable(e.getValue().isEmpty() ? null : e.getValue().get(0))
.map(RelCodeDetail::getPackLayer)
.orElse(Integer.MIN_VALUE), // Default to Integer.MIN_VALUE if the list is empty (shouldn't happen normally)
Comparator.reverseOrder()
))
.collect(Collectors.toMap(
Map.Entry::getKey,
Map.Entry::getValue,
(e1, e2) -> e1, // Merge function in case of duplicate keys (shouldn't happen with a well-formed Map)
LinkedHashMap::new // Preserve insertion order, though not strictly necessary for sorting
));
Map<String, Integer> batchIdFkMap = new HashMap<>(); Map<String, Integer> batchIdFkMap = new HashMap<>();
List<RelCodeDetail> addRelCodeDetail = new ArrayList<>(); List<RelCodeDetail> addRelCodeDetail = new ArrayList<>();
RelCodeBatch updateDrugLevelRelCodeBatch = null; List<RelCodeBatch> updateDrugLevelRelCodeBatch = new ArrayList<>();
// 遍历 Map // 遍历 Map
for (Map.Entry<String, List<RelCodeDetail>> entry : codeMap.entrySet()) { for (Map.Entry<String, List<RelCodeDetail>> entry : sortedCodeMap.entrySet()) {
String key = entry.getKey(); String key = entry.getKey();
List<RelCodeDetail> list = entry.getValue(); List<RelCodeDetail> list = entry.getValue();
RelCodeBatch addRelCodeBatch = new RelCodeBatch();
BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch);
addRelCodeBatch.setParentCode(key);
if ("0".equals(key)){ if ("0".equals(key)){
RelCodeDetail relCodeDetail = list.get(0); for (RelCodeDetail relCodeDetail : list) {
String curCode = relCodeDetail.getCurCode(); RelCodeBatch addRelCodeBatch = new RelCodeBatch();
String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch);
addRelCodeBatch.setProductCode(diStr); addRelCodeBatch.setParentCode(key);
addRelCodeBatch.setCurCode(curCode); String curCode = relCodeDetail.getCurCode();
addRelCodeBatch.setThreeLevelCount(1); String diStr = FilterUdiUtils.getUdi(curCode).getUdi();
addRelCodeBatch.setProductCode(diStr);
this.save(addRelCodeBatch); addRelCodeBatch.setCurCode(curCode);
batchIdFkMap.put(curCode,addRelCodeBatch.getId()); addRelCodeBatch.setThreeLevelCount(1);
updateDrugLevelRelCodeBatch = addRelCodeBatch; addRelCodeBatch.setId(null);
this.save(addRelCodeBatch);
batchIdFkMap.put(curCode,addRelCodeBatch.getId());
updateDrugLevelRelCodeBatch.add(addRelCodeBatch);
}
}else { }else {
for (RelCodeDetail detail : list) { for (RelCodeDetail detail : list) {
Integer packLayer = detail.getPackLayer(); Integer packLayer = detail.getPackLayer();
if (packLayer == 2){ if (packLayer == 2){
RelCodeBatch addRelCodeBatch2 = new RelCodeBatch(); RelCodeBatch addRelCodeBatch2 = new RelCodeBatch();
BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch2); BeanUtils.copyProperties(relCodeBatch,addRelCodeBatch2);
addRelCodeBatch2.setParentCode(key);
String curCode = detail.getCurCode(); String curCode = detail.getCurCode();
String parentCode = detail.getParentCode();
addRelCodeBatch2.setParentCode(parentCode);
String diStr = FilterUdiUtils.getUdi(curCode).getUdi(); String diStr = FilterUdiUtils.getUdi(curCode).getUdi();
addRelCodeBatch2.setProductCode(diStr); addRelCodeBatch2.setProductCode(diStr);
addRelCodeBatch2.setCurCode(curCode); addRelCodeBatch2.setCurCode(curCode);
addRelCodeBatch2.setThreeLevelCount(0); addRelCodeBatch2.setThreeLevelCount(0);
addRelCodeBatch2.setTwoLevelCount(1); addRelCodeBatch2.setTwoLevelCount(1);
addRelCodeBatch2.setId(null);
this.save(addRelCodeBatch2); this.save(addRelCodeBatch2);
batchIdFkMap.put(curCode,addRelCodeBatch2.getId()); batchIdFkMap.put(curCode,addRelCodeBatch2.getId());
//同时也是上面的明细 //同时也是上面的明细
detail.setBatchIdFk(batchIdFkMap.get(key)); detail.setBatchIdFk(batchIdFkMap.get(parentCode));
addRelCodeDetail.add(detail); addRelCodeDetail.add(detail);
}else if (packLayer == 1){ }else if (packLayer == 1){
//直接明细 //直接明细
detail.setBatchIdFk(batchIdFkMap.get(key)); String parentCode = detail.getParentCode();
detail.setBatchIdFk(batchIdFkMap.get(parentCode));
addRelCodeDetail.add(detail); addRelCodeDetail.add(detail);
} }
} }
@ -554,7 +576,9 @@ public class RelCodeBatchService extends ServiceImpl<RelCodeBatchMapper, RelCode
if (CollUtil.isNotEmpty(addRelCodeDetail)){ if (CollUtil.isNotEmpty(addRelCodeDetail)){
relCodeDetailService.saveBatch(addRelCodeDetail); relCodeDetailService.saveBatch(addRelCodeDetail);
//更新层级关系的数量 //更新层级关系的数量
this.updateDrugLevelCount(updateDrugLevelRelCodeBatch); updateDrugLevelRelCodeBatch.forEach( item -> {
this.updateDrugLevelCount(item);
});
} }
} }
} }

@ -3,6 +3,7 @@ package com.glxp.api.service.thrsys;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.glxp.api.exception.JsonException; import com.glxp.api.exception.JsonException;
import com.glxp.api.req.thrsys.ThirdAliDrugRequest; import com.glxp.api.req.thrsys.ThirdAliDrugRequest;
@ -238,4 +239,9 @@ public class ThirdAliDrugService extends ServiceImpl<ThirdAliDrugMapper, ThirdAl
} }
return this.baseMapper.filterList(thirdAliDrug); return this.baseMapper.filterList(thirdAliDrug);
} }
public List<ThirdAliDrug> findByByApproved(String approvalNum) {
return this.baseMapper.selectList(new LambdaQueryWrapper<ThirdAliDrug>().eq(ThirdAliDrug::getApprovalNum, approvalNum));
}
} }

@ -0,0 +1,37 @@
package com.glxp.api.util;
import java.util.ArrayList;
import java.util.List;
/**
* @author AnthonyYwj
* @date 2024/11/12
*/
public class DimaUtil {
public static List<Integer> calculateLevels(String ratio) {
// 分割比例字符串并转成整数数组
String[] parts = ratio.split(":");
int[] levels = new int[parts.length];
for (int i = 0; i < parts.length; i++) {
levels[i] = Integer.parseInt(parts[i]);
}
// 存储每层级的倍数关系
List<Integer> calculatedLevels = new ArrayList<>();
for (int i = levels.length - 1; i > 0; i--) {
calculatedLevels.add(levels[i] / levels[i - 1]);
}
// 最后加上最小单位(第一层级为 1
calculatedLevels.add(1);
// 结果倒序
List<Integer> reversed = new ArrayList<>();
for (int i = calculatedLevels.size() - 1; i >= 0; i--) {
reversed.add(calculatedLevels.get(i));
}
return reversed;
}
}

@ -95,10 +95,10 @@
basic_products.cphhhbh, basic_products.cphhhbh,
basic_products.hchzsb basic_products.hchzsb
FROM (company_product_relevance FROM (company_product_relevance
inner JOIN basic_udirel inner JOIN basic_udirel
ON company_product_relevance.udiRlIdFk = basic_udirel.id) ON company_product_relevance.udiRlIdFk = basic_udirel.id)
inner JOIN basic_products inner JOIN basic_products
ON basic_udirel.uuid = basic_products.uuid ON basic_udirel.uuid = basic_products.uuid
<where> <where>
<if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null"> <if test="ylqxzcrbarmc != '' and ylqxzcrbarmc != null">
AND ylqxzcrbarmc LIKE concat(#{ylqxzcrbarmc}, '%') AND ylqxzcrbarmc LIKE concat(#{ylqxzcrbarmc}, '%')
@ -175,7 +175,7 @@
resultType="com.glxp.api.entity.basic.UdiProductEntity"> resultType="com.glxp.api.entity.basic.UdiProductEntity">
SELECT basic_products.*, basic_udirel.purType, basic_udirel.hcType SELECT basic_products.*, basic_udirel.purType, basic_udirel.hcType
FROM basic_products FROM basic_products
LEFT JOIN basic_udirel ON basic_udirel.uuid = basic_products.uuid LEFT JOIN basic_udirel ON basic_udirel.uuid = basic_products.uuid
WHERE (basic_products.nameCode = #{nameCode}) WHERE (basic_products.nameCode = #{nameCode})
limit 1 limit 1
</select> </select>
@ -201,8 +201,9 @@
catalogname3, catalogname3,
matrial, matrial,
destinyType, destinyType,
productsType,prepnUnit,prepnSpec,storageCondition,transportCondition,indate,packMatrial,majorType,majorStatus,physicType,medicareType,bzgg, productsType, prepnUnit, prepnSpec, storageCondition, transportCondition, indate, packMatrial, majorType,
requireScanCode,detailSort) majorStatus, physicType, medicareType, bzgg, xjdw,
requireScanCode)
values (#{id}, #{uuid}, values (#{id}, #{uuid},
#{originUuid}, #{originUuid},
#{nameCode}, #{nameCode},
@ -275,84 +276,80 @@
#{majorStatus}, #{majorStatus},
#{physicType}, #{physicType},
#{medicareType}, #{medicareType},
#{bzgg}, #{bzgg}, #{xjdw},
#{requireScanCode}, #{requireScanCode})
#{detailSort}
)
</insert> </insert>
<insert id="insertUdiInfos" parameterType="java.util.List"> <insert id="insertUdiInfos" parameterType="java.util.List">
replace INTO basic_products replace INTO basic_products
(id, uuid, originUuid, nameCode, deviceRecordKey, packRatio, packLevel, packUnit, bhxjsl, bhzxxsbzsl, (id, uuid, originUuid, nameCode, deviceRecordKey, packRatio, packLevel, packUnit, bhxjsl, bhzxxsbzsl,
zxxsbzbhsydysl, bhxjcpbm, bzcj, cpmctymc, cplb, flbm, ggxh, qxlb, tyshxydm, zxxsbzbhsydysl, bhxjcpbm, bzcj, cpmctymc, cplb, flbm, ggxh, qxlb, tyshxydm,
ylqxzcrbarmc, zczbhhzbapzbh, ylqxzcrbarywmc, sydycpbs, sjcpbm, versionNumber, diType, ybbm, sptm, ylqxzcrbarmc, zczbhhzbapzbh, ylqxzcrbarywmc, sydycpbs, sjcpbm, versionNumber, diType, ybbm, sptm,
manufactory, measname, productType, scbssfbhph, scbssfbhxlh, scbssfbhscrq, scbssfbhsxrq, cpms, manufactory, measname, productType, scbssfbhph, scbssfbhxlh, scbssfbhscrq, scbssfbhsxrq, cpms,
allowNoBatch, allowNoExpire, allowNoBatch, allowNoExpire,
allowNoProduct, allowNoSerial, spmc, cplx, hchzsb, cpdls, price, basicPrductRemak1, basicPrductRemak2, allowNoProduct, allowNoSerial, spmc, cplx, hchzsb, cpdls, price, basicPrductRemak1, basicPrductRemak2,
basicPrductRemak3, basicPrductRemak4, basicPrductRemak5, basicPrductRemak6, basicPrductRemak7, basicPrductRemak3, basicPrductRemak4, basicPrductRemak5, basicPrductRemak6, basicPrductRemak7,
basicPrductRemak8, updateTime, sfwblztlcp, cgzmraqxgxx, sfbjwycxsy, zdcfsycs, sfwwjbz, syqsfxyjxmj, basicPrductRemak8, updateTime, sfwblztlcp, cgzmraqxgxx, sfbjwycxsy, zdcfsycs, sfwwjbz, syqsfxyjxmj,
mjfs, categoryName, pinyinInitial) mjfs, categoryName, pinyinInitial, xjdw)
values values
<foreach collection="udiInfoEntities" item="item" index="index" <foreach collection="udiInfoEntities" item="item" index="index"
separator=","> separator=",">
(#{item.id}, (#{item.id},
#{item.uuid}, #{item.uuid},
#{item.originUuid}, #{item.originUuid},
#{item.nameCode}, #{item.nameCode},
#{item.deviceRecordKey}, #{item.deviceRecordKey},
#{item.packRatio}, #{item.packRatio},
#{item.packLevel}, #{item.packLevel},
#{item.packUnit}, #{item.packUnit},
#{item.bhxjsl}, #{item.bhxjsl},
#{item.bhzxxsbzsl}, #{item.bhzxxsbzsl},
#{item.zxxsbzbhsydysl}, #{item.zxxsbzbhsydysl},
#{item.bhxjcpbm}, #{item.bhxjcpbm},
#{item.bzcj}, #{item.bzcj},
#{item.cpmctymc}, #{item.cpmctymc},
#{item.cplb}, #{item.cplb},
#{item.flbm}, #{item.flbm},
#{item.ggxh}, #{item.ggxh},
#{item.qxlb}, #{item.qxlb},
#{item.tyshxydm}, #{item.tyshxydm},
#{item.ylqxzcrbarmc}, #{item.ylqxzcrbarmc},
#{item.zczbhhzbapzbh}, #{item.zczbhhzbapzbh},
#{item.ylqxzcrbarywmc}, #{item.ylqxzcrbarywmc},
#{item.sydycpbs}, #{item.sydycpbs},
#{item.sjcpbm}, #{item.sjcpbm},
#{item.versionNumber}, #{item.versionNumber},
#{item.diType}, #{item.diType},
#{item.ybbm}, #{item.ybbm},
#{item.sptm}, #{item.sptm},
#{item.manufactory}, #{item.manufactory},
#{item.measname}, #{item.measname},
#{item.productType}, #{item.productType},
#{item.scbssfbhph}, #{item.scbssfbhph},
#{item.scbssfbhxlh}, #{item.scbssfbhxlh},
#{item.scbssfbhscrq}, #{item.scbssfbhscrq},
#{item.scbssfbhsxrq}, #{item.scbssfbhsxrq},
#{item.cpms}, #{item.cpms},
#{item.allowNoBatch}, #{item.allowNoBatch},
#{item.allowNoExpire}, #{item.allowNoExpire},
#{item.allowNoProduct}, #{item.allowNoSerial}, #{item.allowNoProduct}, #{item.allowNoSerial},
#{item.spmc}, #{item.spmc},
#{item.cplx}, #{item.cplx},
#{item.hchzsb}, #{item.hchzsb},
#{item.cpdls}, #{item.cpdls},
#{item.price}, #{item.price},
#{item.basicPrductRemak1}, #{item.basicPrductRemak1},
#{item.basicPrductRemak2}, #{item.basicPrductRemak2},
#{item.basicPrductRemak3}, #{item.basicPrductRemak3},
#{item.basicPrductRemak4}, #{item.basicPrductRemak4},
#{item.basicPrductRemak5}, #{item.basicPrductRemak5},
#{item.basicPrductRemak6}, #{item.basicPrductRemak6},
#{item.basicPrductRemak7}, #{item.basicPrductRemak7},
#{item.basicPrductRemak8}, #{item.updateTime}, #{item.sfwblztlcp}, #{item.cgzmraqxgxx}, #{item.sfbjwycxsy}, #{item.basicPrductRemak8}, #{item.updateTime}, #{item.sfwblztlcp}, #{item.cgzmraqxgxx}, #{item.sfbjwycxsy},
#{item.zdcfsycs}, #{item.zdcfsycs},
#{item.sfwwjbz}, #{item.syqsfxyjxmj}, #{item.mjfs}, #{item.sfwwjbz}, #{item.syqsfxyjxmj}, #{item.mjfs},
#{item.categoryName}, #{item.pinyinInitial}) #{item.categoryName}, #{item.pinyinInitial}, #{item.xjdw})
</foreach> </foreach>
</insert> </insert>
@ -1010,7 +1007,6 @@
<if test="matrial != null"> <if test="matrial != null">
matrial=#{matrial}, matrial=#{matrial},
</if> </if>
</trim> </trim>
where id = #{id} where id = #{id}
</update> </update>
@ -1042,7 +1038,7 @@
<select id="selectGgxhList" resultType="java.lang.String"> <select id="selectGgxhList" resultType="java.lang.String">
select distinct ggxh select distinct ggxh
from basic_products from basic_products
left join basic_udirel on basic_products.uuid = basic_udirel.uuid left join basic_udirel on basic_products.uuid = basic_udirel.uuid
where basic_udirel.id = #{relId} where basic_udirel.id = #{relId}
</select> </select>
@ -1231,9 +1227,6 @@
<if test="price != null"> <if test="price != null">
price=#{price}, price=#{price},
</if> </if>
<if test="price != null">
detailSort=#{detailSort},
</if>
</trim> </trim>
WHERE uuid = #{uuid} WHERE uuid = #{uuid}
</update> </update>

@ -38,53 +38,53 @@
</sql> </sql>
<select id="selectDrugsByNameCodes" resultType="int"> <select id="selectDrugsByNameCodes" resultType="int">
SELECT count(1) FROM third_ali_drug WHERE nameCode = #{nameCode} SELECT count(1)
FROM third_ali_drug
WHERE nameCode = #{nameCode}
</select> </select>
<!-- 自定义saveOrUpdateBatch方法 --> <!-- 自定义saveOrUpdateBatch方法 -->
<insert id="saveOrUpdateBatch" parameterType="com.glxp.api.entity.thrsys.ThirdAliDrug"> <insert id="saveOrUpdateBatch" parameterType="com.glxp.api.entity.thrsys.ThirdAliDrug">
replace INTO third_ali_drug (`type`, manufacturer, cpmctymc, form, formSpec, bzgg, spmc, nameCode, packRatio, replace INTO third_ali_drug (`type`, manufacturer, cpmctymc, form, formSpec, bzgg, spmc, nameCode, packRatio,
packLevel, createTime, updateTime, erpId, approvalNum) packLevel, createTime, updateTime, erpId, approvalNum)
VALUES VALUES
<foreach collection="list" item="item" separator="," index="index"> <foreach collection="list" item="item" separator="," index="index">
(#{item.type}, #{item.manufacturer}, #{item.cpmctymc}, #{item.form}, #{item.formSpec}, #{item.bzgg}, (#{item.type}, #{item.manufacturer}, #{item.cpmctymc}, #{item.form}, #{item.formSpec}, #{item.bzgg},
#{item.spmc}, #{item.nameCode}, #{item.spmc}, #{item.nameCode},
#{item.packRatio}, #{item.packLevel}, #{item.createTime}, #{item.updateTime}, #{item.erpId}, #{item.packRatio}, #{item.packLevel}, #{item.createTime}, #{item.updateTime}, #{item.erpId},
#{item.approvalNum}) #{item.approvalNum})
</foreach> </foreach>
</insert> </insert>
<select id="filterList" parameterType="com.glxp.api.req.thrsys.ThirdAliDrugRequest"
<select id="filterList" parameterType="com.glxp.api.req.thrsys.ThirdAliDrugRequest" resultType="com.glxp.api.entity.thrsys.ThirdAliDrug"> resultType="com.glxp.api.entity.thrsys.ThirdAliDrug">
select select id,
id, `type`,
`type`, manufacturer,
manufacturer, cpmctymc,
cpmctymc, form,
form, formSpec,
formSpec, bzgg,
bzgg, spmc,
spmc, nameCode,
nameCode, packRatio,
packRatio, packLevel,
packLevel, createTime,
createTime, erpId,
erpId, updateTime,
updateTime, approvalNum
approvalNum from third_ali_drug
from third_ali_drug <where>
<where> <if test="cpmctymc != '' and cpmctymc != null">
<if test="cpmctymc != '' and cpmctymc != null"> AND cpmctymc LIKE concat('%', #{cpmctymc}, '%')
AND cpmctymc LIKE concat('%', #{cpmctymc}, '%') </if>
</if> <if test="nameCode != '' and nameCode != null">
<if test="nameCode != '' and nameCode != null"> AND nameCode LIKE concat('%', #{nameCode}, '%')
AND nameCode LIKE concat('%', #{nameCode}, '%') </if>
</if> <if test="approvalNum != '' and approvalNum != null">
<if test="approvalNum != '' and approvalNum != null"> AND approvalNum = #{approvalNum}
AND approvalNum = #{approvalNum} </if>
</if> </where>
</where> </select>
</select>
</mapper> </mapper>

Loading…
Cancel
Save