wangyingyang

fix

...@@ -47,6 +47,13 @@ public class ClientCustomerController { ...@@ -47,6 +47,13 @@ public class ClientCustomerController {
47 return clientCustomerService.getClientCustomerByHISCustomerId(hisCustomerId); 47 return clientCustomerService.getClientCustomerByHISCustomerId(hisCustomerId);
48 } 48 }
49 49
50 + @ApiOperation(value = "根据customerId获取ClientCustomer")
51 + @GetMapping("/customers/{customerId}")
52 + @ResponseStatus(HttpStatus.OK)
53 + public ClientCustomerDto getClientCustomerByCustomerId(@PathVariable Integer customerId) {
54 + return clientCustomerService.getClientCustomerByCustomerId(customerId);
55 + }
56 +
50 @ApiOperation(value = "根据phone获取ClientCustomer") 57 @ApiOperation(value = "根据phone获取ClientCustomer")
51 @GetMapping("/customers/phone/{phone}") 58 @GetMapping("/customers/phone/{phone}")
52 @ResponseStatus(HttpStatus.OK) 59 @ResponseStatus(HttpStatus.OK)
......
1 package com.infoloop.tianting.controller; 1 package com.infoloop.tianting.controller;
2 2
3 +import cn.dev33.satoken.annotation.SaIgnore;
3 import com.github.xiaoymin.knife4j.annotations.ApiSupport; 4 import com.github.xiaoymin.knife4j.annotations.ApiSupport;
4 import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto; 5 import com.infoloop.tianting.model.dto.OrderDbDTO.OrderDto;
5 import com.infoloop.tianting.model.dto.SkuDbDTO.SkuDto; 6 import com.infoloop.tianting.model.dto.SkuDbDTO.SkuDto;
......
...@@ -14,6 +14,8 @@ public interface ClientCustomerService { ...@@ -14,6 +14,8 @@ public interface ClientCustomerService {
14 14
15 ClientCustomerDto getClientCustomerByHISCustomerId(String hisCustomerId); 15 ClientCustomerDto getClientCustomerByHISCustomerId(String hisCustomerId);
16 16
17 + ClientCustomerDto getClientCustomerByCustomerId(Integer customerId);
18 +
17 ClientCustomerDto getClientCustomerByPhone(String phone); 19 ClientCustomerDto getClientCustomerByPhone(String phone);
18 20
19 List<HospitalRecordDto> getClientCustomerHospitalRecordsByCustomerId( 21 List<HospitalRecordDto> getClientCustomerHospitalRecordsByCustomerId(
......
...@@ -52,12 +52,15 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto; ...@@ -52,12 +52,15 @@ import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByPaginationDto;
52 import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto; 52 import com.infoloop.tianting.model.dto.OrderDbDTO.UpdateOrderDto;
53 import com.infoloop.tianting.utils.DateUtil; 53 import com.infoloop.tianting.utils.DateUtil;
54 import io.swagger.models.auth.In; 54 import io.swagger.models.auth.In;
55 +import java.text.SimpleDateFormat;
55 import java.time.LocalDate; 56 import java.time.LocalDate;
56 import java.time.ZoneOffset; 57 import java.time.ZoneOffset;
57 import java.util.ArrayList; 58 import java.util.ArrayList;
59 +import java.util.Date;
58 import java.util.List; 60 import java.util.List;
59 import java.util.stream.Collectors; 61 import java.util.stream.Collectors;
60 import lombok.RequiredArgsConstructor; 62 import lombok.RequiredArgsConstructor;
63 +import org.redisson.api.RedissonClient;
61 import org.springframework.beans.factory.annotation.Autowired; 64 import org.springframework.beans.factory.annotation.Autowired;
62 import org.springframework.stereotype.Service; 65 import org.springframework.stereotype.Service;
63 66
...@@ -69,6 +72,8 @@ public class OrderServiceRpcClient { ...@@ -69,6 +72,8 @@ public class OrderServiceRpcClient {
69 private final SkuServiceRpcClient skuServiceRpcClient; 72 private final SkuServiceRpcClient skuServiceRpcClient;
70 private final OperatorServiceRpcClient operatorServiceRpcClient; 73 private final OperatorServiceRpcClient operatorServiceRpcClient;
71 private final EnterpriseResourceServiceRpcClient enterpriseResourceServiceRpcClient; 74 private final EnterpriseResourceServiceRpcClient enterpriseResourceServiceRpcClient;
75 + private final RedissonClient redissonClient;
76 + private static final String REDIS_KEY_PREFIX = "pickup_code_counter:";
72 77
73 public List<SingleClientCustomerOrderRpcResponse> getOrdersByCustomerId(Integer customerId) { 78 public List<SingleClientCustomerOrderRpcResponse> getOrdersByCustomerId(Integer customerId) {
74 return orderServiceRpcBlockingStub.getClientCustomerOrdersByCustomerId( 79 return orderServiceRpcBlockingStub.getClientCustomerOrdersByCustomerId(
...@@ -369,6 +374,7 @@ public class OrderServiceRpcClient { ...@@ -369,6 +374,7 @@ public class OrderServiceRpcClient {
369 .setAdjustOrderDetailJson(c.getAdjustOrderDetailJson()) 374 .setAdjustOrderDetailJson(c.getAdjustOrderDetailJson())
370 .setShouldCreateOriginalOrderDetailJson(c.isShouldCreateOriginalOrderDetailJson()) 375 .setShouldCreateOriginalOrderDetailJson(c.isShouldCreateOriginalOrderDetailJson())
371 .setOriginalOrderDetailJson(c.getOriginalOrderDetailJson()) 376 .setOriginalOrderDetailJson(c.getOriginalOrderDetailJson())
377 + .setType(c.getType())
372 .build()).collect(Collectors.toList())) 378 .build()).collect(Collectors.toList()))
373 .setCreatedBy(batchOperationDto.getCreatedBy()) 379 .setCreatedBy(batchOperationDto.getCreatedBy())
374 .setEnterpriseId(batchOperationDto.getEnterpriseId()) 380 .setEnterpriseId(batchOperationDto.getEnterpriseId())
...@@ -417,6 +423,17 @@ public class OrderServiceRpcClient { ...@@ -417,6 +423,17 @@ public class OrderServiceRpcClient {
417 .build()).getResponsesList(); 423 .build()).getResponsesList();
418 } 424 }
419 425
426 + public String generatePickupCode() {
427 + LocalDate today = LocalDate.now();
428 + String currentDate = DateUtil.formatDate(today, DateUtil.YYYY_MM_DD);
429 + String redisKey = REDIS_KEY_PREFIX + currentDate;
430 + // 获取分布式原子Long对象,用于原子自增操作
431 + org.redisson.api.RAtomicLong atomicLong = redissonClient.getAtomicLong(redisKey);
432 + // 原子自增并获取当前值
433 + long counter = atomicLong.incrementAndGet();
434 + return String.format("%04d", (int) counter);
435 + }
436 +
420 public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) { 437 public CreateOrderResponse createOrder(CreateOrderDto createOrderDto) {
421 final var orderDetails = new ArrayList<ClientCustomerOrderDetailCreation>(); 438 final var orderDetails = new ArrayList<ClientCustomerOrderDetailCreation>();
422 for (CreateOrderDetailDto orderDetailDto: createOrderDto.getOrderDetailDtos()) { 439 for (CreateOrderDetailDto orderDetailDto: createOrderDto.getOrderDetailDtos()) {
...@@ -487,9 +504,8 @@ public class OrderServiceRpcClient { ...@@ -487,9 +504,8 @@ public class OrderServiceRpcClient {
487 .setPayPrice(createOrderDto.getPayPrice()) 504 .setPayPrice(createOrderDto.getPayPrice())
488 .setMealTime(mealDate.atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli()) 505 .setMealTime(mealDate.atStartOfDay().toInstant(ZoneOffset.UTC).toEpochMilli())
489 .setShouldCreateTableCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)) 506 .setShouldCreateTableCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY))
490 - .setTableCode(createOrderDto.getTableCode())
491 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY)) 507 .setShouldCreatePickupCode(createOrderDto.getCloseTimeType().equals(CloseTimeType.IMMEDIATELY))
492 -// .setPickupCode(createOrderDto.getPickupCode()) 508 + .setPickupCode(generatePickupCode())
493 .setShouldCreateRemark(true) 509 .setShouldCreateRemark(true)
494 .setRemark(createOrderDto.getRemark()) 510 .setRemark(createOrderDto.getRemark())
495 .setShouldCreateCustomerNoticeJson(true) 511 .setShouldCreateCustomerNoticeJson(true)
......
...@@ -82,6 +82,37 @@ public class ClientCustomerServiceImpl implements ClientCustomerService { ...@@ -82,6 +82,37 @@ public class ClientCustomerServiceImpl implements ClientCustomerService {
82 .build(); 82 .build();
83 } 83 }
84 84
85 +
86 + @Override
87 + public ClientCustomerDto getClientCustomerByCustomerId(Integer customerId) {
88 + final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
89 + var response = clientCustomerServiceRpcClient.getClientCustomerById(operatorLoginInfo.getEnterpriseId(), customerId).getResponse();
90 + return ClientCustomerDto.builder()
91 + .id(response.getId())
92 + .clientId(response.getClientId())
93 + .enterpriseId(response.getEnterpriseId())
94 + .age(response.getAge())
95 + .height(response.getHeight())
96 + .HISCustomerId(response.getHISCustomerId())
97 + .identityCardNo(response.getIdentityCardNo())
98 + .mobile(response.getMobile())
99 + .name(response.getName())
100 + .openId(response.getOpenId())
101 + .sex(response.getSex())
102 + .stallId(response.getStallId())
103 + .weight(response.getWeight())
104 + .isDeleted(response.getIsDeleted())
105 + .birthday(DateUtil.formatDate(response.getBirthday()))
106 + .createdAt(DateUtil.formatDate(response.getCreatedAt()))
107 + .createdBy(response.getCreatedBy())
108 + .creationSource(response.getCreationSource())
109 + .updatedAt(DateUtil.formatDate(response.getUpdatedAt()))
110 + .updateSource(response.getUpdateSource())
111 + .updatedBy(response.getUpdatedBy())
112 + .build();
113 + }
114 +
115 +
85 @Override 116 @Override
86 public ClientCustomerDto getClientCustomerByPhone(String phone) { 117 public ClientCustomerDto getClientCustomerByPhone(String phone) {
87 final var response = clientCustomerServiceRpcClient.getClientCustomerByMobile(phone); 118 final var response = clientCustomerServiceRpcClient.getClientCustomerByMobile(phone);
......
...@@ -220,7 +220,7 @@ public class KdsServiceImpl implements KdsService { ...@@ -220,7 +220,7 @@ public class KdsServiceImpl implements KdsService {
220 LocalDate today = LocalDate.now(); 220 LocalDate today = LocalDate.now();
221 LocalDateTime todayZero = today.atStartOfDay(); 221 LocalDateTime todayZero = today.atStartOfDay();
222 LocalDate tomorrow = today.plusDays(1); 222 LocalDate tomorrow = today.plusDays(1);
223 - LocalDateTime tomorrowZero = tomorrow.atStartOfDay(); 223 + LocalDateTime tomorrowZero = tomorrow.atStartOfDay().minusMinutes(1);
224 224
225 final var operatorLoginInfo = LoginContextHolder.getLoginInfo(); 225 final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
226 226
...@@ -291,7 +291,7 @@ public class KdsServiceImpl implements KdsService { ...@@ -291,7 +291,7 @@ public class KdsServiceImpl implements KdsService {
291 LocalDate today = LocalDate.now(); 291 LocalDate today = LocalDate.now();
292 LocalDateTime todayZero = today.atStartOfDay(); 292 LocalDateTime todayZero = today.atStartOfDay();
293 LocalDate tomorrow = today.plusDays(1); 293 LocalDate tomorrow = today.plusDays(1);
294 - LocalDateTime tomorrowZero = tomorrow.atStartOfDay(); 294 + LocalDateTime tomorrowZero = tomorrow.atStartOfDay().minusMinutes(1);
295 295
296 final var operatorLoginInfo = LoginContextHolder.getLoginInfo(); 296 final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
297 297
...@@ -342,7 +342,7 @@ public class KdsServiceImpl implements KdsService { ...@@ -342,7 +342,7 @@ public class KdsServiceImpl implements KdsService {
342 342
343 final var orderDetailList = orderServiceRpcClient.getOrderDetailsByOrderIds(orderIds); 343 final var orderDetailList = orderServiceRpcClient.getOrderDetailsByOrderIds(orderIds);
344 final var filteredOrderDetailList = orderDetailList.stream() 344 final var filteredOrderDetailList = orderDetailList.stream()
345 - .filter(od -> od.getMealId() == queryDto.getMealId()) 345 + .filter(od -> od.getMealId() == queryDto.getMealId() && od.getServeStatus() != ServeStatusEnum.SERVE_REJECT)
346 .collect(Collectors.toList()); 346 .collect(Collectors.toList());
347 347
348 //在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类 348 //在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
......
...@@ -6,6 +6,7 @@ import com.infoloop.tianting.SingleSpecialResponse; ...@@ -6,6 +6,7 @@ import com.infoloop.tianting.SingleSpecialResponse;
6 import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType; 6 import com.infoloop.tianting.clientcustomerorderservice.CloseTimeType;
7 import com.infoloop.tianting.clientcustomerorderservice.OrderCountByStatus; 7 import com.infoloop.tianting.clientcustomerorderservice.OrderCountByStatus;
8 import com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum; 8 import com.infoloop.tianting.clientcustomerorderservice.OrderSourceEnum;
9 +import com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum;
9 import com.infoloop.tianting.clientcustomerorderservice.OrderTypeEnum; 10 import com.infoloop.tianting.clientcustomerorderservice.OrderTypeEnum;
10 import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse; 11 import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse;
11 import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerLabelRefRpcResponse; 12 import com.infoloop.tianting.clientcustomerservice.SingleClientCustomerLabelRefRpcResponse;
...@@ -141,7 +142,13 @@ public class OrderServiceImpl implements OrderService { ...@@ -141,7 +142,13 @@ public class OrderServiceImpl implements OrderService {
141 final var labels = deliveryRuleServiceRpcClient.GetClientLabelsByIds(customer.getEnterpriseId(), labelIds).getResponsesList(); 142 final var labels = deliveryRuleServiceRpcClient.GetClientLabelsByIds(customer.getEnterpriseId(), labelIds).getResponsesList();
142 final var avoids = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_AVOID).map( 143 final var avoids = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_AVOID).map(
143 SingleClientLabelRpcResponse::getName).collect(Collectors.toList()); 144 SingleClientLabelRpcResponse::getName).collect(Collectors.toList());
144 - final var hisAllergies = meiZhongYiHeService.getHisCustomerAllergiesByCustomerId(customer.getHISCustomerId()); 145 + List<HisAllergy> hisAllergies = new ArrayList<>();
146 + List<HisMedicalAdviceDto> origionalHisDoctors = new ArrayList<>();
147 + if (!customer.getHISCustomerId().isEmpty()) {
148 + hisAllergies = meiZhongYiHeService.getHisCustomerAllergiesByCustomerId(customer.getHISCustomerId());
149 + origionalHisDoctors = meiZhongYiHeService.getHisCustomerMedicalAdvicesByContractNo(record.getContractNo());
150 + }
151 +
145 final var allergyCodes = hisAllergies.stream().map(HisAllergy::getAllergyCode).collect(Collectors.toList()); 152 final var allergyCodes = hisAllergies.stream().map(HisAllergy::getAllergyCode).collect(Collectors.toList());
146 final var allLabels = deliveryRuleServiceRpcClient.getLabelsByTypes(QueryLabelsDto.builder() 153 final var allLabels = deliveryRuleServiceRpcClient.getLabelsByTypes(QueryLabelsDto.builder()
147 .enterpriseId(operatorLoginInfo.getEnterpriseId()) 154 .enterpriseId(operatorLoginInfo.getEnterpriseId())
...@@ -149,7 +156,6 @@ public class OrderServiceImpl implements OrderService { ...@@ -149,7 +156,6 @@ public class OrderServiceImpl implements OrderService {
149 .build()); 156 .build());
150 final var mappingAllergies = allLabels.getResponsesList().stream().filter(l -> allergyCodes.contains(l.getCode())).map(SingleClientLabelRpcResponse::getName).collect(Collectors.toList()); 157 final var mappingAllergies = allLabels.getResponsesList().stream().filter(l -> allergyCodes.contains(l.getCode())).map(SingleClientLabelRpcResponse::getName).collect(Collectors.toList());
151 158
152 - final var origionalHisDoctors = meiZhongYiHeService.getHisCustomerMedicalAdvicesByContractNo(record.getContractNo());
153 final var dietDoctors = origionalHisDoctors.stream().filter(d -> d.getMedicalAdviceType().equals( 159 final var dietDoctors = origionalHisDoctors.stream().filter(d -> d.getMedicalAdviceType().equals(
154 MedicalAdviceTypeEnum.DIET)).map(HisMedicalAdviceDto::getConnotation).collect(Collectors.toList()); 160 MedicalAdviceTypeEnum.DIET)).map(HisMedicalAdviceDto::getConnotation).collect(Collectors.toList());
155 final var doctors = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_DOCTOR).map( 161 final var doctors = labels.stream().filter(l -> l.getType() == ClientLabelTypeEnum.CLIENT_LABEL_TYPE_DOCTOR).map(
...@@ -258,7 +264,8 @@ public class OrderServiceImpl implements OrderService { ...@@ -258,7 +264,8 @@ public class OrderServiceImpl implements OrderService {
258 .openId(checkIfOrdered.getOpenId()) 264 .openId(checkIfOrdered.getOpenId())
259 .build(); 265 .build();
260 final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto); 266 final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
261 - return orderList.size(); 267 + final var filteredOrderList = orderList.stream().filter(o -> o.getStatus()!= OrderStatusEnum.ORDER_CANCELED).collect(Collectors.toList());
268 + return filteredOrderList.size();
262 } 269 }
263 270
264 @Override 271 @Override
......
...@@ -387,15 +387,23 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -387,15 +387,23 @@ public class SettlementServiceImpl implements SettlementService {
387 .filter(m -> curMenuMealIds.contains(m.getId())) 387 .filter(m -> curMenuMealIds.contains(m.getId()))
388 .collect(Collectors.toList()); 388 .collect(Collectors.toList());
389 // 汇总每个餐别的情况 389 // 汇总每个餐别的情况
390 - for(SingleMealRpcResponse meal: curMenuMeals) { 390 + for(Integer curMealId: curMenuMealIds) {
391 - final var mealName = meal.getName(); 391 + String mealName = "无餐别";
392 + if (curMealId != 0) {
393 + final var curMeal = allMeals.stream().filter(m -> m.getId() == curMealId).findFirst();
394 + if (curMeal.isEmpty()) {
395 + continue;
396 + } else {
397 + mealName = curMeal.get().getName();
398 + }
399 + }
392 if (!menusMap.containsKey(mealName)) { 400 if (!menusMap.containsKey(mealName)) {
393 - menusMap.put(menuName, new HashMap<>()); 401 + menusMap.put(mealName, new HashMap<>());
394 } 402 }
395 final var mealsMap = menusMap.get(mealName); 403 final var mealsMap = menusMap.get(mealName);
396 //当前餐别已点的order details 404 //当前餐别已点的order details
397 final var curMealOrderDetails = curMenuOrderDetails.stream() 405 final var curMealOrderDetails = curMenuOrderDetails.stream()
398 - .filter(od -> od.getMealId() == meal.getId()) 406 + .filter(od -> od.getMealId() == curMealId)
399 .collect(Collectors.toList()); 407 .collect(Collectors.toList());
400 //找出所有需要的日期 408 //找出所有需要的日期
401 final var dates = curMealOrderDetails.stream() 409 final var dates = curMealOrderDetails.stream()
...@@ -454,7 +462,9 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -454,7 +462,9 @@ public class SettlementServiceImpl implements SettlementService {
454 sheetTitleCell.setCellValue(settlementDataDto.getClient()); 462 sheetTitleCell.setCellValue(settlementDataDto.getClient());
455 Row dateRangeRow = sheet.createRow(rowNum++); 463 Row dateRangeRow = sheet.createRow(rowNum++);
456 Cell dateRangeCell = dateRangeRow.createCell(0); 464 Cell dateRangeCell = dateRangeRow.createCell(0);
457 - final var dateRange = settlementDataDto.getStartTime() + "至" + settlementDataDto.getEndTime(); 465 + final var startDateStr = DateUtil.formatDate(settlementDataDto.getStartTime(), DateUtil.YYYY_MM_DD);
466 + final var endDateStr = DateUtil.formatDate(settlementDataDto.getEndTime(), DateUtil.YYYY_MM_DD);
467 + final var dateRange = startDateStr + "至" + endDateStr;
458 dateRangeCell.setCellValue(dateRange); 468 dateRangeCell.setCellValue(dateRange);
459 Row titleRow = sheet.createRow(rowNum++); 469 Row titleRow = sheet.createRow(rowNum++);
460 int columnNum = 0; 470 int columnNum = 0;
...@@ -501,7 +511,10 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -501,7 +511,10 @@ public class SettlementServiceImpl implements SettlementService {
501 columnNum = 2; 511 columnNum = 2;
502 int totalPrice = 0; 512 int totalPrice = 0;
503 for (String date: dates) { 513 for (String date: dates) {
504 - final var toWriteDateSkuList = skuMap.get(date); 514 + List<SettlementMenuMealDto> toWriteDateSkuList = skuMap.get(date);
515 + if (toWriteDateSkuList == null) {
516 + toWriteDateSkuList = new ArrayList<>();
517 + }
505 int price = 0; 518 int price = 0;
506 if(!toWriteDateSkuList.isEmpty()) { 519 if(!toWriteDateSkuList.isEmpty()) {
507 for (SettlementMenuMealDto settlementMenuMealDto: toWriteDateSkuList) { 520 for (SettlementMenuMealDto settlementMenuMealDto: toWriteDateSkuList) {
...@@ -518,7 +531,8 @@ public class SettlementServiceImpl implements SettlementService { ...@@ -518,7 +531,8 @@ public class SettlementServiceImpl implements SettlementService {
518 } 531 }
519 532
520 // 自动调整列宽 533 // 自动调整列宽
521 - for (int i = 0; i < 7; i++) { 534 + final var columnCnt = dates.size() + 2;
535 + for (int i = 0; i < columnCnt; i++) {
522 sheet.autoSizeColumn(i); 536 sheet.autoSizeColumn(i);
523 } 537 }
524 538
......