123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215 |
- package com.miyzh.service;
- import com.fasterxml.jackson.core.JsonProcessingException;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import com.miyzh.dao.ClinicDao;
- import com.miyzh.dao.MedicineStoreDao;
- import com.miyzh.dao.OrderDetailDao;
- import com.miyzh.entity.*;
- import com.miyzh.entity.dto.MedicineReturnDto;
- import com.miyzh.entity.dto.MedicineStoreDto;
- import com.miyzh.entity.dto.OrderDetailDto;
- import com.mysql.cj.util.StringUtils;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.scheduling.annotation.Async;
- import org.springframework.stereotype.Service;
- import java.time.LocalDateTime;
- import java.time.format.DateTimeFormatter;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.stream.Collectors;
- /**
- * 结算明细
- */
- @Slf4j
- @Service
- public class OrderDetailService {
- @Autowired
- private ClinicDao clinicDao;
- @Autowired
- private OrderDetailDao orderDetailDao;
- @Value ("${postApi.orderUrl}")
- private String url;
- @Value("${postApi.pageSize}")
- private int pageSize;
- private static final String CLI_MED = "1"; // 西药销售明细(自费门诊)
- private static final String CLI_CHI_MED = "2"; // 中药销售明细(自费门诊)
- private static final String INS_CLC_MED = "3"; // 西药销售明细(医保门诊)
- private static final String INS_CLC_CHI_MED = "4"; // 中药销售明细(医保门诊)
- private static final String HOS_MED = "5"; // 西药销售明细(住院)
- private static final String HOS_CHI_MED = "6"; // 中药销售明细(住院)
- @Async
- public void uploadMedicine(List<Clinic> clinicList, String flag) throws InterruptedException, JsonProcessingException {
- long startTime = System.currentTimeMillis();
- PageInfo<OrderDetailTemp> page = new PageInfo<>();
- for(Clinic clinic : clinicList) {
- switch (flag) {
- case CLI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listClcMedOrder(clinic.getClinicId());
- });
- break;
- case CLI_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listClcChinaMedOrder(clinic.getClinicId());
- });
- break;
- case INS_CLC_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listInsClcMedOrder(clinic.getClinicId());
- });
- break;
- case INS_CLC_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId());
- });
- break;
- case HOS_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listHosMedOrder(clinic.getClinicId());
- });
- break;
- case HOS_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listHosChinaMedOrder(clinic.getClinicId());
- });
- break;
- }
- if (page.getTotal() == 0) {
- continue;
- }
- Map<String, List<OrderDetailTemp>> map = new HashMap<>();
- if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
- map = page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
- } else {
- map = page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
- }
- for(Map.Entry<String, List<OrderDetailTemp>> msMap:map.entrySet()){
- OrderDetailDto orderDetailDto = new OrderDetailDto();
- orderDetailDto.setStoreCode(clinic.getStoreCode());
- orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
- if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
- orderDetailDto.setMisNo("99999999");
- } else {
- orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
- }
- orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
- orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
- orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
- orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
- orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
- orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
- orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
- orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
- orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
- orderDetailDto.setSex(msMap.getValue().get(0).getSex());
- orderDetailDto.setAge(msMap.getValue().get(0).getAge());
- orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
- orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
- List<OrderDetail> list = msMap.getValue()
- .stream()
- .map(OrderDetailTemp::temp2OrderDetail)
- .collect(Collectors.toList());
- orderDetailDto.setOrderDetails(list);
- this.upload(orderDetailDto);
- }
- if (page.getPages() > 1) {
- PageInfo<OrderDetailTemp> page1 = new PageInfo<>();
- for(int i = 2; i <= page.getPages(); i++) {
- switch (flag) {
- case CLI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listClcMedOrder(clinic.getClinicId());
- });
- break;
- case CLI_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listClcChinaMedOrder(clinic.getClinicId());
- });
- break;
- case INS_CLC_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listInsClcMedOrder(clinic.getClinicId());
- });
- break;
- case INS_CLC_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listInsClcChinaMedOrder(clinic.getClinicId());
- });
- break;
- case HOS_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listHosMedOrder(clinic.getClinicId());
- });
- break;
- case HOS_CHI_MED:
- page = PageHelper.startPage(1, pageSize).doSelectPageInfo(() -> {
- orderDetailDao.listHosChinaMedOrder(clinic.getClinicId());
- });
- break;
- }
- Map<String, List<OrderDetailTemp>> map1 = new HashMap<>();
- if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
- map1 = page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getVisitCode));
- } else {
- map1 = page.getList().stream().collect(Collectors.groupingBy(OrderDetailTemp::getStoreOrderNo));
- }
- for(Map.Entry<String, List<OrderDetailTemp>> msMap:map1.entrySet()){
- OrderDetailDto orderDetailDto = new OrderDetailDto();
- orderDetailDto.setStoreCode(clinic.getStoreCode());
- if (HOS_MED.equals(flag) || HOS_CHI_MED.equals(flag)) {
- orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getVisitCode());
- } else {
- orderDetailDto.setStoreOrderNo(msMap.getValue().get(0).getStoreOrderNo());
- }
- if (StringUtils.isNullOrEmpty(msMap.getValue().get(0).getMisNo())) {
- orderDetailDto.setMisNo("99999999");
- } else {
- orderDetailDto.setMisNo(msMap.getValue().get(0).getMisNo());
- }
- orderDetailDto.setSettledTypeNo(msMap.getValue().get(0).getSettledTypeNo());
- orderDetailDto.setSettledTypeName(msMap.getValue().get(0).getSettledTypeName());
- orderDetailDto.setSettledstatus(msMap.getValue().get(0).getSettledstatus());
- orderDetailDto.setTotalAmt(msMap.getValue().get(0).getTotalAmt());
- orderDetailDto.setInsuranceAmt(msMap.getValue().get(0).getInsuranceAmt());
- orderDetailDto.setOperater(msMap.getValue().get(0).getOperater());
- orderDetailDto.setSaleDate(msMap.getValue().get(0).getSaleDate());
- orderDetailDto.setSaleTime(msMap.getValue().get(0).getSaleTime());
- orderDetailDto.setBuyMedPerson(msMap.getValue().get(0).getBuyMedPerson());
- orderDetailDto.setSex(msMap.getValue().get(0).getSex());
- orderDetailDto.setAge(msMap.getValue().get(0).getAge());
- orderDetailDto.setIdCard(msMap.getValue().get(0).getIdCard());
- orderDetailDto.setCredentialNum(msMap.getValue().get(0).getCredentialNum());
- List<OrderDetail> list = msMap.getValue()
- .stream()
- .map(OrderDetailTemp::temp2OrderDetail)
- .collect(Collectors.toList());
- orderDetailDto.setOrderDetails(list);
- this.upload(orderDetailDto);
- }
- }
- }
- };
- long syncTime = System.currentTimeMillis();
- log.info("执行用时--{}", startTime - syncTime);
- };
- public void upload (Object o) throws JsonProcessingException {
- ObjectMapper objectMapper = new ObjectMapper();
- String params = objectMapper.writeValueAsString(o);
- System.out.println(params);
- // System.out.println(objectMapper.writeValueAsString(RestTemplateUtil.postHttp(url, params)));
- }
- }
|