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.
udi-wms-java/src/main/java/com/glxp/api/service/basic/BasicSkPrescribeService.java

146 lines
7.0 KiB
Java

package com.glxp.api.service.basic;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.bean.copier.CopyOptions;
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.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.dao.basic.BasicSkProjectMapper;
import com.glxp.api.entity.basic.*;
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.BasicSkProjectRequest;
import com.glxp.api.req.basic.GetSickPrescribeRequest;
import com.glxp.api.req.basic.GetSickRequest;
import com.glxp.api.req.thrsys.FilterThrProductsRequest;
import com.glxp.api.res.PageSimpleResponse;
import com.glxp.api.res.basic.BasicSkPrescribeResponse;
import com.glxp.api.res.basic.BasicSkProjectResponse;
import com.glxp.api.res.basic.BasicSkSickerResponse;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.res.thrsys.ThrProductsResponse;
import com.glxp.api.service.BasicSkPrescribeDiService;
import com.glxp.api.service.thrsys.ThrProductsService;
import com.glxp.api.util.IntUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.dao.basic.BasicSkPrescribeMapper;
import javax.annotation.Resource;
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());
}
2 years ago
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);
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());
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.setId(IdUtil.getSnowflakeNextId());
basicSkPrescirbeDetailService.save(skPrescribeItemEntity);
trSkPrescribeDi(skPrescribeItemEntity);
}
}
//todo 数据转换
basicSkPrescribeEntities.add(basicSkPrescribeEntity);
});
if (list.size() >= limit && !baseResponse.getData().getTotal().equals(-666)) {
super.baseMapper.replaceBatchs(basicSkPrescribeEntities);
page++;
} else {
break;
}
} else {
return ResultVOUtils.error(500, "下载异常中断");
}
}
return ResultVOUtils.success("下载成功!");
}
@Resource
ThrProductsService thrProductsService;
@Resource
UdiRelevanceService udiRelevanceService;
/**
* 使
*
* @return
*/
public void trSkPrescribeDi(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 = new BasicSkPrescribeDiEntity();
basicSkPrescribeDiEntity.setPrescribeCode(skPrescribeItemEntity.getPrescribeCode());
basicSkPrescribeDiEntity.setSickerCode(skPrescribeItemEntity.getSickerCode());
basicSkPrescribeDiEntity.setCount(IntUtil.value(skPrescribeItemEntity.getMeasureCount()));
basicSkPrescribeDiEntity.setMeasureUnit(skPrescribeItemEntity.getMeasureUnit());
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());
basicSkPrescribeDiService.save(basicSkPrescribeDiEntity);
}
}
}
}
}