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.LambdaQueryWrapper; 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 { @Resource ErpBasicClient erpBasicClient; @Resource BasicSkPrescirbeDetailService basicSkPrescirbeDetailService; @Resource BasicSkPrescribeDiService basicSkPrescribeDiService; @Resource BasicSkPrescribeMapper basicSkPrescribeMapper; public BasicSkPrescribeEntity getByCode(String code) { return basicSkPrescribeMapper.selectOne(new LambdaQueryWrapper().eq(BasicSkPrescribeEntity::getCode, code).last("limit 1")); } public List 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 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> baseResponse = erpBasicClient.getSickPrescribe(request); if (baseResponse.getCode() == 20000) { List list = baseResponse.getData().getList(); List 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 skPrescribeItemEntities = item.getItemList(); if (CollUtil.isNotEmpty(skPrescribeItemEntities)) { basicSkPrescirbeDetailService.remove(new QueryWrapper().eq("prescribeCode", item.getCode())); basicSkPrescribeDiService.remove(new QueryWrapper().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 thrProductsEntities = thrProductsService.list(new QueryWrapper().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.setItemCode(skPrescribeItemEntity.getItemCode()); basicSkPrescribeDiEntity.setItemName(skPrescribeItemEntity.getItemName()); basicSkPrescribeDiEntity.setUpdateTime(new Date()); basicSkPrescribeDiService.save(basicSkPrescribeDiEntity); } } }