|
|
|
@ -3,6 +3,7 @@ package com.glxp.api.service.basic.impl;
|
|
|
|
|
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.github.pagehelper.PageHelper;
|
|
|
|
|
import com.glxp.api.constant.ConstantStatus;
|
|
|
|
|
import com.glxp.api.dao.basic.UdiProductDao;
|
|
|
|
@ -14,20 +15,23 @@ import com.glxp.api.req.basic.AddProductRequest;
|
|
|
|
|
import com.glxp.api.req.basic.FilterUdiRelRequest;
|
|
|
|
|
import com.glxp.api.req.basic.UdiInfoRequest;
|
|
|
|
|
import com.glxp.api.req.basic.UpdateLevelDrugRequest;
|
|
|
|
|
import com.glxp.api.res.DiLevelResponse;
|
|
|
|
|
import com.glxp.api.res.basic.UdiRelevanceResponse;
|
|
|
|
|
import com.glxp.api.service.auth.CustomerService;
|
|
|
|
|
import com.glxp.api.service.basic.UdiProductService;
|
|
|
|
|
import com.glxp.api.util.IntUtil;
|
|
|
|
|
import com.glxp.api.util.PinyinUtils;
|
|
|
|
|
import com.glxp.api.util.udi.FilterUdiUtils;
|
|
|
|
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
|
|
|
|
import org.slf4j.Logger;
|
|
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.Date;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
@Service
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
|
@ -42,6 +46,8 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
@Resource
|
|
|
|
|
private CustomerService customerService;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(UdiProductService.class);
|
|
|
|
|
@Override
|
|
|
|
|
public List<UdiProductEntity> filterUdiInfo(FilterUdiRelRequest filterUdiRelRequest) {
|
|
|
|
|
if (filterUdiRelRequest == null) {
|
|
|
|
@ -124,27 +130,42 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
return udiProductEntities.get(0);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean insertUdiInfo(UdiProductEntity udiProductEntity) {
|
|
|
|
|
udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
if (udiProductEntity.getId() == null) {
|
|
|
|
|
udiProductEntity.setId(IdUtil.getSnowflakeNextId());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//医保编码解析
|
|
|
|
|
String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
if (StrUtil.isNotBlank(udiProductEntity.getCpmctymc()) && StrUtil.isBlank(udiProductEntity.getPinyinInitial())) {
|
|
|
|
|
try {
|
|
|
|
|
String pinyin = PinyinUtils.converterToFirstSpell(udiProductEntity.getCpmctymc());
|
|
|
|
|
udiProductEntity.setPinyinInitial(pinyin);
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
logger.error(ExceptionUtils.getStackTrace(e));
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
return udiProductDao.insertUdiInfo(udiProductEntity);
|
|
|
|
|
}
|
|
|
|
|
// @Override
|
|
|
|
|
// public boolean insertUdiInfo(UdiProductEntity udiProductEntity) {
|
|
|
|
|
// udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
// if (udiProductEntity.getId() == null) {
|
|
|
|
|
// udiProductEntity.setId(IdUtil.getSnowflakeNextId());
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// //医保编码解析
|
|
|
|
|
// String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
// if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
// Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
// Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
// Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
// udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
// udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
// udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return udiProductDao.insertUdiInfo(udiProductEntity);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean insertUdiInfos(List<UdiProductEntity> udiInfoEntities) {
|
|
|
|
@ -159,38 +180,48 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
return udiProductDao.updateUdiInfo(udiProductEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
// @Override
|
|
|
|
|
// public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) {
|
|
|
|
|
// if (StrUtil.isEmpty(udiProductEntity.getUuid()))
|
|
|
|
|
// return false;
|
|
|
|
|
// udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
// //医保编码解析
|
|
|
|
|
// String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
// if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
// Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
// Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
// Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
// udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
// udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
// udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
// }
|
|
|
|
|
// return udiProductDao.updateUdiInfoByUuid(udiProductEntity);
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
public boolean updateUdiInfoByUuid(UdiProductEntity udiProductEntity) {
|
|
|
|
|
if (StrUtil.isEmpty(udiProductEntity.getUuid()))
|
|
|
|
|
return false;
|
|
|
|
|
udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
//医保编码解析
|
|
|
|
|
String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
}
|
|
|
|
|
return udiProductDao.updateUdiInfoByUuid(udiProductEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// @Override
|
|
|
|
|
// public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) {
|
|
|
|
|
// udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
// //医保编码解析
|
|
|
|
|
// String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
// if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
// Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
// Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
// Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
// udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
// udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
// udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// return udiProductDao.updateUdiInfoById(udiProductEntity);
|
|
|
|
|
// }
|
|
|
|
|
@Override
|
|
|
|
|
public boolean updateUdiInfoById(UdiProductEntity udiProductEntity) {
|
|
|
|
|
udiProductEntity.setUpdateTime(new Date());
|
|
|
|
|
//医保编码解析
|
|
|
|
|
String catalogcode = udiProductEntity.getCatalogcode();
|
|
|
|
|
if (StrUtil.isNotEmpty(catalogcode) && catalogcode.length() >= 7) {
|
|
|
|
|
Integer catalogcode1 = Integer.valueOf(catalogcode.substring(1, 3));
|
|
|
|
|
Integer catalogcode2 = Integer.valueOf(catalogcode1 + catalogcode.substring(3, 5));
|
|
|
|
|
Integer catalogcode3 = Integer.valueOf(catalogcode2 + catalogcode.substring(5, 7));
|
|
|
|
|
udiProductEntity.setCatalogCode1(catalogcode1);
|
|
|
|
|
udiProductEntity.setCatalogCode2(catalogcode2);
|
|
|
|
|
udiProductEntity.setCatalogCode3(catalogcode3);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return udiProductDao.updateUdiInfoById(udiProductEntity);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -227,6 +258,12 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 新增/编辑药品信息
|
|
|
|
|
*
|
|
|
|
|
* @param addProductRequest
|
|
|
|
|
* @return
|
|
|
|
|
*/
|
|
|
|
|
/**
|
|
|
|
|
* 新增/编辑药品信息
|
|
|
|
|
*
|
|
|
|
@ -253,20 +290,29 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) {
|
|
|
|
|
udiProductEntity.setDiType(1);
|
|
|
|
|
}
|
|
|
|
|
udiProductDao.updateUdiInfo(udiProductEntity);
|
|
|
|
|
int i = udiProductDao.updateById(udiProductEntity);
|
|
|
|
|
if (i == 0) {
|
|
|
|
|
throw new JsonException(500, "更新错误");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//修改关联表
|
|
|
|
|
udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
|
|
|
|
|
udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi());
|
|
|
|
|
udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount());
|
|
|
|
|
// udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
|
|
|
|
|
udiRelevanceEntity.setSplitEnable(addProductRequest.getSplitEnable());
|
|
|
|
|
udiRelevanceEntity.setAutoCode(addProductRequest.getAutoCode());
|
|
|
|
|
// udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi());
|
|
|
|
|
// udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit());
|
|
|
|
|
udiRelevanceEntity.setUseLevel(addProductRequest.getUseLevel());
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi());
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit());
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevel(addProductRequest.getDistributeLevel());
|
|
|
|
|
udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode());
|
|
|
|
|
udiRelevanceEntity.setUpdateTime(new Date());
|
|
|
|
|
udiRelevanceEntity.setUseMaxLevel(addProductRequest.getUseMaxLevel());
|
|
|
|
|
udiRelevanceEntity.setDistributeMaxLevel(addProductRequest.getDistributeMaxLevel());
|
|
|
|
|
udiRelevanceEntity.setUnpackUseTime(addProductRequest.getUnpackUseTime());
|
|
|
|
|
udiRelevanceDao.updateById(udiRelevanceEntity);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
updateLevelCount(udiRelevanceEntity);
|
|
|
|
|
} else {
|
|
|
|
|
udiRelevanceEntity = new UdiRelevanceEntity();
|
|
|
|
|
udiRelevanceEntity.setId(IdUtil.getSnowflakeNextId());
|
|
|
|
@ -274,13 +320,41 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
udiRelevanceEntity.setIsUseDy(false);
|
|
|
|
|
udiRelevanceEntity.setUuid(IdUtil.getSnowflakeNextId() + "");
|
|
|
|
|
udiRelevanceEntity.setNeedCert(false);
|
|
|
|
|
udiRelevanceEntity.setSplitEnable(true);
|
|
|
|
|
udiRelevanceEntity.setAutoCode(true);
|
|
|
|
|
udiRelevanceEntity.setPurType(1);
|
|
|
|
|
udiRelevanceEntity.setProductsType(2);
|
|
|
|
|
udiRelevanceEntity.setAttributeType(addProductRequest.getAttributeType());
|
|
|
|
|
udiRelevanceEntity.setHcType(addProductRequest.getHcType());
|
|
|
|
|
udiRelevanceEntity.setPayFeeCode(addProductRequest.getPayFeeCode());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
udiRelevanceEntity.setUnpackUseTime(addProductRequest.getUnpackUseTime());
|
|
|
|
|
// if (addProductRequest.getDistributeLevelDi() != null) {
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelDi(addProductRequest.getDistributeLevelDi());
|
|
|
|
|
// }
|
|
|
|
|
// if (addProductRequest.getDistributeLevelCount() != null) {
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelCount(addProductRequest.getDistributeLevelCount());
|
|
|
|
|
// }
|
|
|
|
|
// if (addProductRequest.getDistributeLevelUnit() != null) {
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelUnit(addProductRequest.getDistributeLevelUnit());
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// if (addProductRequest.getUseLevelDi() != null) {
|
|
|
|
|
// udiRelevanceEntity.setUseLevelDi(addProductRequest.getUseLevelDi());
|
|
|
|
|
// }
|
|
|
|
|
// if (addProductRequest.getUseLevelUnit() != null) {
|
|
|
|
|
// udiRelevanceEntity.setUseLevelUnit(addProductRequest.getUseLevelUnit());
|
|
|
|
|
// }
|
|
|
|
|
// if (addProductRequest.getUseLeverCount() != null) {
|
|
|
|
|
// udiRelevanceEntity.setUseLeverCount(addProductRequest.getUseLeverCount());
|
|
|
|
|
// }
|
|
|
|
|
if (addProductRequest.getDistributeLevel() != null) {
|
|
|
|
|
udiRelevanceEntity.setDistributeLevel(addProductRequest.getDistributeLevel());
|
|
|
|
|
}
|
|
|
|
|
if (addProductRequest.getUseLevel() != null) {
|
|
|
|
|
udiRelevanceEntity.setUseLevel(addProductRequest.getUseLevel());
|
|
|
|
|
}
|
|
|
|
|
udiRelevanceEntity.setUseMaxLevel(addProductRequest.getUseMaxLevel());
|
|
|
|
|
udiRelevanceEntity.setDistributeMaxLevel(addProductRequest.getDistributeMaxLevel());
|
|
|
|
|
if (CollUtil.isNotEmpty(addProductRequest.getDrugLevelLists())) {
|
|
|
|
|
for (UpdateLevelDrugRequest updateLevelDrugRequest : addProductRequest.getDrugLevelLists()) {
|
|
|
|
|
UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
@ -291,10 +365,11 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
// BeanUtils.copyProperties(updateLevelDrugRequest, udiProductEntity);
|
|
|
|
|
BeanUtils.copyProperties(addProductRequest, udiProductEntity);
|
|
|
|
|
udiProductEntity.setNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
udiProductEntity.setBhxjsl(updateLevelDrugRequest.getBhxjsl());
|
|
|
|
|
udiProductEntity.setBhxjsl(updateLevelDrugRequest.getMyBhxjsl());
|
|
|
|
|
udiProductEntity.setPackUnit(updateLevelDrugRequest.getPackUnit());
|
|
|
|
|
udiProductEntity.setSjcpbm(updateLevelDrugRequest.getSjcpbm());
|
|
|
|
|
udiProductEntity.setCpmctymc(addProductRequest.getCpmctymc());
|
|
|
|
|
udiProductEntity.setPackLevel(String.valueOf(updateLevelDrugRequest.getPackLevel()));
|
|
|
|
|
udiProductEntity.setUuid(udiRelevanceEntity.getUuid());
|
|
|
|
|
udiProductEntity.setProductsType(2);
|
|
|
|
|
udiProductEntity.setGgxh(addProductRequest.getSpec());
|
|
|
|
@ -302,8 +377,7 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
udiProductEntity.setZczbhhzbapzbh(addProductRequest.getRegisterNo());
|
|
|
|
|
udiProductEntity.setPackLevel(updateLevelDrugRequest.getPackLevel() + "");
|
|
|
|
|
udiProductEntity.setUuid(udiProductEntity.getUuid());
|
|
|
|
|
//药品扫码 过滤 三期
|
|
|
|
|
udiProductEntity.setAllowNoSerial(true);
|
|
|
|
|
udiProductEntity.setPrice(udiProductEntity.getPrice());
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) == 1 || addProductRequest.getDrugLevelLists().size() == 1) {
|
|
|
|
|
udiProductEntity.setDiType(1);
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) == 1) {
|
|
|
|
@ -318,6 +392,7 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
udiRelevanceDao.insertUdiRelevance(udiRelevanceEntity);
|
|
|
|
|
updateLevelCount(udiRelevanceEntity);
|
|
|
|
|
}
|
|
|
|
|
return addProductRequest;
|
|
|
|
|
}
|
|
|
|
@ -328,31 +403,31 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
if (updateLevelDrugRequest.getRelId() != null) {
|
|
|
|
|
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(updateLevelDrugRequest.getRelId());
|
|
|
|
|
|
|
|
|
|
UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
UdiProductEntity byUuids = udiProductDao.findById(updateLevelDrugRequest.getProductId() + "");
|
|
|
|
|
UdiProductEntity udiProductEntity1 = null;
|
|
|
|
|
|
|
|
|
|
if (updateLevelDrugRequest.getProductId() != null) {
|
|
|
|
|
udiProductEntity1 = byUuids;
|
|
|
|
|
} else {
|
|
|
|
|
udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (udiProductEntity1 != null) {
|
|
|
|
|
//更新
|
|
|
|
|
udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + "");
|
|
|
|
|
udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit());
|
|
|
|
|
udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm());
|
|
|
|
|
udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm());
|
|
|
|
|
udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getBhxjsl());
|
|
|
|
|
updateUdiProductEntity(udiProductEntity1, updateLevelDrugRequest);
|
|
|
|
|
udiProductDao.updateById(udiProductEntity1);
|
|
|
|
|
} else {
|
|
|
|
|
//新增
|
|
|
|
|
udiProductEntity1 = udiProductDao.findByUuid(udiRelevanceEntity.getUuid());
|
|
|
|
|
udiProductEntity1.setNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
udiProductEntity1.setPackLevel(updateLevelDrugRequest.getPackLevel() + "");
|
|
|
|
|
udiProductEntity1.setPackUnit(updateLevelDrugRequest.getPackUnit());
|
|
|
|
|
udiProductEntity1.setSjcpbm(updateLevelDrugRequest.getSjcpbm());
|
|
|
|
|
udiProductEntity1.setBhxjcpbm(updateLevelDrugRequest.getBhxjcpbm());
|
|
|
|
|
udiProductEntity1.setBhxjsl(updateLevelDrugRequest.getBhxjsl());
|
|
|
|
|
udiProductEntity1 = new UdiProductEntity();
|
|
|
|
|
udiProductEntity1.setUuid(udiRelevanceEntity.getUuid());
|
|
|
|
|
udiProductEntity1.setId(IdUtil.getSnowflakeNextId());
|
|
|
|
|
updateUdiProductEntity(udiProductEntity1, updateLevelDrugRequest);
|
|
|
|
|
udiProductDao.insert(udiProductEntity1);
|
|
|
|
|
}
|
|
|
|
|
updateLevelCount(udiRelevanceEntity);
|
|
|
|
|
// if (IntUtil.value(udiProductEntity1.getPackLevel()) == 1) {
|
|
|
|
|
// calculateDistCount(udiProductEntity1, udiRelevanceEntity);
|
|
|
|
|
// calculateUseCount(udiProductEntity1, udiRelevanceEntity);
|
|
|
|
|
// }
|
|
|
|
|
} else {
|
|
|
|
|
//必须先提交后才能保存
|
|
|
|
|
UdiProductEntity udiProductEntity1 = udiProductDao.findByNameCode(updateLevelDrugRequest.getNameCode());
|
|
|
|
|
if (udiProductEntity1 != null) {
|
|
|
|
|
throw new JsonException(500, "层级编码已存在!");
|
|
|
|
@ -360,16 +435,63 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void updateUdiProductEntity(UdiProductEntity entity, UpdateLevelDrugRequest request) {
|
|
|
|
|
entity.setNameCode(request.getNameCode());
|
|
|
|
|
entity.setPackLevel(String.valueOf(request.getPackLevel()));
|
|
|
|
|
entity.setPackUnit(request.getPackUnit());
|
|
|
|
|
entity.setSjcpbm(request.getSjcpbm());
|
|
|
|
|
entity.setBhxjcpbm(request.getBhxjcpbm());
|
|
|
|
|
entity.setBhxjsl(request.getMyBhxjsl());
|
|
|
|
|
entity.setDiType(request.getDiType());
|
|
|
|
|
entity.setXjdw(request.getXjdw());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public List<DiLevelResponse> findLevelByRelId(Long relId) {
|
|
|
|
|
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceDao.selectById(relId);
|
|
|
|
|
List<UdiProductEntity> udiInfoEntities = findByUuids(udiRelevanceEntity.getUuid());
|
|
|
|
|
List<DiLevelResponse> diLevelResponses = new ArrayList<>();
|
|
|
|
|
if (CollUtil.isNotEmpty(udiInfoEntities)) {
|
|
|
|
|
|
|
|
|
|
Map<String, List<UdiProductEntity>> groupedByLevel = udiInfoEntities.stream()
|
|
|
|
|
.collect(Collectors.groupingBy(UdiProductEntity::getPackLevel));
|
|
|
|
|
groupedByLevel.forEach((level, entities) -> {
|
|
|
|
|
UdiProductEntity udiProductEntity = entities.get(0);
|
|
|
|
|
DiLevelResponse diLevelResponse = new DiLevelResponse();
|
|
|
|
|
diLevelResponse.setLevelUnit(udiProductEntity.getLevelUnit());
|
|
|
|
|
diLevelResponse.setPackLevel(IntUtil.value(udiProductEntity.getPackLevel()));
|
|
|
|
|
diLevelResponse.setDiType(udiProductEntity.getDiType());
|
|
|
|
|
diLevelResponse.setXjdw(udiProductEntity.getXjdw());
|
|
|
|
|
diLevelResponse.setPackUnit(udiProductEntity.getPackUnit());
|
|
|
|
|
diLevelResponse.setBhxjsl(udiProductEntity.getBhxjsl());
|
|
|
|
|
diLevelResponses.add(diLevelResponse);
|
|
|
|
|
if (udiProductEntity.getProductsType() == 2 && IntUtil.value(udiProductEntity.getPackLevel()) == 1) {
|
|
|
|
|
DiLevelResponse diLevelResponse1 = new DiLevelResponse();
|
|
|
|
|
diLevelResponse1.setLevelUnit(udiProductEntity.getXjdw());
|
|
|
|
|
diLevelResponse1.setPackLevel(0);
|
|
|
|
|
diLevelResponse1.setDiType(ConstantStatus.DITYPE_SYDY);
|
|
|
|
|
diLevelResponse1.setXjdw(udiProductEntity.getXjdw());
|
|
|
|
|
diLevelResponse1.setPackUnit(udiProductEntity.getXjdw());
|
|
|
|
|
diLevelResponse1.setBhxjsl(1);
|
|
|
|
|
diLevelResponses.add(diLevelResponse1);
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
Collections.sort(diLevelResponses, Comparator.comparing(DiLevelResponse::getPackLevel));
|
|
|
|
|
return diLevelResponses;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据当前层级标识计算流通拆零数量
|
|
|
|
|
*/
|
|
|
|
|
public void calculateDistCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) {
|
|
|
|
|
List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid());
|
|
|
|
|
List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiProductEntity.getUuid());
|
|
|
|
|
CountWrapper xjCountWrapper = new CountWrapper();
|
|
|
|
|
findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper);
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit());
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelDi(udiProductEntity.getNameCode());
|
|
|
|
|
// udiRelevanceEntity.setDistributeLevelUnit(udiProductEntity.getPackUnit());
|
|
|
|
|
udiRelevanceEntity.setDistributeLevel(IntUtil.value(udiProductEntity.getPackLevel()));
|
|
|
|
|
udiRelevanceEntity.setDistributeLevelCount(xjCountWrapper.getCount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -377,12 +499,13 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
* 根据当前层级标识计算使用拆零数量
|
|
|
|
|
*/
|
|
|
|
|
public void calculateUseCount(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) {
|
|
|
|
|
List<UdiProductEntity> udiProductEntities = udiProductDao.findByOriginUuid(udiProductEntity.getUuid());
|
|
|
|
|
List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiProductEntity.getUuid());
|
|
|
|
|
CountWrapper xjCountWrapper = new CountWrapper();
|
|
|
|
|
findUltimateEntity(udiProductEntity, udiProductEntities, xjCountWrapper);
|
|
|
|
|
udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode());
|
|
|
|
|
udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit());
|
|
|
|
|
udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount());
|
|
|
|
|
// udiRelevanceEntity.setUseLevelDi(udiProductEntity.getNameCode());
|
|
|
|
|
// udiRelevanceEntity.setUseLevelUnit(udiProductEntity.getPackUnit());
|
|
|
|
|
udiRelevanceEntity.setUseLevel(IntUtil.value(udiProductEntity.getPackLevel()));
|
|
|
|
|
// udiRelevanceEntity.setUseLeverCount(xjCountWrapper.getCount());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static UdiProductEntity findUltimateEntity(UdiProductEntity udiProductEntity, List<UdiProductEntity> udiProductEntities, CountWrapper xjCountWrapper) {
|
|
|
|
@ -403,12 +526,60 @@ public class UdiProductServiceImpl implements UdiProductService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 更新各个层级数量换算
|
|
|
|
|
*
|
|
|
|
|
* @param udiRelevanceEntity
|
|
|
|
|
*/
|
|
|
|
|
public void updateLevelCount(UdiRelevanceEntity udiRelevanceEntity) {
|
|
|
|
|
List<UdiProductEntity> udiProductEntities = udiProductDao.findByUuids(udiRelevanceEntity.getUuid());
|
|
|
|
|
Integer curLevel = udiRelevanceEntity.getDistributeLevel();
|
|
|
|
|
List<DiLevelResponse> diLevelResponses = findLevelByRelId(udiRelevanceEntity.getId());
|
|
|
|
|
|
|
|
|
|
//更新各个层级流通时包含计量单元数量
|
|
|
|
|
if (CollUtil.isNotEmpty(udiProductEntities)) {
|
|
|
|
|
for (UdiProductEntity udiProductEntity : udiProductEntities) {
|
|
|
|
|
int bhltsl = 1;
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) > curLevel) {
|
|
|
|
|
bhltsl = udiProductEntity.getBhxjsl();
|
|
|
|
|
for (DiLevelResponse diLevelResponse : diLevelResponses) {
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) > diLevelResponse.getPackLevel() && IntUtil.value(diLevelResponse.getPackLevel()) > curLevel) {
|
|
|
|
|
bhltsl = bhltsl * diLevelResponse.getBhxjsl();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
udiProductEntity.setBhltcjsl(bhltsl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
curLevel = udiRelevanceEntity.getUseLevel();
|
|
|
|
|
//更新各个层级使用时包含计量单元数量
|
|
|
|
|
if (CollUtil.isNotEmpty(udiProductEntities)) {
|
|
|
|
|
for (UdiProductEntity udiProductEntity : udiProductEntities) {
|
|
|
|
|
int bhltsl = 1;
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) > curLevel) {
|
|
|
|
|
bhltsl = udiProductEntity.getBhxjsl();
|
|
|
|
|
for (DiLevelResponse diLevelResponse : diLevelResponses) {
|
|
|
|
|
if (IntUtil.value(udiProductEntity.getPackLevel()) > diLevelResponse.getPackLevel() && IntUtil.value(diLevelResponse.getPackLevel()) > curLevel) {
|
|
|
|
|
bhltsl = bhltsl * diLevelResponse.getBhxjsl();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
udiProductEntity.setBhsycjsl(bhltsl);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
udiProductDao.updateBatchById(udiProductEntities);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean deleteByNameCode(String nameCode) {
|
|
|
|
|
return udiProductDao.delete(new QueryWrapper<UdiProductEntity>().eq("nameCode", nameCode)) > 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据当前层级标识计算流通拆零数量
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void setUpdateInfo(UdiProductEntity udiProductEntity, UdiRelevanceEntity udiRelevanceEntity) {
|
|
|
|
|
Date now = new Date();
|
|
|
|
|
String userId = String.valueOf(customerService.getUserBean().getId());
|
|
|
|
|