This commit is contained in:
sxu 2024-12-18 15:24:16 +08:00
parent 6cb78e0749
commit e88ab56c07
8 changed files with 41 additions and 46 deletions

View File

@ -15,7 +15,6 @@ import com.bonus.material.contract.service.BmContractService;
import com.bonus.material.device.domain.vo.DevInfoVo; import com.bonus.material.device.domain.vo.DevInfoVo;
import com.bonus.material.lease.domain.LeaseRepairRecord; import com.bonus.material.lease.domain.LeaseRepairRecord;
import com.bonus.material.lease.mapper.LeaseRepairRecordMapper; import com.bonus.material.lease.mapper.LeaseRepairRecordMapper;
import com.bonus.material.order.domain.OrderDetailCostReliefDto;
import com.bonus.material.order.domain.OrderDetailDto; import com.bonus.material.order.domain.OrderDetailDto;
import com.bonus.material.order.domain.OrderInfoDto; import com.bonus.material.order.domain.OrderInfoDto;
import com.bonus.material.order.mapper.OrderMapper; import com.bonus.material.order.mapper.OrderMapper;

View File

@ -1,27 +0,0 @@
package com.bonus.material.order.domain;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class OrderDetailCostReliefDto {
@ApiModelProperty(value = "主键id")
private Integer id;
@ApiModelProperty(value = "订单id")
private Integer orderId;
@ApiModelProperty(value = "设备id")
private Integer maId;
@ApiModelProperty(value = "减免开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String reliefStartTime;
@ApiModelProperty(value = "减免结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String reliefEndTime;
}

View File

@ -122,4 +122,12 @@ public class OrderDetailDto {
@ApiModelProperty(value = "实际天数") @ApiModelProperty(value = "实际天数")
private Integer dateDays; private Integer dateDays;
@ApiModelProperty(value = "减免开始时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String reliefStartTime;
@ApiModelProperty(value = "减免结束时间")
@JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
private String reliefEndTime;
} }

View File

@ -93,8 +93,6 @@ public class OrderInfoDto {
private List<OrderDetailDto> detailsList; private List<OrderDetailDto> detailsList;
private List<OrderDetailCostReliefDto> reliefList;
@ApiModelProperty(value = "承租方公司名称") @ApiModelProperty(value = "承租方公司名称")
private String companyName; private String companyName;

View File

@ -2,7 +2,6 @@ package com.bonus.material.order.mapper;
import com.bonus.material.device.domain.DevInfo; import com.bonus.material.device.domain.DevInfo;
import com.bonus.material.lease.domain.LeaseRepairRecord; import com.bonus.material.lease.domain.LeaseRepairRecord;
import com.bonus.material.order.domain.OrderDetailCostReliefDto;
import com.bonus.material.order.domain.OrderDetailDto; import com.bonus.material.order.domain.OrderDetailDto;
import com.bonus.material.order.domain.OrderInfoDto; import com.bonus.material.order.domain.OrderInfoDto;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -40,9 +39,11 @@ public interface OrderMapper {
int updateOrder(LeaseRepairRecord leaseRepairRecord); int updateOrder(LeaseRepairRecord leaseRepairRecord);
int deleteCostReliefs(@Param("orderId") Integer orderId); int updateOrder4Relief(OrderDetailDto dto);
int insertCostReliefs(@Param("list") List<OrderDetailCostReliefDto> reliefList); // int deleteCostReliefs(@Param("orderId") Integer orderId);
//
// int insertCostReliefs(@Param("list") List<OrderDetailCostReliefDto> reliefList);
OrderInfoDto getAgreementByOrderId(String orderId); OrderInfoDto getAgreementByOrderId(String orderId);
} }

View File

@ -1,6 +1,5 @@
package com.bonus.material.order.service; package com.bonus.material.order.service;
import com.bonus.material.order.domain.OrderDetailCostReliefDto;
import com.bonus.material.order.domain.OrderDetailDto; import com.bonus.material.order.domain.OrderDetailDto;
import com.bonus.material.order.domain.OrderInfoDto; import com.bonus.material.order.domain.OrderInfoDto;

View File

@ -5,11 +5,9 @@ import com.bonus.common.biz.enums.OrderStatusEnum;
import com.bonus.common.core.utils.DateUtils; import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.utils.encryption.Sm4Utils; import com.bonus.common.core.utils.encryption.Sm4Utils;
import com.bonus.common.security.utils.SecurityUtils; import com.bonus.common.security.utils.SecurityUtils;
import com.bonus.material.device.domain.DevInfo;
import com.bonus.material.lease.domain.LeaseRepair; import com.bonus.material.lease.domain.LeaseRepair;
import com.bonus.material.lease.domain.LeaseRepairRecord; import com.bonus.material.lease.domain.LeaseRepairRecord;
import com.bonus.material.lease.mapper.LeaseRepairRecordMapper; import com.bonus.material.lease.mapper.LeaseRepairRecordMapper;
import com.bonus.material.order.domain.OrderDetailCostReliefDto;
import com.bonus.material.order.domain.OrderDetailDto; import com.bonus.material.order.domain.OrderDetailDto;
import com.bonus.material.order.domain.OrderInfoDto; import com.bonus.material.order.domain.OrderInfoDto;
import com.bonus.material.order.mapper.OrderMapper; import com.bonus.material.order.mapper.OrderMapper;
@ -17,7 +15,6 @@ import com.bonus.material.order.service.OrderService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -107,13 +104,22 @@ public class OrderServiceImpl implements OrderService {
list.add(orderDetailDto); list.add(orderDetailDto);
} }
BigDecimal totalRentalPrice = BigDecimal.ZERO; BigDecimal totalRentalPrice = BigDecimal.ZERO;
BigDecimal totalReliefPrice = BigDecimal.ZERO;
for (OrderDetailDto orderDetailDto : list) { for (OrderDetailDto orderDetailDto : list) {
if (Objects.nonNull(orderDetailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(orderDetailDto.getOrderStatus())) { if (Objects.nonNull(orderDetailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(orderDetailDto.getOrderStatus())) {
if (Objects.nonNull(orderDetailDto.getPreOutboundTime()) && Objects.nonNull(orderDetailDto.getRentOverTime())) {
Date preOutBoundTime = sdf.parse(orderDetailDto.getPreOutboundTime()); Date preOutBoundTime = sdf.parse(orderDetailDto.getPreOutboundTime());
Date rentOverTime = sdf.parse(orderDetailDto.getRentOverTime()); Date rentOverTime = sdf.parse(orderDetailDto.getRentOverTime());
long days = DateUtils.daysBetween(preOutBoundTime, rentOverTime) + 1; long days = DateUtils.daysBetween(preOutBoundTime, rentOverTime) + 1;
totalRentalPrice = totalRentalPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(days))); totalRentalPrice = totalRentalPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(days)));
} }
if (Objects.nonNull(orderDetailDto.getReliefStartTime()) && Objects.nonNull(orderDetailDto.getReliefEndTime())) {
Date reliefStartTime = sdf.parse(orderDetailDto.getReliefStartTime());
Date reliefEndTime = sdf.parse(orderDetailDto.getReliefEndTime());
long reliefDays = DateUtils.daysBetween(reliefStartTime, reliefEndTime) + 1;
totalReliefPrice = totalReliefPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(reliefDays)));
}
}
} }
dto.setTotalRentalPrice(totalRentalPrice); dto.setTotalRentalPrice(totalRentalPrice);
dto.setDetailsList(list); dto.setDetailsList(list);
@ -155,7 +161,7 @@ public class OrderServiceImpl implements OrderService {
} }
dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice); dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice);
} }
dto.setTotalRealPrice(BigDecimal.ZERO.add(totalRentalPrice).add(totalRepairScrapLossPrice)); dto.setTotalRealPrice(BigDecimal.ZERO.add(totalRentalPrice).add(totalRepairScrapLossPrice).subtract(totalReliefPrice));
} }
return orderInfoDtos; return orderInfoDtos;
} }
@ -177,10 +183,11 @@ public class OrderServiceImpl implements OrderService {
@Override @Override
public Integer submitCostRelief(OrderInfoDto orderInfoDto) { public Integer submitCostRelief(OrderInfoDto orderInfoDto) {
List<OrderDetailCostReliefDto> list = orderInfoDto.getReliefList(); List<OrderDetailDto> list = orderInfoDto.getDetailsList();
if (!CollectionUtils.isEmpty(list)) { if (!CollectionUtils.isEmpty(list)) {
orderMapper.deleteCostReliefs(list.get(0).getOrderId()); for (OrderDetailDto dto : list) {
return orderMapper.insertCostReliefs(orderInfoDto.getReliefList()); orderMapper.updateOrder4Relief(dto);
}
} }
return 0; return 0;
} }

View File

@ -90,6 +90,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</if> </if>
</update> </update>
<update id="updateOrder4Relief">
UPDATE
ma_order_details
set relief_start_time = #{reliefStartTime},
relief_end_time = #{reliefEndTime},
update_time = now()
WHERE order_id = #{orderId} and ma_id = #{maId}
</update>
<select id="getdeviceCount" resultType="com.bonus.material.device.domain.DevInfo"> <select id="getdeviceCount" resultType="com.bonus.material.device.domain.DevInfo">
select device_count,device_name from ma_dev_info where ma_id = #{maId} and is_active = 1 select device_count,device_name from ma_dev_info where ma_id = #{maId} and is_active = 1
</select> </select>
@ -309,12 +318,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete> </delete>
<insert id="insertCostReliefs"> <insert id="insertCostReliefs">
insert into ma_order_details_relief(order_id, ma_id, relief_begin_time, relief_end_time, create_time) insert into ma_order_details_relief(order_id, ma_id, status, relief_begin_time, relief_end_time, create_time)
values values
<foreach collection="list" item="item" index="index" separator=","> <foreach collection="list" item="item" index="index" separator=",">
( (
#{item.orderId}, #{item.orderId},
#{item.maId}, #{item.maId},
#{item.status},
#{item.reliefStartTime}, #{item.reliefStartTime},
#{item.reliefEndTime}, #{item.reliefEndTime},
now() now()