提交 0f6e0316 authored 作者: huyufan's avatar huyufan

Merge remote-tracking branch 'origin/test' into test

...@@ -111,4 +111,26 @@ public enum SettlementOwnerEnum { ...@@ -111,4 +111,26 @@ public enum SettlementOwnerEnum {
} }
} }
@Getter
@AllArgsConstructor
public enum MergeSettlementFlag {
//1:普通结算单 2:合并结算单
COMMON(1, "普通结算单"),
MERGE(2, "合并结算单"),
;
private final int code;
private final String name;
public static Optional<MergeSettlementFlag> getByCode(int code) {
return Arrays.stream(values()).filter(e -> e.code == code).findFirst();
}
}
} }
package com.clx.performance.param.pc;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @ClassName JudgeTruckStatusParam
* @Description
* @Author kavin
* @Date 2023/12/15 14:11
* @Version 1.0
*/
@Getter
@Setter
public class JudgeTruckStatusParam {
@NotNull(message = "车牌号集合不能为空")
@ApiModelProperty("车牌号集合")
List<String> truckNoList;
}
package com.clx.performance.param.pc.owner;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.NotNull;
import java.util.List;
/**
* @ClassName MergeOwnerSettlementParam
* @Description
* @Author kavin
* @Date 2023/12/18 17:29
* @Version 1.0
*/
@Getter
@Setter
public class MergeOwnerSettlementParam {
@NotNull(message = "合并结算单id集合不能为空")
@ApiModelProperty("合并结算单id集合")
List<Integer> list;
}
package com.clx.performance.vo.pc.carrier.settle;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
/**
* @ClassName SettlementMergeDetailVO
* @Description
* @Author kavin
* @Date 2023/12/19 14:18
* @Version 1.0
*/
@Getter
@Setter
public class SettlementMergeDetailVO {
@ApiModelProperty("id")
private Integer id;
@ApiModelProperty("结算子单号")
private String settlementNo; //结算单编号
@ApiModelProperty("结算单号")
private String settlementSubNo; //结算子单号
@ApiModelProperty("操作人")
private String mergedBy; //合并人
@ApiModelProperty("合并结算单时间")
private String mergeTime; //合并结算单时间
}
package com.clx.performance.controller.pc; package com.clx.performance.controller.pc;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.param.pc.OrderGoodsTruckListParam; import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.param.pc.TruckTraceParam;
import com.clx.performance.service.TruckService; import com.clx.performance.service.TruckService;
import com.clx.performance.vo.pc.OrderGoodsTruckListVO; import com.clx.performance.vo.pc.OrderGoodsTruckListVO;
import com.clx.performance.vo.pc.PageTruckListVO; import com.clx.performance.vo.pc.PageTruckListVO;
...@@ -84,4 +81,12 @@ public class TruckController { ...@@ -84,4 +81,12 @@ public class TruckController {
List<TruckTraceVO> list = truckService.getTruckTrace(param); List<TruckTraceVO> list = truckService.getTruckTrace(param);
return Result.ok(list); return Result.ok(list);
} }
@ApiOperation(value = "判断车辆状态", notes = "<br>By:刘海泉")
@PostMapping("/judgeTruckStatus")
public Result<List<String>> judgeTruckStatus(@RequestBody @Validated JudgeTruckStatusParam param) {
List<String> list = truckService.judgeTruckStatus(param);
return Result.ok(list);
}
} }
...@@ -10,14 +10,13 @@ import com.msl.common.convertor.aspect.UnitCovert; ...@@ -10,14 +10,13 @@ import com.msl.common.convertor.aspect.UnitCovert;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.validation.constraints.NotBlank;
@Slf4j @Slf4j
@RestController @RestController
...@@ -47,4 +46,12 @@ public class CarrierBreakContractDriverRecordController { ...@@ -47,4 +46,12 @@ public class CarrierBreakContractDriverRecordController {
return Result.page(page.getRecords(), page.getTotal(), page.getPages()); return Result.page(page.getRecords(), page.getTotal(), page.getPages());
} }
@ApiOperation(value = "获取运单的用车需求(是否自由车辆)",notes = "<br>By:刘海泉")
@GetMapping("/getChildTruckDemand")
public Result<Integer> getChildTruckDemand(@ApiParam("运单编号") @NotBlank(message = "运单编号不能为空") String childNo) {
return Result.ok(breakContractDriverRecordService.getChildTruckDemand(childNo));
}
} }
...@@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.*; ...@@ -22,7 +22,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping(value="/pc/carrier/settlementOwner") @RequestMapping(value="/pc/carrier/settlementOwner")
...@@ -129,5 +128,10 @@ public class CarrierSettlementOwnerController { ...@@ -129,5 +128,10 @@ public class CarrierSettlementOwnerController {
return Result.ok(settlementOwnerService.getCarrierSettlementPlatformAccount(settlementNo)); return Result.ok(settlementOwnerService.getCarrierSettlementPlatformAccount(settlementNo));
} }
@ApiOperation(value = "合并结算单",notes = "<br>By:刘海泉")
@PostMapping("/mergeOwnerSettlement")
public Result<Object> mergeOwnerSettlement(@RequestBody @Validated MergeOwnerSettlementParam param) {
settlementOwnerService.mergeOwnerSettlement(param);
return Result.ok();
}
} }
...@@ -27,7 +27,6 @@ import org.springframework.web.bind.annotation.*; ...@@ -27,7 +27,6 @@ import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping(value="/pc/owner/settlementOwner") @RequestMapping(value="/pc/owner/settlementOwner")
...@@ -105,6 +104,4 @@ public class OwnerSettlementOwnerController { ...@@ -105,6 +104,4 @@ public class OwnerSettlementOwnerController {
} }
} }
...@@ -12,6 +12,7 @@ import com.msl.common.base.Optional; ...@@ -12,6 +12,7 @@ import com.msl.common.base.Optional;
import com.clx.performance.param.pc.owner.PageOwnerSettlementParam; import com.clx.performance.param.pc.owner.PageOwnerSettlementParam;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import java.time.LocalDateTime; import java.time.LocalDateTime;
...@@ -98,6 +99,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S ...@@ -98,6 +99,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
@Override @Override
public IPage<SettlementOwner> pageCarrierSettlementOwner(PageCarrierSettlementOwnerParam param) { public IPage<SettlementOwner> pageCarrierSettlementOwner(PageCarrierSettlementOwnerParam param) {
LambdaQueryWrapper<SettlementOwner> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SettlementOwner> query = new LambdaQueryWrapper<>();
query.eq(SettlementOwner :: getMergeStatus,SettlementOwnerEnum.MergeStatus.NO.getCode());
if(Objects.nonNull(param.getOwnerUserNo())){ if(Objects.nonNull(param.getOwnerUserNo())){
query.eq(SettlementOwner :: getOwnerUserNo,param.getOwnerUserNo()); query.eq(SettlementOwner :: getOwnerUserNo,param.getOwnerUserNo());
} }
...@@ -134,6 +136,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S ...@@ -134,6 +136,7 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
public IPage<SettlementOwner> pageSettlementOwner(Long userNo,PageOwnerSettlementParam param) { public IPage<SettlementOwner> pageSettlementOwner(Long userNo,PageOwnerSettlementParam param) {
LambdaQueryWrapper<SettlementOwner> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<SettlementOwner> query = new LambdaQueryWrapper<>();
query.eq(SettlementOwner :: getOwnerUserNo,userNo); query.eq(SettlementOwner :: getOwnerUserNo,userNo);
query.eq(SettlementOwner :: getMergeStatus,SettlementOwnerEnum.MergeStatus.NO.getCode());
if(StringUtils.isNotBlank(param.getOrderNo())){ if(StringUtils.isNotBlank(param.getOrderNo())){
query.eq(SettlementOwner :: getOrderNo,param.getOrderNo()); query.eq(SettlementOwner :: getOrderNo,param.getOrderNo());
} }
...@@ -227,4 +230,17 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S ...@@ -227,4 +230,17 @@ public class SettlementOwnerDaoImpl extends BaseDaoImpl<SettlementOwnerMapper, S
); );
} }
@Override
public void updateSettlementMerge(@Param("settlementNo")String settlementNo,
@Param("settlementNos")List<String> settlementNos,
@Param("mergedBy") String mergedBy,
@Param("mergeTime") LocalDateTime mergeTime) {
update(lUdWrapper()
.in(SettlementOwner :: getSettlementNo,settlementNos)
.set(SettlementOwner::getSettlementSubNo, settlementNo)
.set(SettlementOwner::getMergeStatus, SettlementOwnerEnum.MergeStatus.YES.getCode())
.set(SettlementOwner:: getMergedBy,mergedBy)
.set(SettlementOwner:: getMergeTime,mergeTime)
);
}
} }
...@@ -144,4 +144,13 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet ...@@ -144,4 +144,13 @@ public class SettlementOwnerDetailDaoImpl extends BaseDaoImpl<SettlementOwnerDet
query.eq(StringUtils.isNotBlank(param.getSettlementSubNo()),SettlementOwnerDetail :: getSettlementSubNo,param.getSettlementSubNo()); query.eq(StringUtils.isNotBlank(param.getSettlementSubNo()),SettlementOwnerDetail :: getSettlementSubNo,param.getSettlementSubNo());
return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query); return baseMapper.selectPage(Page.of(param.getPage(), param.getPageSize()),query);
} }
@Override
public void updateSettlementMerge(String settlementNo, List<String> settlementNos) {
update(lUdWrapper()
.in(SettlementOwnerDetail::getSettlementNo, settlementNos)
.setSql("settlement_sub_no = settlement_no")
.set(SettlementOwnerDetail :: getSettlementNo,settlementNo)
);
}
} }
...@@ -61,6 +61,8 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl ...@@ -61,6 +61,8 @@ public interface SettlementOwnerDao extends BaseDao<SettlementOwnerMapper, Settl
@Param("fromStatus")Integer fromStatus, @Param("fromStatus")Integer fromStatus,
@Param("toStatus")Integer toStatus); @Param("toStatus")Integer toStatus);
void updateSettlementMerge(@Param("settlementNo")String settlementNo,
@Param("settlementNos")List<String> settlementNos,
@Param("mergedBy") String mergedBy,
@Param("mergeTime") LocalDateTime mergeTime);
} }
...@@ -44,4 +44,6 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM ...@@ -44,4 +44,6 @@ public interface SettlementOwnerDetailDao extends BaseDao<SettlementOwnerDetailM
void updateFinalPaymentStatusBySettlementNoForOnline(String settlementNo, Integer finalPaymentStatus); void updateFinalPaymentStatusBySettlementNoForOnline(String settlementNo, Integer finalPaymentStatus);
List<SettlementOwnerDetail> selectListByOrderNo(String orderNo); List<SettlementOwnerDetail> selectListByOrderNo(String orderNo);
void updateSettlementMerge(String settlementNo, List<String> settlementNos);
} }
package com.clx.performance.mapper.settle; package com.clx.performance.mapper.settle;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.settle.SettlementOwner; import com.clx.performance.model.settle.SettlementOwner;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
@Mapper @Mapper
public interface SettlementOwnerMapper extends BaseMapper<SettlementOwner> { public interface SettlementOwnerMapper extends BaseMapper<SettlementOwner> {
} }
\ No newline at end of file
...@@ -66,6 +66,7 @@ public class SettlementOwner implements HasKey<Integer> { ...@@ -66,6 +66,7 @@ public class SettlementOwner implements HasKey<Integer> {
private Integer status; //状态 private Integer status; //状态
private String remark; //备注 private String remark; //备注
private Integer mergeStatus; //是否合并 0-否,1-是 private Integer mergeStatus; //是否合并 0-否,1-是
private Integer mergeSettlementFlag; //合并结算单标志 1:普通结算单 2:合并结算单
private String mergedBy; //合并人 private String mergedBy; //合并人
private LocalDateTime mergeTime; //合并结算单时间 private LocalDateTime mergeTime; //合并结算单时间
private LocalDateTime createTime; //创建时间 private LocalDateTime createTime; //创建时间
......
...@@ -2,10 +2,7 @@ package com.clx.performance.service; ...@@ -2,10 +2,7 @@ package com.clx.performance.service;
import com.clx.performance.dto.zjxl.TruckCoordinateDTO; import com.clx.performance.dto.zjxl.TruckCoordinateDTO;
import com.clx.performance.dto.zjxl.TruckTraceDTO; import com.clx.performance.dto.zjxl.TruckTraceDTO;
import com.clx.performance.param.pc.OrderGoodsTruckListParam; import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.param.pc.TruckTraceParam;
import com.clx.performance.vo.pc.OrderGoodsTruckListVO; import com.clx.performance.vo.pc.OrderGoodsTruckListVO;
import com.clx.performance.vo.pc.PageTruckListVO; import com.clx.performance.vo.pc.PageTruckListVO;
import com.clx.performance.vo.pc.TruckTraceVO; import com.clx.performance.vo.pc.TruckTraceVO;
...@@ -37,4 +34,6 @@ public interface TruckService { ...@@ -37,4 +34,6 @@ public interface TruckService {
List<OrderGoodsTruckListVO> getOrderGoodsTruckList(OrderGoodsTruckListParam param); List<OrderGoodsTruckListVO> getOrderGoodsTruckList(OrderGoodsTruckListParam param);
List<TruckTraceVO> getTruckTrace(TruckTraceParam param); List<TruckTraceVO> getTruckTrace(TruckTraceParam param);
List<String> judgeTruckStatus(JudgeTruckStatusParam param);
} }
...@@ -32,4 +32,5 @@ public interface BreakContractDriverRecordService { ...@@ -32,4 +32,5 @@ public interface BreakContractDriverRecordService {
BigDecimal getBreakContractFigure(String childNo); BigDecimal getBreakContractFigure(String childNo);
Integer getChildTruckDemand(String childNo);
} }
...@@ -11,10 +11,7 @@ import com.clx.performance.enums.DriverTruckEnum; ...@@ -11,10 +11,7 @@ import com.clx.performance.enums.DriverTruckEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum; import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.job.TruckTraceJob; import com.clx.performance.job.TruckTraceJob;
import com.clx.performance.model.OrderGoodsTruckBind; import com.clx.performance.model.OrderGoodsTruckBind;
import com.clx.performance.param.pc.OrderGoodsTruckListParam; import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.PageTruckListParam;
import com.clx.performance.param.pc.PageVicinityTruckListParam;
import com.clx.performance.param.pc.TruckTraceParam;
import com.clx.performance.service.TruckService; import com.clx.performance.service.TruckService;
import com.clx.performance.utils.RedisGeoUntil; import com.clx.performance.utils.RedisGeoUntil;
import com.clx.performance.utils.zjxl.ZjxlGpsService; import com.clx.performance.utils.zjxl.ZjxlGpsService;
...@@ -268,9 +265,7 @@ public class TruckServiceImpl implements TruckService { ...@@ -268,9 +265,7 @@ public class TruckServiceImpl implements TruckService {
} }
Map<String,Integer> truckStatusMap = new HashMap<>(); Map<String,Integer> truckStatusMap = new HashMap<>();
result.getData().stream().forEach(item->{ result.getData().forEach(item-> truckStatusMap.put(item.getTruckNo(),item.getTruckOrderStatus()));
truckStatusMap.put(item.getTruckNo(),item.getTruckOrderStatus());
});
return truckStatusMap; return truckStatusMap;
} }
...@@ -399,4 +394,18 @@ public class TruckServiceImpl implements TruckService { ...@@ -399,4 +394,18 @@ public class TruckServiceImpl implements TruckService {
} }
return result; return result;
} }
@Override
public List<String> judgeTruckStatus(JudgeTruckStatusParam param) {
Map<String,Integer> truckStatusMap = this.getTruckStatusMap();
Set<String> set = new HashSet<>(param.getTruckNoList());
List<OrderGoodsTruckBind> binds = orderGoodsTruckBindDao.judgeTruckIsBindDxOrder(set);
List<String> occupyTruckList = binds.stream().map(OrderGoodsTruckBind::getTruckNo).collect(Collectors.toList());
param.getTruckNoList().forEach(truckNo->{
if (!occupyTruckList.contains(truckNo) && Objects.equals(DriverTruckEnum.TruckOrderStatus.ORDER_HEAVY.getCode(), truckStatusMap.get(truckNo))) {
occupyTruckList.add(truckNo);
}
});
return occupyTruckList;
}
} }
...@@ -8,6 +8,7 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao; ...@@ -8,6 +8,7 @@ import com.clx.performance.dao.breakcontract.BreakContractDriverRecordDao;
import com.clx.performance.dao.breakcontract.BreakContractDriverRuleDao; import com.clx.performance.dao.breakcontract.BreakContractDriverRuleDao;
import com.clx.performance.enums.BreakContractRecordEnum; import com.clx.performance.enums.BreakContractRecordEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.TruckDemandEnum;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.breakcontract.BreakContractDriverRecord; import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
...@@ -134,6 +135,12 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive ...@@ -134,6 +135,12 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
@Override @Override
public void saveDriverRecordOfOrderChildCancel(OrderChild orderChild, Long createBy, String createName) { public void saveDriverRecordOfOrderChildCancel(OrderChild orderChild, Long createBy, String createName) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo())
.orElseThrow(PerformanceResultEnum.ORDER_GOODS_NO_FOUND);
//自由车辆的货单,不产生违约
if(Objects.equals(orderGoods.getTruckDemand(), TruckDemandEnum.TruckType.OWNER_CAR.getCode())){
return;
}
BreakContractDriverRecord record = new BreakContractDriverRecord(); BreakContractDriverRecord record = new BreakContractDriverRecord();
BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull(); BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull();
...@@ -170,7 +177,11 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive ...@@ -170,7 +177,11 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
BreakContractDriverRecord record = new BreakContractDriverRecord(); BreakContractDriverRecord record = new BreakContractDriverRecord();
// 1小时内不违约 // 1小时内不违约
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_GOODS_NO_FOUND);
//自由车辆的货单,不产生违约
if(Objects.equals(orderGoods.getTruckDemand(), TruckDemandEnum.TruckType.OWNER_CAR.getCode())){
return;
}
if (!orderChild.getPayTime().plusHours(1).isBefore(orderGoods.getLastArriveReceiveTime())){return;} if (!orderChild.getPayTime().plusHours(1).isBefore(orderGoods.getLastArriveReceiveTime())){return;}
BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull(); BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull();
...@@ -204,7 +215,11 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive ...@@ -204,7 +215,11 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
@Override @Override
public void saveDriverRecordOfArriveReceiveAddress(OrderChild orderChild, Long createBy, String createName) { public void saveDriverRecordOfArriveReceiveAddress(OrderChild orderChild, Long createBy, String createName) {
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND); OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_GOODS_NO_FOUND);
//自由车辆的货单,不产生违约
if(Objects.equals(orderGoods.getTruckDemand(), TruckDemandEnum.TruckType.OWNER_CAR.getCode())){
return;
}
if (!orderChild.getArriveReceiveTime().isAfter(orderGoods.getLastArriveReceiveTime())) {return;} if (!orderChild.getArriveReceiveTime().isAfter(orderGoods.getLastArriveReceiveTime())) {return;}
BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull(); BreakContractDriverRule rule = breakContractDriverRuleDao.getEntityByKey(1).orNull();
...@@ -292,4 +307,13 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive ...@@ -292,4 +307,13 @@ public class BreakContractDriverRecordServiceImpl implements BreakContractDrive
return money.movePointRight(2); return money.movePointRight(2);
} }
@Override
public Integer getChildTruckDemand(String childNo) {
OrderChild child = orderChildDao.getByChildNo(childNo).orElseThrow(PerformanceResultEnum.ORDER_CHILD_NO_FOUND);
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(child.getOrderGoodsNo()).orElseThrow(PerformanceResultEnum.ORDER_GOODS_NO_FOUND);
if(Objects.equals(orderGoods.getTruckDemand(),TruckDemandEnum.TruckType.OWNER_CAR.getCode())){
return 1;
}
return 0;
}
} }
...@@ -51,7 +51,6 @@ import java.math.BigDecimal; ...@@ -51,7 +51,6 @@ import java.math.BigDecimal;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.UUID;
@Slf4j @Slf4j
@Service @Service
...@@ -105,6 +104,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -105,6 +104,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq) { public void settlementDetailInvoiceTypeSync(SettlementDetailInvoiceTypeSyncMqParam mq) {
...@@ -448,7 +448,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -448,7 +448,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic
/** /**
* 创建结算单号 * 创建结算单号
*/ */
private String settlementNoGenerate(){ public String settlementNoGenerate(){
return uniqueOrderNumService.getUniqueOrderNum(com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), com.msl.common.utils.LocalDateTimeUtils.DATE_DAY)); return uniqueOrderNumService.getUniqueOrderNum(com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToString(LocalDateTime.now(), com.msl.common.utils.LocalDateTimeUtils.DATE_DAY));
} }
......
...@@ -19,6 +19,7 @@ import com.clx.performance.model.settle.SettlementPlatformAccount; ...@@ -19,6 +19,7 @@ import com.clx.performance.model.settle.SettlementPlatformAccount;
import com.clx.performance.param.pc.owner.*; import com.clx.performance.param.pc.owner.*;
import com.clx.performance.service.OwnerAccountService; import com.clx.performance.service.OwnerAccountService;
import com.clx.performance.service.settle.SettlementLogService; import com.clx.performance.service.settle.SettlementLogService;
import com.clx.performance.service.settle.SettlementMqHandlerService;
import com.clx.performance.service.settle.SettlementOwnerService; import com.clx.performance.service.settle.SettlementOwnerService;
import com.clx.performance.struct.settle.SettlementLogStruct; import com.clx.performance.struct.settle.SettlementLogStruct;
import com.clx.performance.struct.settle.SettlementOwnerStruct; import com.clx.performance.struct.settle.SettlementOwnerStruct;
...@@ -40,6 +41,7 @@ import org.springframework.stereotype.Service; ...@@ -40,6 +41,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -71,6 +73,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -71,6 +73,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
private final OwnerAccountService ownerAccountService; private final OwnerAccountService ownerAccountService;
private final NetworkSyncComponent networkSyncComponent; private final NetworkSyncComponent networkSyncComponent;
private final SettlementMqHandlerService settlementMqHandlerService;
@Override @Override
public CarrierSettlementOwnerDetailVO getCarrierSettlementOwnerDetail(Integer id) { public CarrierSettlementOwnerDetailVO getCarrierSettlementOwnerDetail(Integer id) {
...@@ -537,4 +542,84 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -537,4 +542,84 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
} }
@Transactional(rollbackFor = Exception.class)
@Override
public void mergeOwnerSettlement(MergeOwnerSettlementParam param) {
UserSessionData loginUserInfo = TokenUtil.getLoginUserInfo();
LocalDateTime now = LocalDateTime.now();
//查询结算单数据
List<SettlementOwner> settlementOwnersList = settlementOwnerDao.listInField(SettlementOwner :: getId,param.getList());
if(!Objects.equals(param.getList().size(),settlementOwnersList.size())){
log.warn("查询的货主结算单数据和实际查询出来的货主结算单数量不一致,结算单id集合:{}",param.getList());
throw new ServiceSystemException(PerformanceResultEnum.DATA_NOT_FIND);
}
//同一货主,同一开票标识,同一结算方式的结算单可支持手动合并
List<String> settlementNos = new ArrayList<>();
//货主编码
Long ownerUserNo = null;
//开票标识:1网运单 2普通单
Integer invoiceType = null;
//结算方式 1装车净重 2卸车净重
Integer settlementWay = null;
String tip = "数据错误,结算单状态“待对账”且同一货主,同一开票标识,同一结算方式的结算单支持合并";
SettlementOwner merge = null;
String settlementNo = settlementMqHandlerService.settlementNoGenerate();
for (SettlementOwner item : settlementOwnersList) {
if(Objects.equals(SettlementOwnerEnum.MergeSettlementFlag.MERGE.getCode(),item.getMergeSettlementFlag())
|| Objects.equals(SettlementOwnerEnum.MergeStatus.YES.getCode(),item.getMergeStatus())){
log.warn("货主结算单号:{} 结算单不允许二次合并",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,"结算单不允许二次合并");
}
if(Objects.equals(SettlementOwnerEnum.Status.TO_BE_ACCOUNT.getCode(),item.getStatus())){
log.warn("货主结算单号:{} 的结算状态非待对账",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
}
if(Objects.nonNull(ownerUserNo) && !Objects.equals(ownerUserNo,item.getOwnerUserNo())){
log.warn("货主结算单号:{} 在本批次中不属于同一货主",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
}
if(Objects.nonNull(invoiceType) && !Objects.equals(invoiceType,item.getInvoiceType())){
log.warn("货主结算单号:{} 在本批次中不属于同一开票标志",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
}
if(Objects.nonNull(settlementWay) && !Objects.equals(settlementWay,item.getSettlementWay())){
log.warn("货主结算单号:{} 在本批次中不属于同一结算方式",item.getSettlementNo());
throw new ServiceSystemException(PerformanceResultEnum.DATA_REPEAT,tip);
}
ownerUserNo = item.getOwnerUserNo();
invoiceType = item.getInvoiceType();
settlementWay = item.getSettlementWay();
settlementNos.add(item.getSettlementNo());
//合并数据
if(Objects.nonNull(merge)){
merge.setWeight(merge.getWeight().add(item.getWeight()));
merge.setFreight(merge.getFreight().add(item.getFreight()));
merge.setLossFreight(merge.getLossFreight().add(item.getLossFreight()));
merge.setLossWeight(merge.getLossWeight().add(item.getLossWeight()));
merge.setPrepayFreight(merge.getPrepayFreight().add(item.getPrepayFreight()));
merge.setSettlementFreight(merge.getSettlementFreight().add(item.getSettlementFreight()));
merge.setInvoiceFreight(merge.getInvoiceFreight().add(item.getInvoiceFreight()));
}else{
merge = item;
merge.setId(null);
merge.setSettlementNo(settlementNo);
merge.setSettlementSubNo(null);
merge.setMergedBy(loginUserInfo.getUserName());
merge.setMergeTime(LocalDateTime.now());
merge.setMergeSettlementFlag(SettlementOwnerEnum.MergeSettlementFlag.MERGE.getCode());
}
}
//更新结算单
settlementOwnerDao.updateSettlementMerge(settlementNo,settlementNos,loginUserInfo.getUserName(),now);
//插入合并单
settlementOwnerDao.saveEntity(merge);
//更新货主运单计费明细
settlementOwnerDetailDao.updateSettlementMerge(settlementNo,settlementNos);
}
} }
...@@ -14,4 +14,6 @@ public interface SettlementMqHandlerService { ...@@ -14,4 +14,6 @@ public interface SettlementMqHandlerService {
String paySettlementDriver(SettlementDriverDetail detail); String paySettlementDriver(SettlementDriverDetail detail);
String settlementNoGenerate();
} }
...@@ -54,4 +54,6 @@ public interface SettlementOwnerService { ...@@ -54,4 +54,6 @@ public interface SettlementOwnerService {
void payeeConfirm(String settlementNo); void payeeConfirm(String settlementNo);
void invoicingStatusNotify(InvoicingStatusNotifyDTO invoicingStatusNotifyDTO); void invoicingStatusNotify(InvoicingStatusNotifyDTO invoicingStatusNotifyDTO);
void mergeOwnerSettlement(MergeOwnerSettlementParam param);
} }
package com.clx.performance.sqlProvider.settle;
/**
* @ClassName SettlementOwnerSqlProvider
* @Description
* @Author kavin
* @Date 2023/12/19 10:34
* @Version 1.0
*/
public class SettlementOwnerSqlProvider {
}
...@@ -23,6 +23,8 @@ public interface SettlementOwnerStruct { ...@@ -23,6 +23,8 @@ public interface SettlementOwnerStruct {
CarrierSettlementOwnerDetailVO convertToDetail(SettlementOwner settlementOwner); CarrierSettlementOwnerDetailVO convertToDetail(SettlementOwner settlementOwner);
@Mapping(target = "settlementNo", source = "settlementSubNo")
@Mapping(target = "settlementSubNo", source = "settlementNo")
List<SettlementMergeVO> convertToMergeList(List<SettlementOwner> settlementOwners); List<SettlementMergeVO> convertToMergeList(List<SettlementOwner> settlementOwners);
List<CarrierPageSettlementOwnerVO> convertCarrierList(List<SettlementOwner> settlementOwners); List<CarrierPageSettlementOwnerVO> convertCarrierList(List<SettlementOwner> settlementOwners);
...@@ -38,4 +40,8 @@ public interface SettlementOwnerStruct { ...@@ -38,4 +40,8 @@ public interface SettlementOwnerStruct {
CarrierSettlementOwnerExpressVO convertToExpress(SettlementOwner settlementOwner); CarrierSettlementOwnerExpressVO convertToExpress(SettlementOwner settlementOwner);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论