提交 3aaa3e8e authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into…

Merge remote-tracking branch 'origin/v5.7_break_contract_reverse_20231020' into v5.7_break_contract_reverse_20231020
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Objects;
import java.util.Optional;
public enum BreakContractSettlementLogEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
CREATE_SETTLEMENT(1, "创建结算单"),
UPLOAD_SETTLEMENT (2, "上传结算凭证"),
OWNER_TO_BE_CONFIRMED(3, "货主确认结算单"),
SHIPPER_TO_PAYMENT(4, "货主付款"),
PLATFORM_CONFIRMED_OWNER_PAYMENT(5, "平台确认付款"),
PLATFORM_TO_PAYMENT(6, "平台付款"),
OWNER_CONFIRMED_PLATFORM_PAYMENT(7, "货主确认付款"),
COMPLETED(8, "已完结"),
;
private final Integer code;
private final String msg;
public static Optional<Type> getByCode(int code) {
return Arrays.stream(values()).filter(e -> Objects.equals(e.getCode(), code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Type::getMsg).orElse(null);
}
}
@Getter
@AllArgsConstructor
public enum DeleteStatus {
NO(0, "否"),
YES(1, "是"),
;
private final Integer code;
private final String msg;
}
}
...@@ -77,7 +77,8 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -77,7 +77,8 @@ public enum PerformanceResultEnum implements ResultEnum {
BREAK_CONTRACT_NO_FOUND(1600, "违约不存在"), BREAK_CONTRACT_NO_FOUND(1600, "违约不存在"),
BREAK_CONTRACT_RULE_NAME_EXIST(1601, "违约规则名称已存在"), BREAK_CONTRACT_RULE_NAME_EXIST(1601, "违约规则名称已存在"),
BREAK_CONTRACT_RULE_NO_FOUND(1601, "违约规则不存在"), BREAK_CONTRACT_RULE_NO_FOUND(1602, "违约规则不存在"),
STATUS_CHANGED(1603, "状态已变更,请重新刷新页面"),
; ;
private final int code; private final int code;
......
package com.clx.performance.param.pc.breakcontract.carrier;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import javax.validation.constraints.NotNull;
@Setter
@Getter
@ToString
@NoArgsConstructor
public class CarrierUploadInvoiceImgParam {
@NotNull(message = "id不能为空")
@ApiModelProperty(value = "id", example = "100")
private Integer id;
@NotNull(message = "结算凭证不能为空")
@ApiModelProperty(value="结算凭证",example = "/123.img")
private String invoiceImg;
}
package com.clx.performance.controller.pc.breakcontract.carrier; package com.clx.performance.controller.pc.breakcontract.carrier;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.breakcontract.carrier.CarrierUploadInvoiceImgParam;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam; import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService; import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO; import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
...@@ -59,4 +60,11 @@ public class CarrierBreakContractSettlementOwnerController { ...@@ -59,4 +60,11 @@ public class CarrierBreakContractSettlementOwnerController {
return Result.ok(breakContractSettlementOwnerService.getCarrierBreakContractSettlementOwnerDetail(id)); return Result.ok(breakContractSettlementOwnerService.getCarrierBreakContractSettlementOwnerDetail(id));
} }
@ApiOperation(value = "上传结算凭证",notes = "<br>By:李瑞新")
@PostMapping("/uploadInvoiceImg")
public Result uploadInvoiceImg(@RequestBody @Validated CarrierUploadInvoiceImgParam param) {
breakContractSettlementOwnerService.uploadInvoiceImg(param);
return Result.ok();
}
} }
...@@ -6,6 +6,7 @@ import com.clx.performance.mapper.breakcontract.BreakContractSettlementOwnerMapp ...@@ -6,6 +6,7 @@ import com.clx.performance.mapper.breakcontract.BreakContractSettlementOwnerMapp
import com.clx.performance.model.breakcontract.BreakContractSettlementOwner; import com.clx.performance.model.breakcontract.BreakContractSettlementOwner;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam; import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
/** /**
* @author liruixin * @author liruixin
...@@ -13,5 +14,8 @@ import com.msl.common.dao.BaseDao; ...@@ -13,5 +14,8 @@ import com.msl.common.dao.BaseDao;
* Time 16:02 * Time 16:02
*/ */
public interface BreakContractSettlementOwnerDao extends BaseDao<BreakContractSettlementOwnerMapper, BreakContractSettlementOwner, Integer> { public interface BreakContractSettlementOwnerDao extends BaseDao<BreakContractSettlementOwnerMapper, BreakContractSettlementOwner, Integer> {
IPage<BreakContractSettlementOwner> pageCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param); IPage<BreakContractSettlementOwner> pageCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param);
boolean uploadInvoiceImg(@Param("id")Integer id, @Param("invoiceImg")String invoiceImg);
} }
...@@ -22,6 +22,8 @@ import java.util.Objects; ...@@ -22,6 +22,8 @@ import java.util.Objects;
*/ */
@Repository @Repository
public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContractSettlementOwnerMapper, BreakContractSettlementOwner, Integer> implements BreakContractSettlementOwnerDao { public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContractSettlementOwnerMapper, BreakContractSettlementOwner, Integer> implements BreakContractSettlementOwnerDao {
@Override @Override
public IPage<BreakContractSettlementOwner> pageCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param) { public IPage<BreakContractSettlementOwner> pageCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param) {
LambdaQueryWrapper<BreakContractSettlementOwner> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<BreakContractSettlementOwner> query = new LambdaQueryWrapper<>();
...@@ -34,4 +36,14 @@ public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContra ...@@ -34,4 +36,14 @@ public class BreakContractSettlementOwnerDaoImpl extends BaseDaoImpl<BreakContra
query.orderByDesc(BreakContractSettlementOwner::getId); query.orderByDesc(BreakContractSettlementOwner::getId);
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query); return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
} }
@Override
public boolean uploadInvoiceImg(Integer id, String invoiceImg) {
return update(lUdWrapper()
.eq(BreakContractSettlementOwner::getId, id)
.eq(BreakContractSettlementOwner::getStatus, BreakContractSettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())
.set(BreakContractSettlementOwner::getInvoiceImg, invoiceImg)
.set(BreakContractSettlementOwner::getStatus, BreakContractSettlementOwnerEnum.Status.OWNER_TO_BE_CONFIRMED.getCode())
);
}
} }
...@@ -6,4 +6,6 @@ package com.clx.performance.service.breakcontract; ...@@ -6,4 +6,6 @@ package com.clx.performance.service.breakcontract;
* Time 16:02 * Time 16:02
*/ */
public interface BreakContractSettlementLogService { public interface BreakContractSettlementLogService {
void saveBreakSettlementLog(String settlementNo,Integer type,String remark,Integer createType,Long createBy,String createName);
} }
package com.clx.performance.service.breakcontract; package com.clx.performance.service.breakcontract;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.clx.performance.param.pc.breakcontract.carrier.CarrierUploadInvoiceImgParam;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam; import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO; import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO; import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
...@@ -18,4 +19,6 @@ public interface BreakContractSettlementOwnerService { ...@@ -18,4 +19,6 @@ public interface BreakContractSettlementOwnerService {
SXSSFWorkbook exportCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param); SXSSFWorkbook exportCarrierBreakContractSettlementOwnerList(PageCarrierBreakContractSettlementOwnerParam param);
CarrierBreakContractSettlementOwnerDetailVO getCarrierBreakContractSettlementOwnerDetail(Integer id); CarrierBreakContractSettlementOwnerDetailVO getCarrierBreakContractSettlementOwnerDetail(Integer id);
void uploadInvoiceImg(CarrierUploadInvoiceImgParam param);
} }
...@@ -6,6 +6,7 @@ import com.clx.order.feign.OrderFeign; ...@@ -6,6 +6,7 @@ import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.dao.OrderChildDao; import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.TruckDemandEnum; import com.clx.performance.enums.TruckDemandEnum;
...@@ -13,6 +14,7 @@ import com.clx.performance.model.OrderChild; ...@@ -13,6 +14,7 @@ import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.service.OrderCancelService; import com.clx.performance.service.OrderCancelService;
import com.clx.performance.service.OrderChildService; import com.clx.performance.service.OrderChildService;
import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -36,25 +38,30 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -36,25 +38,30 @@ public class OrderCancelServiceImpl implements OrderCancelService {
private final OrderGoodsDao orderGoodsDao; private final OrderGoodsDao orderGoodsDao;
private final OrderGoodsTruckBindDao orderGoodsTruckBindDao;
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerCancelOrderPre(String orderNo) { public void ownerCancelOrderPre(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
BigDecimal orderResidueWeight = new BigDecimal(orderInfoFeign.getResidueWeight()); BigDecimal orderTransportWeight = new BigDecimal(orderInfoFeign.getTransportWeight());
if (BigDecimal.ZERO.compareTo(orderResidueWeight) == 0) {
throw new RuntimeException("需要承运吨数的车辆,已全部到达货源地,无法取消");
}
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
if (CollectionUtil.isEmpty(orderGoodsList)) { if (CollectionUtil.isEmpty(orderGoodsList)) {
//未产生货单 //未产生货单
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode()); Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
} if (!result.succeed()) {
BigDecimal orderGoodsResidueWeight = orderGoodsList.stream().map(OrderGoods::getResidueTransportWeight).reduce(BigDecimal::add).get(); throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
if (BigDecimal.ZERO.compareTo(orderGoodsResidueWeight) == 0) { }
throw new RuntimeException("需要承运吨数的车辆,已全部到达货源地,无法取消"); return;
} }
List<OrderChild> orderChildren = orderChildDao.selectResidueWeight(orderNo);
if (CollectionUtil.isEmpty(orderChildren)) { List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
if (CollectionUtil.isEmpty(orderChildrenList)) {
Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
//说明此刻未产生运单 //说明此刻未产生运单
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods(); OrderGoods update = new OrderGoods();
...@@ -62,17 +69,22 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -62,17 +69,22 @@ public class OrderCancelServiceImpl implements OrderCancelService {
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode()); update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update); orderGoodsDao.updateEntityByKey(update);
} }
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.CANCELED.getCode());
} else { } else {
BigDecimal orderChildResidueWeight = orderChildrenList.stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
if (orderChildResidueWeight.compareTo(orderTransportWeight) == 0) {
throw new RuntimeException("当前订单已无余量可取消");
}
for (OrderGoods orderGoods : orderGoodsList) { for (OrderGoods orderGoods : orderGoodsList) {
OrderGoods update = new OrderGoods(); OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId()); update.setId(orderGoods.getId());
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode()); update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update); orderGoodsDao.updateEntityByKey(update);
} }
orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode()); Result<Object> result = orderFeign.updateOrderStatusByOrderNo(orderNo, OrderEnum.Status.COMPLETED.getCode());
if (!result.succeed()) {
throw new RuntimeException("货主取消订单失败,原因:远程调用取消订单失败");
}
} }
} }
...@@ -81,42 +93,105 @@ public class OrderCancelServiceImpl implements OrderCancelService { ...@@ -81,42 +93,105 @@ public class OrderCancelServiceImpl implements OrderCancelService {
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void ownerCancelOrder(String orderNo) { public void ownerCancelOrder(String orderNo) {
FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo); FeignOrderVO orderInfoFeign = orderFeign.getOrderInfoFeign(orderNo);
BigDecimal orderResidueWeightAll = BigDecimal.ZERO;
List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo); List<OrderGoods> orderGoodsList = orderGoodsDao.getOrderGoodsListByOrderNo(orderNo);
Map<Integer, BigDecimal> truckDemandMap = new HashMap<>(); Map<Integer, BigDecimal> truckDemandMap = new HashMap<>();
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO); truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode(), BigDecimal.ZERO);
truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO); truckDemandMap.put(TruckDemandEnum.TruckType.OWNER_CAR.getCode(), BigDecimal.ZERO);
if (!TruckDemandEnum.TruckType.PLATFORM_ANY_CAR.getCode().equals(orderInfoFeign.getTruckDemand())) {
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeign.getOrderStatus())) { if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已完结 //已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo); List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
for (OrderChild orderChild : orderChildrenList) { for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild(); OrderChild update = new OrderChild();
update.setId(orderChild.getId()); update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode()); update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
orderChildDao.updateEntityByKey(update); //TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream().collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.CANCEL.getCode());
orderGoodsDao.updateEntityByKey(update);
}
}
} else {
Map<Integer,BigDecimal> vehicleUsageMap = new HashMap<>();
if (OrderEnum.Status.COMPLETED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已完结
List<OrderChild> orderChildrenList = orderChildDao.selectResidueWeight(orderNo);
for (OrderChild orderChild : orderChildrenList) {
OrderChild update = new OrderChild();
update.setId(orderChild.getId());
update.setStatus(OrderChildEnum.Status.OWNER_CANCEL.getCode());
//TODO 补充批量更新接口 关闭运单状态
orderChildDao.updateEntityByKey(update);
}
//货单
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream().collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
//运单
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo));
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) {
String orderGoodsNo = entry.getKey();
OrderGoods orderGoods = entry.getValue().get(0);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream().map(OrderChild::getWeight).reduce(BigDecimal.ZERO, BigDecimal::add);
vehicleUsageMap.put(orderGoods.getVehicleUsage(), vehicleUsageMap.get(orderGoods.getVehicleUsage()).add(orderGoods.getResidueTransportWeight().add(sum)));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
vehicleUsageMap.put(orderGoods.getVehicleUsage(), vehicleUsageMap.get(orderGoods.getVehicleUsage()).add(orderGoods.getResidueTransportWeight()));
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
//TODO 补充批量更新接口 关闭货单状态
update.setResidueTransportWeight(BigDecimal.ZERO);
update.setOrderGoodsStatus(OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsDao.updateEntityByKey(update);
}
} }
Map<String, List<OrderGoods>> orderGoodsMap = orderGoodsList.stream().collect(Collectors.groupingBy(OrderGoods::getOrderGoodsNo));
Map<String, List<OrderChild>> orderChildMap = orderChildrenList.stream().collect(Collectors.groupingBy(OrderChild::getOrderGoodsNo)); String platformResidueCarryWeight = orderInfoFeign.getPlatformResidueCarryWeight();
String ownResidueCarryWeight = orderInfoFeign.getOwnResidueCarryWeight();
for (Map.Entry<String, List<OrderGoods>> entry : orderGoodsMap.entrySet()) { BigDecimal platformResidueSum = new BigDecimal(platformResidueCarryWeight).add(vehicleUsageMap.get(1));
String orderGoodsNo = entry.getKey(); BigDecimal ownResidueSum = new BigDecimal(ownResidueCarryWeight).add(vehicleUsageMap.get(2));
OrderGoods orderGoods = entry.getValue().get(0); BigDecimal residueSum = new BigDecimal(orderInfoFeign.getResidueWeight()).add(platformResidueSum).add(ownResidueSum);
BigDecimal sum = orderChildMap.get(orderGoodsNo).stream().map(OrderChild::getWeight).reduce(BigDecimal::add).get();
OrderGoods update = new OrderGoods();
update.setId(orderGoods.getId());
update.setResidueTransportWeight(orderGoods.getResidueTransportWeight().add(sum));
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(update.getResidueTransportWeight()));
}
} else if (OrderEnum.Status.CANCELED.getCode().equals(orderInfoFeign.getOrderStatus())) {
//已取消
for (OrderGoods orderGoods : orderGoodsList) {
truckDemandMap.put(orderGoods.getTruckDemand(), truckDemandMap.get(orderGoods.getTruckDemand()).add(orderGoods.getResidueTransportWeight()));
}
} }
......
package com.clx.performance.service.impl.breakcontract; package com.clx.performance.service.impl.breakcontract;
import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementOwnerDetailDao;
import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.clx.performance.service.breakcontract.BreakContractSettlementLogService; import com.clx.performance.service.breakcontract.BreakContractSettlementLogService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
/** /**
...@@ -9,5 +14,21 @@ import org.springframework.stereotype.Service; ...@@ -9,5 +14,21 @@ import org.springframework.stereotype.Service;
* Time 16:02 * Time 16:02
*/ */
@Service @Service
@Slf4j
@AllArgsConstructor
public class BreakContractSettlementLogServiceImpl implements BreakContractSettlementLogService { public class BreakContractSettlementLogServiceImpl implements BreakContractSettlementLogService {
private final BreakContractSettlementLogDao breakContractSettlementLogDao;
@Override
public void saveBreakSettlementLog(String settlementNo, Integer type, String remark, Integer createType, Long createBy, String createName) {
BreakContractSettlementLog breakContractSettlementLog = new BreakContractSettlementLog();
breakContractSettlementLog.setCreateBy(createBy);
breakContractSettlementLog.setCreateName(createName);
breakContractSettlementLog.setCreateType(createType);
breakContractSettlementLog.setRemark(remark);
breakContractSettlementLog.setSettlementNo(settlementNo);
breakContractSettlementLog.setType(type);
breakContractSettlementLogDao.saveEntity(breakContractSettlementLog);
}
} }
...@@ -5,10 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage; ...@@ -5,10 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao; import com.clx.performance.dao.breakcontract.BreakContractSettlementLogDao;
import com.clx.performance.dao.breakcontract.BreakContractSettlementOwnerDao; import com.clx.performance.dao.breakcontract.BreakContractSettlementOwnerDao;
import com.clx.performance.enums.BreakContractSettlementLogEnum;
import com.clx.performance.enums.BreakContractSettlementOwnerEnum;
import com.clx.performance.enums.OrderChildLogEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.breakcontract.BreakContractSettlementLog; import com.clx.performance.model.breakcontract.BreakContractSettlementLog;
import com.clx.performance.model.breakcontract.BreakContractSettlementOwner; import com.clx.performance.model.breakcontract.BreakContractSettlementOwner;
import com.clx.performance.param.pc.breakcontract.carrier.CarrierUploadInvoiceImgParam;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam; import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerParam;
import com.clx.performance.service.breakcontract.BreakContractSettlementLogService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService; import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.clx.performance.struct.breakcontract.BreakContractSettlementLogStruct; import com.clx.performance.struct.breakcontract.BreakContractSettlementLogStruct;
import com.clx.performance.struct.breakcontract.BreakContractSettlementOwnerStruct; import com.clx.performance.struct.breakcontract.BreakContractSettlementOwnerStruct;
...@@ -19,6 +24,9 @@ import com.clx.performance.utils.excel.ExcelUtil; ...@@ -19,6 +24,9 @@ import com.clx.performance.utils.excel.ExcelUtil;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementLogVO; import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementLogVO;
import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO; import com.clx.performance.vo.pc.breakcontract.carrier.CarrierBreakContractSettlementOwnerDetailVO;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO; import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementOwnerVO;
import com.msl.common.exception.ServiceSystemException;
import com.msl.user.data.UserSessionData;
import com.msl.user.utils.TokenUtil;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFWorkbook;
...@@ -26,6 +34,7 @@ import org.springframework.stereotype.Service; ...@@ -26,6 +34,7 @@ import org.springframework.stereotype.Service;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects;
/** /**
* @author liruixin * @author liruixin
...@@ -41,6 +50,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -41,6 +50,7 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
private final BreakContractSettlementOwnerStruct breakContractSettlementOwnerStruct; private final BreakContractSettlementOwnerStruct breakContractSettlementOwnerStruct;
private final BreakContractSettlementLogDao breakContractSettlementLogDao; private final BreakContractSettlementLogDao breakContractSettlementLogDao;
private final BreakContractSettlementLogStruct breakContractSettlementLogStruct; private final BreakContractSettlementLogStruct breakContractSettlementLogStruct;
private final BreakContractSettlementLogService breakContractSettlementLogService;
@Override @Override
...@@ -118,4 +128,20 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -118,4 +128,20 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
detail.setLogs(settlementLogVOS); detail.setLogs(settlementLogVOS);
return detail; return detail;
} }
@Override
public void uploadInvoiceImg(CarrierUploadInvoiceImgParam param) {
BreakContractSettlementOwner settlementOwner = breakContractSettlementOwnerDao.getEntityByKey(param.getId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
if(!Objects.equals(settlementOwner.getStatus(), BreakContractSettlementOwnerEnum.Status.TO_BE_LOCKED.getCode())){
throw new ServiceSystemException(PerformanceResultEnum.STATUS_CHANGED);
}
breakContractSettlementOwnerDao.uploadInvoiceImg(param.getId(),param.getInvoiceImg());
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
//保存结算单日志----上传结算凭证
breakContractSettlementLogService.saveBreakSettlementLog(settlementOwner.getSettlementNo(),
BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getCode(),BreakContractSettlementLogEnum.Type.CREATE_SETTLEMENT.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName());
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论