package com.glxp.api.service.collect; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.PageHelper; import com.glxp.api.dao.collect.IoCollectOrderMapper; import com.glxp.api.entity.basic.BasicCollectBustypeEntity; import com.glxp.api.entity.basic.BasicSkPrescribeEntity; import com.glxp.api.entity.basic.BasicSkPrescribeItemEntity; import com.glxp.api.entity.collect.IoCollectOrder; import com.glxp.api.entity.collect.IoCollectOrderBiz; import com.glxp.api.entity.inout.IoOrderDetailBizEntity; import com.glxp.api.req.collect.CollectOrderRequest; import com.glxp.api.req.inout.FilterOrderRequest; import com.glxp.api.res.basic.UdiRelevanceResponse; import com.glxp.api.res.collect.IoCollectOrderResponse; import com.glxp.api.res.inout.IoOrderResponse; import com.glxp.api.service.basic.BasicCollectBustypeService; import com.glxp.api.service.basic.BasicSkPrescirbeDetailService; import com.glxp.api.service.basic.BasicSkPrescribeService; import com.glxp.api.service.basic.UdiRelevanceService; import com.glxp.api.service.inout.IoOrderDetailBizService; import com.glxp.api.service.inout.IoOrderService; import com.glxp.api.util.IntUtil; import com.glxp.api.util.MsDateUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.List; @Service public class IoCollectOrderService extends ServiceImpl { @Resource IoCollectOrderMapper collectOrderMapper; public IoCollectOrder getByBillNo(String billNo) { return collectOrderMapper.selectOne(new LambdaQueryWrapper().eq(IoCollectOrder::getBillNo, billNo).last("limit 1")); } public List filterList(CollectOrderRequest collectOrderRequest) { if (collectOrderRequest == null) { return Collections.emptyList(); } if (collectOrderRequest.getPage() != null) { int offset = (collectOrderRequest.getPage() - 1) * collectOrderRequest.getLimit(); PageHelper.offsetPage(offset, collectOrderRequest.getLimit()); } List data = collectOrderMapper.filterList(collectOrderRequest); return data; } @Resource IoOrderService orderService; @Resource IoOrderDetailBizService orderDetailBizService; @Resource BasicCollectBustypeService collectBustypeService; @Resource IoCollectOrderBizService collectOrderBizService; @Resource UdiRelevanceService udiRelevanceService; @Resource BasicSkPrescribeService basicSkPrescribeService; @Resource BasicSkPrescirbeDetailService basicSkPrescirbeDetailService; /** * 导入内部数据 */ public void importOrder() { importUdi(); importPrescribe(); } public void clearOrder() { collectOrderMapper.clearOrder(); } public void importUdi() { //下载UDI内部单据 FilterOrderRequest filterOrderRequest = new FilterOrderRequest(); filterOrderRequest.setPage(1); filterOrderRequest.setLimit(1000); List list = orderService.filterList(filterOrderRequest); List collectOrderList = new ArrayList<>(); for (IoOrderResponse ioOrderEntity : list) { BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByAddr(ioOrderEntity.getAction()); if (collectBustypeEntity == null) continue; if (collectOrderMapper.exists(new LambdaQueryWrapper().eq(IoCollectOrder::getBillNo, ioOrderEntity.getBillNo()))) { continue; } IoCollectOrder collectOrder = IoCollectOrder.builder() .billNo(ioOrderEntity.getBillNo()) .busType(collectBustypeEntity.getCode()) .fromType(collectBustypeEntity.getFromType()) .fromCorp(ioOrderEntity.getFromName()) .billTime(ioOrderEntity.getCreateTime()) .createTime(ioOrderEntity.getCreateTime()) .createUser(ioOrderEntity.getCreateUser()) .updateTime(new Date()) .splitStatus(0) .tagStatus(0) .build(); collectOrderList.add(collectOrder); List orderDetailBizEntities = orderDetailBizService.findByOrderId(ioOrderEntity.getBillNo()); List collectOrderBizs = new ArrayList<>(); for (IoOrderDetailBizEntity bizEntity : orderDetailBizEntities) { UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getBindRlFk() + ""); IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo()) .relId(bizEntity.getBindRlFk()) .thrCode(udiRelevanceResponse.getMainId()) .ybbm(udiRelevanceResponse.getYbbm()) .payFeeCode(udiRelevanceResponse.getPayFeeCode()) .cpmctymc(bizEntity.getCoName()) .nameCode(bizEntity.getNameCode()) .ggxh(bizEntity.getSpec()) .batchNo(bizEntity.getBatchNo()) .productDate(bizEntity.getProductDate()) .expireDate(bizEntity.getExpireDate()) .count(bizEntity.getCount()) .measureUnit(bizEntity.getMeasname()) .tagStatus(1) .unTagCount(bizEntity.getCount()).build(); if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg()); collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); } collectOrderBizs.add(collectOrderBiz); } if (CollUtil.isNotEmpty(collectOrderBizs)) collectOrderBizService.saveBatch(collectOrderBizs); } if (CollUtil.isNotEmpty(collectOrderList)) { saveBatch(collectOrderList); } } public void importPrescribe() { //下载处方 List basicSkPrescribeEntities = basicSkPrescribeService.list(); List collectOrderList = new ArrayList<>(); for (BasicSkPrescribeEntity basicSkPrescribeEntity : basicSkPrescribeEntities) { BasicCollectBustypeEntity collectBustypeEntity = collectBustypeService.findByAddr(String.valueOf(basicSkPrescribeEntity.getWorkPlaceCode())); if (collectBustypeEntity == null) continue; if (collectOrderMapper.exists(new LambdaQueryWrapper().eq(IoCollectOrder::getBillNo, basicSkPrescribeEntity.getCode()))) { continue; } IoCollectOrder collectOrder = IoCollectOrder.builder() .billNo(basicSkPrescribeEntity.getCode()) .busType(collectBustypeEntity.getCode()) .fromType(collectBustypeEntity.getFromType()) .fromCorp(basicSkPrescribeEntity.getSickerCode()) .billTime(MsDateUtil.localToDate(basicSkPrescribeEntity.getCreateTime())) .createTime(new Date()) .createUser(basicSkPrescribeEntity.getCreateUser()) .updateTime(new Date()) .splitStatus(0) .tagStatus(0) .build(); collectOrderList.add(collectOrder); List basicSkPrescribeItemEntities = basicSkPrescirbeDetailService.findByPrescribeNum(basicSkPrescribeEntity.getCode()); List collectOrderBizs = new ArrayList<>(); for (BasicSkPrescribeItemEntity bizEntity : basicSkPrescribeItemEntities) { UdiRelevanceResponse udiRelevanceResponse = udiRelevanceService.selectByRelId(bizEntity.getRelId() + ""); IoCollectOrderBiz collectOrderBiz = IoCollectOrderBiz.builder().orderIdFk(collectOrder.getBillNo()) .relId(bizEntity.getRelId()) .thrCode(bizEntity.getItemCode()) .ybbm(udiRelevanceResponse.getYbbm()) .payFeeCode(udiRelevanceResponse.getPayFeeCode()) .cpmctymc(bizEntity.getItemName()) .nameCode(udiRelevanceResponse.getNameCode()) .ggxh(bizEntity.getGgxh()) .batchNo(bizEntity.getBatchNo()) .count(IntUtil.value(bizEntity.getMeasureCount())) .measureUnit(bizEntity.getMeasureUnit()) .tagStatus(1) .unTagCount(bizEntity.getCount()).build(); // if (IntUtil.value(udiRelevanceResponse.getProductsType()) == 2) { // collectOrderBiz.setGgxh(udiRelevanceResponse.getBzgg()); // collectOrderBiz.setMeasureUnit(udiRelevanceResponse.getPrepnUnit()); // } collectOrderBizs.add(collectOrderBiz); } if (CollUtil.isNotEmpty(collectOrderBizs)) collectOrderBizService.saveBatch(collectOrderBizs); } if (CollUtil.isNotEmpty(collectOrderList)) { saveBatch(collectOrderList); } } }