From f2b250e0b1fcec05c3515fcbd0d4e11fbd51d8c1 Mon Sep 17 00:00:00 2001 From: mashuai Date: Mon, 24 Feb 2025 16:36:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E9=9C=80=E6=B1=82=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../biz/constant/MaterialConstants.java | 5 ++ .../controller/ComprehensiveController.java | 14 +++++ .../bonus/material/device/domain/DevInfo.java | 6 ++ .../material/device/mapper/DevInfoMapper.java | 7 +++ .../device/service/DevInfoService.java | 7 +++ .../service/impl/DevInfoServiceImpl.java | 23 +++++++- .../order/controller/OrderController.java | 12 ++++ .../material/order/domain/OrderDetailDto.java | 3 + .../material/order/service/OrderService.java | 6 ++ .../order/service/impl/OrderServiceImpl.java | 51 ++++++++++++++++ .../mapper/material/device/DevInfoMapper.xml | 59 +++++++++++++++++++ 11 files changed, 192 insertions(+), 1 deletion(-) diff --git a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java index 7b36ce8..71d1135 100644 --- a/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java +++ b/bonus-common-biz/src/main/java/com/bonus/common/biz/constant/MaterialConstants.java @@ -78,4 +78,9 @@ public class MaterialConstants { public static final String DICT_TYPE_ORDER_STATUS = "order_status"; + /** + * 存储redis中的订单取件码前缀 + */ + public static final String DICT_TYPE_ORDER_PICKUP_CODE = "order_code_"; + } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java index 5798476..489976f 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/comprehensive/controller/ComprehensiveController.java @@ -42,6 +42,20 @@ public class ComprehensiveController extends BaseController { return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list)); } + /** + * 在租装备信息查询 + * @param devInfo + * @return + */ + @ApiOperation(value = "综合查询-在租装备信息查询") + @GetMapping("/getLeaseDevList") + public AjaxResult getLeaseDevList(DevInfoVo devInfo) { + Integer pageIndex = Convert.toInt(ServletUtils.getParameter("pageNum"), 1); + Integer pageSize = Convert.toInt(ServletUtils.getParameter("pageSize"), 10); + List list = devInfoService.getLeaseDevList(devInfo); + return AjaxResult.success(ListPagingUtil.paging(pageIndex, pageSize, list)); + } + @ApiOperation(value = "综合查询-设备租赁明细") @GetMapping("/rentDetails") public AjaxResult getRentDetails(DevInfoVo devInfo) { diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java index 486af11..d52ec68 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/domain/DevInfo.java @@ -10,6 +10,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; import lombok.experimental.Accessors; +import org.springframework.format.annotation.DateTimeFormat; import javax.validation.constraints.*; import java.math.BigDecimal; @@ -278,4 +279,9 @@ public class DevInfo extends BaseEntity { @ApiModelProperty(value = "累计租赁天数") private Integer totalLeaseDay; + + @ApiModelProperty(value = "下次检测日期") + @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date nextCheckDate; } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java index 656fcc8..03a5ffe 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/mapper/DevInfoMapper.java @@ -221,5 +221,12 @@ public interface DevInfoMapper { List getLeaseCountByTypeName(); List getDeviceShareRanking(); + + /** + * 在租装备信息查询 + * @param devInfo + * @return + */ + List getLeaseDevList(DevInfoVo devInfo); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/DevInfoService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/DevInfoService.java index 118149e..5cd0143 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/DevInfoService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/DevInfoService.java @@ -107,4 +107,11 @@ public interface DevInfoService { List getTagDevList(DevInfoVo devInfoVo); List getDevList(DevInfoVo devInfo); + + /** + * 在租装备信息查询 + * @param devInfo + * @return + */ + List getLeaseDevList(DevInfoVo devInfo); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevInfoServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevInfoServiceImpl.java index 1782f86..bd86cf6 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevInfoServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/device/service/impl/DevInfoServiceImpl.java @@ -634,7 +634,18 @@ public class DevInfoServiceImpl implements DevInfoService { @Override public List selectDevInfoLists(DevInfoVo devInfo) { devInfo.setCompanyId(SecurityUtils.getLoginUser().getSysUser().getCompanyId().toString()); - return devInfoMapper.selectDevInfoLists(devInfo); + List list = devInfoMapper.selectDevInfoLists(devInfo); + if (!CollectionUtils.isEmpty(list)) { + for (DevInfoVo infoVo : list) { + if (infoVo.getMaId() != null) { + MaDevQc qc = maDevQcMapper.getQcListByOne(infoVo.getMaId()); + if (qc != null) { + infoVo.setNextCheckDate(qc.getNextCheckTime()); + } + } + } + } + return list; } /** @@ -808,6 +819,16 @@ public class DevInfoServiceImpl implements DevInfoService { return devList; } + /** + * 在租装备信息查询 + * @param devInfo + * @return + */ + @Override + public List getLeaseDevList(DevInfoVo devInfo) { + return devInfoMapper.getLeaseDevList(devInfo); + } + @Override public void insertOutType(String devInfo) { ObjectMapper objectMapper = new ObjectMapper(); diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java index ed152c0..3072c44 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/controller/OrderController.java @@ -113,6 +113,18 @@ public class OrderController extends BaseController { return success(list); } + /** + * 获取单个订单取件码 + * @param dto + * @return + */ + @ApiOperation(value = "获取单个订单取件码") + @GetMapping("/getOrderCode") + public AjaxResult getOrderCode(OrderDetailDto dto) { + int code = orderService.getOrderCode(dto); + return success(code); + } + /** * 订单状态流转修改 */ diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java index 3c625ec..4868681 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/domain/OrderDetailDto.java @@ -20,6 +20,9 @@ public class OrderDetailDto { @ApiModelProperty(value = "主键id") private Integer id; + @ApiModelProperty(value = "6位数取件码") + private String pickupCode; + @ApiModelProperty(value = "前端是否选中(此字段仅供前端使用,默认0)") private Integer isCheck = 0; diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java index cb4e525..3c88ecc 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/OrderService.java @@ -39,4 +39,10 @@ public interface OrderService { OrderData getCompanysCost(); + /** + * 获取单个订单取件码 + * @param dto + * @return + */ + int getOrderCode(OrderDetailDto dto); } diff --git a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java index b798c96..60f1f91 100644 --- a/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java +++ b/bonus-modules/bonus-material-mall/src/main/java/com/bonus/material/order/service/impl/OrderServiceImpl.java @@ -10,6 +10,7 @@ import com.bonus.common.biz.enums.TmTaskTypeEnum; import com.bonus.common.core.exception.ServiceException; import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.SpringUtils; +import com.bonus.common.core.utils.StringUtils; import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.redis.service.RedisService; import com.bonus.common.security.utils.SecurityUtils; @@ -38,6 +39,7 @@ import java.math.BigDecimal; import java.math.RoundingMode; import java.text.SimpleDateFormat; import java.util.*; +import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; /** @@ -66,6 +68,9 @@ public class OrderServiceImpl implements OrderService { @Resource private RemoteConfig remoteConfig; + @Resource + private RedisService redisService; + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override @@ -260,6 +265,26 @@ public class OrderServiceImpl implements OrderService { public Integer updateOrderStatus(OrderDetailDto orderInfoDto) { List dtos = orderMapper.getOrderDetailsByOrderId(orderInfoDto.getOrderId()); + // 针对于接单操作,生成6位数取件码,合并出库和收货操作 + if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_RECEIVE.getStatus().toString())) { + // 生成6位数取件码 + String code = generateSixDigitNumber(); + // 存储redis中 + redisService.setCacheObject(MaterialConstants.DICT_TYPE_ORDER_PICKUP_CODE + orderInfoDto.getOrderId(), code); + } + // 针对于收货操作,校验6位数取件码是否正确 + if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_AWAITING_RECEIPT.getStatus().toString())) { + if (StringUtils.isBlank(orderInfoDto.getPickupCode())){ + throw new ServiceException("取件码不能为空"); + } + // 查看存储redis中的取件码,和前端传的取件码做对比 + String captcha = redisService.getCacheObject(MaterialConstants.DICT_TYPE_ORDER_PICKUP_CODE + orderInfoDto.getOrderId()).toString(); + if (!captcha.equals(orderInfoDto.getPickupCode())) { + throw new ServiceException("取件码错误,请检查后重新输入"); + } + // 删除redis中的取件码 + redisService.deleteObject(MaterialConstants.DICT_TYPE_ORDER_PICKUP_CODE + orderInfoDto.getOrderId()); + } // 退租 if (orderInfoDto.getOrderStatus().equals(OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString())) { if (dtos.size() > 0 && CollectionUtil.isNotEmpty(dtos)) { @@ -348,6 +373,15 @@ public class OrderServiceImpl implements OrderService { return i; } + /** + * 生成六位随机数取件码 + * @return + */ + public static String generateSixDigitNumber() { + // 生成一个六位数的随机数,范围是 100000 到 999999 + return String.valueOf(ThreadLocalRandom.current().nextInt(100000, 1000000)); + } + @Override public Integer inputCostRelief(OrderInfoDto orderInfoDto) { int result = 0; @@ -481,4 +515,21 @@ public class OrderServiceImpl implements OrderService { public OrderData getCompanysCost() { return orderMapper.getCompanysCost(); } + + /** + * 获取单个订单取件码 + * @param dto + * @return + */ + @Override + public int getOrderCode(OrderDetailDto dto) { + if (dto == null || dto.getOrderId() == null) { + throw new RuntimeException("参数不能为空"); + } + Object cacheObject = redisService.getCacheObject(MaterialConstants.DICT_TYPE_ORDER_PICKUP_CODE + dto.getOrderId()); + if (cacheObject == null) { + throw new RuntimeException("未查询到取件码"); + } + return Integer.parseInt(cacheObject.toString()); + } } diff --git a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml index 44f5963..8d9c6fb 100644 --- a/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml +++ b/bonus-modules/bonus-material-mall/src/main/resources/mapper/material/device/DevInfoMapper.xml @@ -1024,4 +1024,63 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" group by mdi.own_co order by device_count desc + +