提交 307fcd1c authored 作者: liuhaiquan's avatar liuhaiquan

结算单合并接口开发

上级 84736271
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;
}
...@@ -130,5 +130,12 @@ public class CarrierSettlementOwnerController { ...@@ -130,5 +130,12 @@ 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(MergeOwnerSettlementParam param) {
settlementOwnerService.mergeOwnerSettlement(param);
return Result.ok();
}
} }
...@@ -27,6 +27,7 @@ public class SettlementOwner implements HasKey<Integer> { ...@@ -27,6 +27,7 @@ public class SettlementOwner implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO) @TableId(value = "id", type = IdType.AUTO)
private Integer id; //id private Integer id; //id
private Integer mergeSettlement; //是否是合并单 0:否 1:是
private Long ownerUserNo; //货主用户编号 private Long ownerUserNo; //货主用户编号
private String ownerName; //货主名称 private String ownerName; //货主名称
private Integer settlementWay; //结算方式 1装车净重 2卸车净重 private Integer settlementWay; //结算方式 1装车净重 2卸车净重
......
...@@ -41,13 +41,11 @@ import lombok.extern.slf4j.Slf4j; ...@@ -41,13 +41,11 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
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 java.math.BigDecimal; 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
...@@ -95,6 +93,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -95,6 +93,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) {
...@@ -404,7 +403,7 @@ public class SettlementMqHandlerServiceImpl implements SettlementMqHandlerServic ...@@ -404,7 +403,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));
} }
......
...@@ -18,6 +18,7 @@ import com.clx.performance.model.settle.SettlementPlatformAccount; ...@@ -18,6 +18,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;
...@@ -69,6 +70,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -69,6 +70,9 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
private final OwnerAccountService ownerAccountService; private final OwnerAccountService ownerAccountService;
private final SettlementMqHandlerService settlementMqHandlerService;
@Override @Override
public CarrierSettlementOwnerDetailVO getCarrierSettlementOwnerDetail(Integer id) { public CarrierSettlementOwnerDetailVO getCarrierSettlementOwnerDetail(Integer id) {
...@@ -490,5 +494,64 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService { ...@@ -490,5 +494,64 @@ public class SettlementOwnerServiceImpl implements SettlementOwnerService {
} }
} }
@Override
public void mergeOwnerSettlement(MergeOwnerSettlementParam param) {
//查询结算单数据
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 = checkMergeSettlementData(settlementOwnersList);
}
//检查合并的结算单是否符合合并条件
public List<String> checkMergeSettlementData(List<SettlementOwner> settlementOwnersList){
List<String> settlementNos = new ArrayList<>();
//货主编码
Long ownerUserNo = null;
//开票标识:1网运单 2普通单
Integer invoiceType = null;
//结算方式 1装车净重 2卸车净重
Integer settlementWay = null;
String tip = "数据错误,结算单状态“待对账”且同一货主,同一开票标识,同一结算方式的结算单支持合并";
SettlementOwner merge = null;
for (SettlementOwner item : settlementOwnersList) {
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(invoiceType,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)){
}else{
String settlementNo = settlementMqHandlerService.settlementNoGenerate();
merge = item;
merge.setSettlementNo(settlementNo);
merge.setSettlementSubNo(merge.getSettlementNo());
}
}
return settlementNos;
}
} }
...@@ -11,4 +11,6 @@ public interface SettlementMqHandlerService { ...@@ -11,4 +11,6 @@ public interface SettlementMqHandlerService {
void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg); void settlementDriverNotify(String childNo,Integer payType,String payErrorMsg);
String settlementNoGenerate();
} }
...@@ -52,5 +52,5 @@ public interface SettlementOwnerService { ...@@ -52,5 +52,5 @@ public interface SettlementOwnerService {
void payeeConfirm(String settlementNo); void payeeConfirm(String settlementNo);
void mergeOwnerSettlement(MergeOwnerSettlementParam param);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论