提交 db95724c authored 作者: liruixin's avatar liruixin

自动生成违约金

上级 bb25824e
package com.clx.performance.feign; package com.clx.performance.feign;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.OrderCancelFeignParam; import com.clx.performance.param.pc.OrderCancelFeignParam;
import com.clx.performance.vo.feign.OrderGoodsFeignVO; import com.clx.performance.vo.feign.OrderGoodsFeignVO;
import com.msl.common.result.Result; import com.msl.common.result.Result;
...@@ -66,4 +67,7 @@ public interface PerformanceFeign { ...@@ -66,4 +67,7 @@ public interface PerformanceFeign {
Result<Boolean> updateOrderGoodsStopFlag(@RequestParam("orderNo") String orderNo,@RequestParam("stopFlag") Integer stopFlag); Result<Boolean> updateOrderGoodsStopFlag(@RequestParam("orderNo") String orderNo,@RequestParam("stopFlag") Integer stopFlag);
@PostMapping(value = {"clx-performance/feign/breakContract/saveSettlementOwnerForTonnageDown"})
Result saveSettlementOwnerForTonnageDown(@RequestBody OrderAdjustTonnageDownParam param);
} }
package com.clx.performance.param.feign;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
@Getter
@Setter
public class OrderAdjustTonnageDownParam {
@NotBlank(message = "订单编号不能为空")
@ApiModelProperty("订单编号")
private String orderNo;
@NotNull(message = "调整货物吨数不能为空")
@ApiModelProperty(value = "调整货物吨数")
private BigDecimal weight;
@NotNull(message = "拉运重量不能为空")
@ApiModelProperty(value = "拉运重量")
private BigDecimal transportWeight;
@NotNull(message = "有效运费不能为空")
@ApiModelProperty("有效运费")
private BigDecimal validFreightPrice;
@NotNull(message = "违约金方案id不能为空")
@ApiModelProperty("违约金方案id")
private Integer liquidatedDamagesPlanId;
}
package com.clx.performance.controller.feign;
import com.clx.performance.param.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
import com.msl.common.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Slf4j
@RestController
@RequestMapping(value="/feign/breakContract")
@Validated
@Api(tags = "货主违约结算单")
@AllArgsConstructor
public class BreakContractSettlementOwnerFeignController {
private final BreakContractSettlementOwnerService breakContractSettlementOwnerService;
@ApiOperation(value = "货主订单吨数下调自动保存违约结算单")
@PostMapping("/saveSettlementOwnerForTonnageDown")
Result<Void> saveBreakContractSettlementOwner(@RequestBody @Validated OrderAdjustTonnageDownParam param){
return Result.ok();
}
}
...@@ -99,4 +99,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -99,4 +99,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status); List<OrderChild> selectOrderChildListByOrderGoodsNoAndStatusGE(String orderGoodsNo, Integer status);
List<OrderChild> selectListByOrderGoodsList(List<String> orderGoodsList); List<OrderChild> selectListByOrderGoodsList(List<String> orderGoodsList);
List<OrderChild> listOrderChildByOrderNoAndStatus(String orderNo,List<Integer> status);
} }
...@@ -339,4 +339,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -339,4 +339,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
); );
} }
@Override
public List<OrderChild> listOrderChildByOrderNoAndStatus(String orderNo, List<Integer> status) {
return baseMapper.selectList(
lQrWrapper()
.eq(OrderChild::getOrderNo,orderNo)
.in(OrderChild :: getStatus,status)
);
}
} }
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.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.breakcontract.carrier.*; import com.clx.performance.param.pc.breakcontract.carrier.*;
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;
...@@ -34,5 +35,7 @@ public interface BreakContractSettlementOwnerService { ...@@ -34,5 +35,7 @@ public interface BreakContractSettlementOwnerService {
void updateOwnerBreakContractPayeeConfirm(CarrierBreakPayeeConfirmParam param); void updateOwnerBreakContractPayeeConfirm(CarrierBreakPayeeConfirmParam param);
void saveBreakContractSettlementOwner(OrderAdjustTonnageDownParam param);
} }
...@@ -2,12 +2,18 @@ package com.clx.performance.service.impl.breakcontract; ...@@ -2,12 +2,18 @@ package com.clx.performance.service.impl.breakcontract;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.breakcontract.BreakContractOwnerRecordDao;
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.*; import com.clx.performance.enums.*;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.breakcontract.BreakContractOwnerRecord;
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.feign.OrderAdjustTonnageDownParam;
import com.clx.performance.param.pc.breakcontract.carrier.*; import com.clx.performance.param.pc.breakcontract.carrier.*;
import com.clx.performance.service.breakcontract.BreakContractSettlementLogService; import com.clx.performance.service.breakcontract.BreakContractSettlementLogService;
import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService; import com.clx.performance.service.breakcontract.BreakContractSettlementOwnerService;
...@@ -29,7 +35,9 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook; ...@@ -29,7 +35,9 @@ import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -48,6 +56,8 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -48,6 +56,8 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
private final BreakContractSettlementLogDao breakContractSettlementLogDao; private final BreakContractSettlementLogDao breakContractSettlementLogDao;
private final BreakContractSettlementLogStruct breakContractSettlementLogStruct; private final BreakContractSettlementLogStruct breakContractSettlementLogStruct;
private final BreakContractSettlementLogService breakContractSettlementLogService; private final BreakContractSettlementLogService breakContractSettlementLogService;
private final OrderChildDao orderChildDao;
private final BreakContractOwnerRecordDao breakContractOwnerRecordDao;
@Override @Override
...@@ -259,4 +269,47 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe ...@@ -259,4 +269,47 @@ public class BreakContractSettlementOwnerServiceImpl implements BreakContractSe
BreakContractSettlementLogEnum.Type.COMPLETED.getCode(),BreakContractSettlementLogEnum.Type.COMPLETED.getMsg(), BreakContractSettlementLogEnum.Type.COMPLETED.getCode(),BreakContractSettlementLogEnum.Type.COMPLETED.getMsg(),
OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName()); OrderChildLogEnum.CreateType.PLATFORM.getCode(),loginUserInfo.getUserNo(),loginUserInfo.getUserName());
} }
@Override
public void saveBreakContractSettlementOwner(OrderAdjustTonnageDownParam param) {
//下调货物吨数
if(param.getWeight().compareTo(BigDecimal.ZERO) <=0){
return ;
}
//运单状态(不包括取消)
List<Integer> statusList = Arrays.asList(
new Integer[]{OrderChildEnum.Status.CREATED.getCode(), OrderChildEnum.Status.PAY.getCode(),
OrderChildEnum.Status.GO_TO_SEND.getCode(), OrderChildEnum.Status.ARRIVE_SEND.getCode(),
OrderChildEnum.Status.LOAD.getCode(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode(),
OrderChildEnum.Status.ARRIVE_RECEIVE.getCode(), OrderChildEnum.Status.UNLOAD.getCode(),
OrderChildEnum.Status.UNSETTLE.getCode()});
BigDecimal totalFreight ;//总费用
List<OrderChild> orderChilds = orderChildDao.listOrderChildByOrderNoAndStatus(param.getOrderNo(), statusList);
if(CollectionUtils.isEmpty(orderChilds)){
totalFreight = param.getTransportWeight().multiply(param.getValidFreightPrice());
}else{
BigDecimal deliveredWeight = BigDecimal.ZERO;//已拉运的重量
BigDecimal deliveredFreight = BigDecimal.ZERO;//已拉运的费用
for(OrderChild orderChild : orderChilds){
if(orderChild.getLoadNet() != null){
deliveredWeight = deliveredWeight.add(orderChild.getWeight()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getWeight()));
}else{
deliveredWeight = deliveredWeight.add(orderChild.getLoadNet()) ;
deliveredFreight = deliveredFreight.add(orderChild.getOrderFreightPrice().multiply(orderChild.getLoadNet()));
}
}
BigDecimal noTransitWeight = param.getTransportWeight().subtract(deliveredWeight);//未拉运的重量
BigDecimal noTransitFreight = noTransitWeight.multiply(param.getValidFreightPrice());//未拉运的费用
totalFreight = deliveredFreight.add(noTransitFreight);
}
//违约金
BreakContractOwnerRecord ownerRecord = breakContractOwnerRecordDao.getEntityByKey(param.getLiquidatedDamagesPlanId()).orElseThrow(PerformanceResultEnum.DATA_NOT_FIND);
}
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论