Merge remote-tracking branch 'origin/master'

This commit is contained in:
liang.chao 2024-12-18 13:35:12 +08:00
commit b403c43c8b
8 changed files with 89 additions and 12 deletions

View File

@ -34,6 +34,8 @@ public interface LeaseRepairRecordMapper {
*/ */
int insert(LeaseRepairRecord leaseRepairRecord); int insert(LeaseRepairRecord leaseRepairRecord);
int getCountByOrderId(String orderId);
int deleteLeaseRepairRecord(LeaseRepairRecord leaseRepairRecord); int deleteLeaseRepairRecord(LeaseRepairRecord leaseRepairRecord);
/** /**

View File

@ -208,9 +208,9 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
LeaseRepairRecord leaseRepairRecord = createLeaseRepairRecord(leaseRecordDto); LeaseRepairRecord leaseRepairRecord = createLeaseRepairRecord(leaseRecordDto);
// 校验所有记录是否为空 // 校验所有记录是否为空
if (isAllRecordListsEmpty(leaseRecordDto)) { // if (isAllRecordListsEmpty(leaseRecordDto)) {
return insertRecord(leaseRepairRecord); // return insertRecord(leaseRepairRecord);
} // }
try { try {
// 处理维修报废丢失记录的情况 // 处理维修报废丢失记录的情况
return handleAllRecords(leaseRecordDto, new ArrayList<>(maIdSet)); return handleAllRecords(leaseRecordDto, new ArrayList<>(maIdSet));
@ -298,7 +298,13 @@ public class LeaseRepairRecordServiceImpl implements LeaseRepairRecordService {
} }
leaseRepairRecord.setPriceConfirmUser(SecurityUtils.getUserId()); leaseRepairRecord.setPriceConfirmUser(SecurityUtils.getUserId());
//将费用确认人信息存入 //将费用确认人信息存入
int result = mapper.update(leaseRepairRecord); int count = mapper.getCountByOrderId(leaseRepairRecord.getOrderId());
int result = 0;
if (count > 0) {
result = mapper.update(leaseRepairRecord);
} else {
result++; //没找到需要更新的记录默认为是已经处理过了
}
//修改订单状态为已完成 //修改订单状态为已完成
if (result > 0) { if (result > 0) {
leaseRepairRecord.setOrderStatus(OrderStatusEnum.ORDER_FINISHED.getStatus()); leaseRepairRecord.setOrderStatus(OrderStatusEnum.ORDER_FINISHED.getStatus());

View File

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.text.StrBuilder; import cn.hutool.core.text.StrBuilder;
import com.bonus.common.biz.enums.MaStatusEnum; import com.bonus.common.biz.enums.MaStatusEnum;
import com.bonus.common.biz.enums.OrderStatusEnum; import com.bonus.common.biz.enums.OrderStatusEnum;
import com.bonus.common.core.utils.DateUtils;
import com.bonus.common.core.web.controller.BaseController; import com.bonus.common.core.web.controller.BaseController;
import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.core.web.domain.AjaxResult;
import com.bonus.common.core.web.page.TableDataInfo; import com.bonus.common.core.web.page.TableDataInfo;
@ -12,6 +13,8 @@ import com.bonus.material.book.domain.BookCarInfoDto;
import com.bonus.material.contract.domain.BmContract; import com.bonus.material.contract.domain.BmContract;
import com.bonus.material.contract.service.BmContractService; 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.mapper.LeaseRepairRecordMapper;
import com.bonus.material.order.domain.OrderDetailCostReliefDto; 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;
@ -29,6 +32,7 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.mock.web.MockMultipartFile; import org.springframework.mock.web.MockMultipartFile;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
@ -64,6 +68,9 @@ public class OrderController extends BaseController {
@Resource @Resource
private OrderMapper orderMapper; private OrderMapper orderMapper;
@Resource
private LeaseRepairRecordMapper leaseRepairRecordMapper;
@Resource @Resource
private BmContractService bmContractService; private BmContractService bmContractService;
@ -184,6 +191,9 @@ public class OrderController extends BaseController {
bmContract.setStatus(1); bmContract.setStatus(1);
bmContract.setOwnerCom(orderInfoDto.getCompanyId().longValue()); bmContract.setOwnerCom(orderInfoDto.getCompanyId().longValue());
List<BmContract> list = bmContractService.getContractUrl(bmContract); List<BmContract> list = bmContractService.getContractUrl(bmContract);
if (CollectionUtils.isEmpty(list)) {
return AjaxResult.error("请先上传合同");
}
String wordUrl = list.get(0).getBmFileInfoList().get(0).getFileUrl(); String wordUrl = list.get(0).getBmFileInfoList().get(0).getFileUrl();
InputStream inputStream = new URL(wordUrl).openStream(); InputStream inputStream = new URL(wordUrl).openStream();
@ -203,7 +213,7 @@ public class OrderController extends BaseController {
//订单金额 //订单金额
replacements.put("${cost}", orderInfoDto.getCost().toString()); replacements.put("${cost}", orderInfoDto.getCost().toString());
//订单详情 //订单详情
StrBuilder orderDetail = new StrBuilder(); StringBuilder orderDetail = new StringBuilder();
for (OrderDetailDto orderDetailDto : orderDetailsByOrderId) { for (OrderDetailDto orderDetailDto : orderDetailsByOrderId) {
Date rentBeginTime = inputFormat.parse(orderDetailDto.getRentBeginTime().toString()); Date rentBeginTime = inputFormat.parse(orderDetailDto.getRentBeginTime().toString());
String beginTime = outputFormat.format(rentBeginTime); String beginTime = outputFormat.format(rentBeginTime);
@ -252,6 +262,9 @@ public class OrderController extends BaseController {
bmContract.setStatus(1); bmContract.setStatus(1);
bmContract.setOwnerCom(orderInfoDto.getCompanyId().longValue()); bmContract.setOwnerCom(orderInfoDto.getCompanyId().longValue());
List<BmContract> list = bmContractService.getContractUrl(bmContract); List<BmContract> list = bmContractService.getContractUrl(bmContract);
if (CollectionUtils.isEmpty(list)) {
return AjaxResult.error("请先上传合同");
}
String wordUrl = list.get(0).getBmFileInfoList().get(0).getFileUrl(); String wordUrl = list.get(0).getBmFileInfoList().get(0).getFileUrl();
InputStream inputStream = new URL(wordUrl).openStream(); InputStream inputStream = new URL(wordUrl).openStream();
XWPFDocument document = new XWPFDocument(inputStream); XWPFDocument document = new XWPFDocument(inputStream);
@ -265,7 +278,7 @@ public class OrderController extends BaseController {
//订单金额 //订单金额
replacements.put("${cost}", orderInfoDto.getCost().toString()); replacements.put("${cost}", orderInfoDto.getCost().toString());
//订单详情 //订单详情
StrBuilder orderDetail = new StrBuilder(); StringBuilder orderDetail = new StringBuilder();
List<OrderDetailDto> detailsList = orderInfoDto.getDetailsList(); List<OrderDetailDto> detailsList = orderInfoDto.getDetailsList();
for (OrderDetailDto orderDetailDto : detailsList) { for (OrderDetailDto orderDetailDto : detailsList) {
Date rentBeginTime = inputFormat.parse(orderDetailDto.getRentBeginTime().toString()); Date rentBeginTime = inputFormat.parse(orderDetailDto.getRentBeginTime().toString());

View File

@ -28,6 +28,9 @@ public class OrderDetailDto {
@ApiModelProperty(value = "订单id") @ApiModelProperty(value = "订单id")
private Integer orderId; private Integer orderId;
@ApiModelProperty(value = "订单code")
private String orderCode;
@ApiModelProperty(value = "设备id") @ApiModelProperty(value = "设备id")
private Integer maId; private Integer maId;

View File

@ -131,4 +131,10 @@ public class OrderInfoDto {
private Integer companyId; private Integer companyId;
private BigDecimal totalRepairScrapLossPrice;
private BigDecimal totalRentalPrice;
private BigDecimal totalRealPrice;
} }

View File

@ -2,9 +2,12 @@ package com.bonus.material.order.service.impl;
import com.bonus.common.biz.enums.MaStatusEnum; import com.bonus.common.biz.enums.MaStatusEnum;
import com.bonus.common.biz.enums.OrderStatusEnum; import com.bonus.common.biz.enums.OrderStatusEnum;
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.device.domain.DevInfo;
import com.bonus.material.lease.domain.LeaseRepair;
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.OrderDetailCostReliefDto;
import com.bonus.material.order.domain.OrderDetailDto; import com.bonus.material.order.domain.OrderDetailDto;
@ -16,10 +19,9 @@ 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.util.ArrayList; import java.math.BigDecimal;
import java.util.List; import java.text.SimpleDateFormat;
import java.util.Optional; import java.util.*;
import java.util.OptionalInt;
/** /**
* @Authorliang.chao * @Authorliang.chao
@ -33,7 +35,9 @@ public class OrderServiceImpl implements OrderService {
private OrderMapper orderMapper; private OrderMapper orderMapper;
@Resource @Resource
private LeaseRepairRecordMapper mapper; private LeaseRepairRecordMapper leaseRepairRecordMapper;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override @Override
@Transactional @Transactional
@ -102,6 +106,16 @@ public class OrderServiceImpl implements OrderService {
OrderDetailDto orderDetailDto = orderMapper.selectOrderDetailsById(id); OrderDetailDto orderDetailDto = orderMapper.selectOrderDetailsById(id);
list.add(orderDetailDto); list.add(orderDetailDto);
} }
BigDecimal totalRentalPrice = BigDecimal.ZERO;
for (OrderDetailDto orderDetailDto : list) {
if (Objects.nonNull(orderDetailDto) && String.valueOf(OrderStatusEnum.ORDER_FINISHED.getStatus()).equals(orderDetailDto.getOrderStatus())) {
Date preOutBoundTime = sdf.parse(orderDetailDto.getPreOutboundTime());
Date rentOverTime = sdf.parse(orderDetailDto.getRentOverTime());
long days = DateUtils.daysBetween(preOutBoundTime, rentOverTime) + 1;
totalRentalPrice = totalRentalPrice.add(orderDetailDto.getDayLeasePrice().multiply(new BigDecimal(days)));
}
}
dto.setTotalRentalPrice(totalRentalPrice);
dto.setDetailsList(list); dto.setDetailsList(list);
Optional<OrderDetailDto> minOrderStatus = list.stream() Optional<OrderDetailDto> minOrderStatus = list.stream()
.min((p1, p2) -> Integer.compare(Integer.parseInt(p1.getOrderStatus()), Integer.parseInt(p2.getOrderStatus()))); .min((p1, p2) -> Integer.compare(Integer.parseInt(p1.getOrderStatus()), Integer.parseInt(p2.getOrderStatus())));
@ -109,13 +123,39 @@ public class OrderServiceImpl implements OrderService {
dto.setOrderStatus(minOrderStatus.get().getOrderStatus()); dto.setOrderStatus(minOrderStatus.get().getOrderStatus());
} }
//根据订单id去lease_repair_record表中查询是否已填写退租检修信息 //根据订单id去lease_repair_record表中查询是否已填写退租检修信息
int count = mapper.selectLeaseContent(String.valueOf(dto.getOrderId())); int count = leaseRepairRecordMapper.selectLeaseContent(String.valueOf(dto.getOrderId()));
if (count > 0) { if (count > 0) {
dto.setIsLeaseContent(1); dto.setIsLeaseContent(1);
} else { } else {
dto.setIsLeaseContent(0); dto.setIsLeaseContent(0);
} }
dto.setPartBacked(list.stream().anyMatch(o -> OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString().equals(o.getOrderStatus()))); dto.setPartBacked(list.stream().anyMatch(o -> OrderStatusEnum.ORDER_UNDER_LEASE.getStatus().toString().equals(o.getOrderStatus())));
//TODO计算总费用
LeaseRepair leaseRepair = new LeaseRepair();
leaseRepair.setOrderId(String.valueOf(dto.getOrderId()));
List<LeaseRepairRecord> leaseRepairRecords = leaseRepairRecordMapper.getLeaseRepairRecordList(leaseRepair);
BigDecimal totalRepairScrapLossPrice = BigDecimal.ZERO;
if (!CollectionUtils.isEmpty(leaseRepairRecords)) {
for (LeaseRepairRecord leaseRepairRecord : leaseRepairRecords) {
if (leaseRepairRecord.getRepairChangePrice()==null) {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getRepairPrice());
} else {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getRepairChangePrice());
}
if (leaseRepairRecord.getScrapChangePrice()==null) {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getScrapPrice());
} else {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getScrapChangePrice());
}
if (leaseRepairRecord.getLossChangePrice()==null) {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossPrice()==null?BigDecimal.ZERO:leaseRepairRecord.getLossPrice());
} else {
totalRepairScrapLossPrice = totalRepairScrapLossPrice.add(leaseRepairRecord.getLossChangePrice());
}
}
dto.setTotalRepairScrapLossPrice(totalRepairScrapLossPrice);
}
dto.setTotalRealPrice(BigDecimal.ZERO.add(totalRentalPrice).add(totalRepairScrapLossPrice));
} }
return orderInfoDtos; return orderInfoDtos;
} }

View File

@ -490,4 +490,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
WHERE WHERE
lr.order_id = #{orderId} lr.order_id = #{orderId}
</select> </select>
<select id="getCountByOrderId" resultType="Integer">
select count(1) from lease_repair_record
where order_id = #{orderId}
</select>
</mapper> </mapper>

View File

@ -98,6 +98,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
moi.code AS code, moi.code AS code,
GROUP_CONCAT(hh.id) AS ids, GROUP_CONCAT(hh.id) AS ids,
moi.order_time, moi.order_time,
mdi.own_co as sellerCompany,
up.dept_name AS czcompanyName, up.dept_name AS czcompanyName,
mdi.person_phone AS personPhone, mdi.person_phone AS personPhone,
su.phonenumber AS phoneNumber, su.phonenumber AS phoneNumber,
@ -229,6 +230,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<select id="selectOrderDetailsByOderId" resultType="com.bonus.material.order.domain.OrderDetailDto"> <select id="selectOrderDetailsByOderId" resultType="com.bonus.material.order.domain.OrderDetailDto">
SELECT SELECT
mdi.ma_id as maId, mdi.ma_id as maId,
mdi.code as code,
mdi.type_id as typeId, mdi.type_id as typeId,
mdi.device_name, mdi.device_name,
mt.lease_price as dayLeasePrice, mt.lease_price as dayLeasePrice,