You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
190 lines
10 KiB
Java
190 lines
10 KiB
Java
package com.glxp.api.service.basic;
|
|
|
|
import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollUtil;
|
|
import cn.hutool.core.util.IdUtil;
|
|
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.common.res.BaseResponse;
|
|
import com.glxp.api.common.util.ResultVOUtils;
|
|
import com.glxp.api.dao.basic.BasicSkPrescribeMapper;
|
|
import com.glxp.api.entity.basic.BasicSkPrescribeDiEntity;
|
|
import com.glxp.api.entity.basic.BasicSkPrescribeEntity;
|
|
import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity;
|
|
import com.glxp.api.entity.basic.UdiRelevanceEntity;
|
|
import com.glxp.api.entity.thrsys.ThrProductsEntity;
|
|
import com.glxp.api.http.ErpBasicClient;
|
|
import com.glxp.api.req.basic.BasicSkPrescribeRequest;
|
|
import com.glxp.api.req.basic.GetSickPrescribeRequest;
|
|
import com.glxp.api.res.PageSimpleResponse;
|
|
import com.glxp.api.res.basic.BasicSkPrescribeResponse;
|
|
import com.glxp.api.res.basic.UdiRelevanceResponse;
|
|
import com.glxp.api.service.thrsys.ThrProductsService;
|
|
import com.glxp.api.util.IntUtil;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
import javax.annotation.Resource;
|
|
import java.time.LocalDateTime;
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
@Service
|
|
public class BasicSkPrescribeService extends ServiceImpl<BasicSkPrescribeMapper, BasicSkPrescribeEntity> {
|
|
|
|
@Resource
|
|
ErpBasicClient erpBasicClient;
|
|
@Resource
|
|
BasicSkPrescirbeDetailService basicSkPrescirbeDetailService;
|
|
@Resource
|
|
BasicSkPrescribeDiService basicSkPrescribeDiService;
|
|
|
|
public List<BasicSkPrescribeResponse> filterList(BasicSkPrescribeRequest basicSkPrescribeRequest) {
|
|
if (basicSkPrescribeRequest == null) {
|
|
return Collections.emptyList();
|
|
}
|
|
if (basicSkPrescribeRequest.getPage() != null) {
|
|
int offset = (basicSkPrescribeRequest.getPage() - 1) * basicSkPrescribeRequest.getLimit();
|
|
PageHelper.offsetPage(offset, basicSkPrescribeRequest.getLimit());
|
|
}
|
|
List<BasicSkPrescribeResponse> data = super.baseMapper.filterList(basicSkPrescribeRequest);
|
|
return data;
|
|
}
|
|
|
|
|
|
public BaseResponse downloadSickerPrescribe(GetSickPrescribeRequest request) {
|
|
int page = 1;
|
|
int limit = 50;
|
|
request.setThirdSys("thirdId");
|
|
request.setLimit(limit);
|
|
int count = 1;
|
|
while (true) {
|
|
request.setPage(page);
|
|
BaseResponse<PageSimpleResponse<BasicSkPrescribeResponse>> baseResponse = erpBasicClient.getSickPrescribe(request);
|
|
if (baseResponse.getCode() == 20000) {
|
|
List<BasicSkPrescribeResponse> list = baseResponse.getData().getList();
|
|
List<BasicSkPrescribeEntity> basicSkPrescribeEntities = new ArrayList<>();
|
|
list.forEach(item -> {
|
|
BasicSkPrescribeEntity basicSkPrescribeEntity = new BasicSkPrescribeEntity();
|
|
BeanUtil.copyProperties(item, basicSkPrescribeEntity);
|
|
basicSkPrescribeEntity.setSickerCode(item.getSickCode());
|
|
basicSkPrescribeEntity.setAdNum(request.getAdNum());
|
|
basicSkPrescribeEntity.setUpdateTime(LocalDateTime.now());
|
|
List<BasicSkPrescribeItemEntity> skPrescribeItemEntities = item.getItemList();
|
|
if (CollUtil.isNotEmpty(skPrescribeItemEntities)) {
|
|
basicSkPrescirbeDetailService.remove(new QueryWrapper<BasicSkPrescribeItemEntity>().eq("prescribeCode", item.getCode()));
|
|
basicSkPrescribeDiService.remove(new QueryWrapper<BasicSkPrescribeDiEntity>().eq("prescribeCode", item.getCode()));
|
|
for (BasicSkPrescribeItemEntity skPrescribeItemEntity : skPrescribeItemEntities) {
|
|
skPrescribeItemEntity.setPrescribeCode(item.getCode());
|
|
skPrescribeItemEntity.setSickerCode(item.getSickCode());
|
|
skPrescribeItemEntity.setAdNum(basicSkPrescribeEntity.getAdNum());
|
|
skPrescribeItemEntity.setId(IdUtil.getSnowflakeNextId());
|
|
basicSkPrescirbeDetailService.save(skPrescribeItemEntity);
|
|
trSkPrescribeDi(skPrescribeItemEntity);
|
|
}
|
|
}
|
|
//todo 数据转换
|
|
basicSkPrescribeEntities.add(basicSkPrescribeEntity);
|
|
super.baseMapper.insertOrUpdate(basicSkPrescribeEntity);
|
|
});
|
|
|
|
if (CollUtil.isEmpty(basicSkPrescribeEntities)) {
|
|
count++;
|
|
}
|
|
//往后顺延一页
|
|
if (count < 2) {
|
|
page++;
|
|
} else {
|
|
break;
|
|
}
|
|
} else {
|
|
return ResultVOUtils.error(500, "下载异常中断");
|
|
}
|
|
}
|
|
return ResultVOUtils.success("下载成功!");
|
|
}
|
|
|
|
|
|
@Resource
|
|
ThrProductsService thrProductsService;
|
|
@Resource
|
|
UdiRelevanceService udiRelevanceService;
|
|
|
|
/**
|
|
* 处方明细转换成处方使用耗材(长泰的处方明细转换)(弃用)
|
|
*
|
|
* @return
|
|
*/
|
|
public void trSkPrescribeDi2(BasicSkPrescribeItemEntity skPrescribeItemEntity) {
|
|
|
|
if (skPrescribeItemEntity.getItemCode() != null) {
|
|
List<ThrProductsEntity> thrProductsEntities = thrProductsService.list(new QueryWrapper<ThrProductsEntity>().eq("prcitmcode", skPrescribeItemEntity.getItemCode()));
|
|
if (CollUtil.isNotEmpty(thrProductsEntities)) {
|
|
for (ThrProductsEntity thrProductsEntity : thrProductsEntities) {
|
|
BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = basicSkPrescribeDiService.findByThrCode(skPrescribeItemEntity.getAdNum(), thrProductsEntity.getCode());
|
|
if (basicSkPrescribeDiEntity == null) {
|
|
basicSkPrescribeDiEntity.setPrescribeCode(skPrescribeItemEntity.getPrescribeCode());
|
|
basicSkPrescribeDiEntity.setSickerCode(skPrescribeItemEntity.getSickerCode());
|
|
basicSkPrescribeDiEntity.setCount(IntUtil.value(skPrescribeItemEntity.getMeasureCount()));
|
|
basicSkPrescribeDiEntity.setMeasureCount(basicSkPrescribeDiEntity.getCount() + "");
|
|
basicSkPrescribeDiEntity.setMeasureUnit(skPrescribeItemEntity.getMeasureUnit());
|
|
basicSkPrescribeDiEntity.setPId(thrProductsEntity.getPrcitmcode());
|
|
UdiRelevanceEntity udiRelevanceEntity = udiRelevanceService.selectByThirdId(thrProductsEntity.getCode(), "thirdId");
|
|
basicSkPrescribeDiEntity.setAmount(skPrescribeItemEntity.getAmount());
|
|
basicSkPrescribeDiEntity.setRelId(udiRelevanceEntity.getId());
|
|
basicSkPrescribeDiEntity.setThrCode(thrProductsEntity.getCode());
|
|
basicSkPrescribeDiEntity.setThrName(thrProductsEntity.getName());
|
|
basicSkPrescribeDiEntity.setCategory(thrProductsEntity.getCplb());
|
|
basicSkPrescribeDiEntity.setGgxh(thrProductsEntity.getStandard());
|
|
basicSkPrescribeDiEntity.setAdNum(skPrescribeItemEntity.getAdNum());
|
|
basicSkPrescribeDiEntity.setUpdateTime(new Date());
|
|
basicSkPrescribeDiService.save(basicSkPrescribeDiEntity);
|
|
} else {
|
|
basicSkPrescribeDiEntity.setCount(IntUtil.value(basicSkPrescribeDiEntity.getCount()) + IntUtil.value(skPrescribeItemEntity.getMeasureCount()));
|
|
basicSkPrescribeDiEntity.setAmount(basicSkPrescribeDiEntity.getAmount().multiply(skPrescribeItemEntity.getAmount()));
|
|
basicSkPrescribeDiService.updateById(basicSkPrescribeDiEntity);
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 处方明细转换成处方使用耗材/药品
|
|
*
|
|
* @return
|
|
*/
|
|
public void trSkPrescribeDi(BasicSkPrescribeItemEntity skPrescribeItemEntity) {
|
|
|
|
if (skPrescribeItemEntity.getItemCode() != null) {
|
|
UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByPayFeeCode(skPrescribeItemEntity.getItemCode());
|
|
BasicSkPrescribeDiEntity basicSkPrescribeDiEntity = basicSkPrescribeDiService.findByThrCode(skPrescribeItemEntity.getAdNum(), udiRelevanceResponse.getNameCode());
|
|
if (basicSkPrescribeDiEntity == null) {
|
|
basicSkPrescribeDiEntity = new BasicSkPrescribeDiEntity();
|
|
}
|
|
basicSkPrescribeDiEntity.setPrescribeCode(skPrescribeItemEntity.getPrescribeCode());
|
|
basicSkPrescribeDiEntity.setSickerCode(skPrescribeItemEntity.getSickerCode());
|
|
basicSkPrescribeDiEntity.setCount(IntUtil.value(skPrescribeItemEntity.getCount()));
|
|
basicSkPrescribeDiEntity.setMeasureCount(skPrescribeItemEntity.getMeasureCount() + "");
|
|
basicSkPrescribeDiEntity.setMeasureUnit(skPrescribeItemEntity.getMeasureUnit());
|
|
basicSkPrescribeDiEntity.setPId(udiRelevanceResponse.getPayFeeCode());
|
|
basicSkPrescribeDiEntity.setAmount(skPrescribeItemEntity.getAmount());
|
|
basicSkPrescribeDiEntity.setRelId(udiRelevanceResponse.getId());
|
|
basicSkPrescribeDiEntity.setThrCode(udiRelevanceResponse.getNameCode());
|
|
basicSkPrescribeDiEntity.setThrName(udiRelevanceResponse.getCpmctymc());
|
|
basicSkPrescribeDiEntity.setCategory(udiRelevanceResponse.getCplb());
|
|
basicSkPrescribeDiEntity.setGgxh(udiRelevanceResponse.getGgxh());
|
|
basicSkPrescribeDiEntity.setAdNum(skPrescribeItemEntity.getAdNum());
|
|
basicSkPrescribeDiEntity.setBatchNo(skPrescribeItemEntity.getBatchNo());
|
|
basicSkPrescribeDiEntity.setUpdateTime(new Date());
|
|
basicSkPrescribeDiService.save(basicSkPrescribeDiEntity);
|
|
}
|
|
}
|
|
|
|
|
|
}
|