提交 1d32573e authored 作者: wejack639's avatar wejack639

feature(运单):运单详情接口和货单详情接口增加货源地信息

...@@ -43,10 +43,10 @@ public enum PerformanceProgressEnum { ...@@ -43,10 +43,10 @@ public enum PerformanceProgressEnum {
TODAY_EXPECT_COMPLETE(1, "今日预计完成吨数"), TODAY_EXPECT_COMPLETE(1, "今日预计完成吨数"),
TRADE_REQUIRE_ARRIVE_STATION_TIME(2, "交易要求到站时间"), TRADE_REQUIRE_ARRIVE_STATION_TIME(2, "交易要求到站时间"),
TRANSPORT_EXPECT_ARRIVE_STATION_TIME(3, "调度备注/跟进措施"), TRANSPORT_EXPECT_ARRIVE_STATION_TIME(3, "物流预计到站时间"),
ABNORMAL_REMARK(4, "异常备注"), ABNORMAL_REMARK(4, "异常备注"),
PERFORMANCE_ABNORMAL_REASON(5, "履约异常原因"), PERFORMANCE_ABNORMAL_REASON(5, "履约异常原因"),
DISPATCH_FOLLOW(6, "物流预计到站时间"), DISPATCH_FOLLOW(6, "调度备注/跟进措施"),
; ;
private final Integer code; private final Integer code;
......
...@@ -230,4 +230,21 @@ public class OrderChildVO { ...@@ -230,4 +230,21 @@ public class OrderChildVO {
@ApiModelProperty("接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示") @ApiModelProperty("接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示")
private Integer goodsOrderDetailShow = 0; private Integer goodsOrderDetailShow = 0;
/* 20240730 增加货源地信息 */
@ApiModelProperty(value = "货源地现场联系人")
private String sendContact;
@ApiModelProperty(value = "货源地联系人手机号")
private String sendContactPhone;
@ApiModelProperty(value = "发货-是否需要系统排队 0 否 1 是")
private Integer sendWaitSystem;
@ApiModelProperty(value = "发货-排队系统名称")
private String sendWaitSystemName;
@ApiModelProperty(value = "发货-排队系统形式 1:小程序 2:app")
private Integer sendWaitMode;
} }
\ No newline at end of file
...@@ -170,4 +170,20 @@ public class OrderGoodsVO { ...@@ -170,4 +170,20 @@ public class OrderGoodsVO {
@ApiModelProperty("接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示") @ApiModelProperty("接单保证金 平台服务费费率 弹窗和文案显示 0 不显示 1 显示")
private Integer goodsOrderDetailShow = 0; private Integer goodsOrderDetailShow = 0;
/* 20240730 增加货源地信息 */
@ApiModelProperty(value = "货源地现场联系人")
private String sendContact;
@ApiModelProperty(value = "货源地联系人手机号")
private String sendContactPhone;
@ApiModelProperty(value = "发货-是否需要系统排队 0 否 1 是")
private Integer sendWaitSystem;
@ApiModelProperty(value = "发货-排队系统名称")
private String sendWaitSystemName;
@ApiModelProperty(value = "发货-排队系统形式 1:小程序 2:app")
private Integer sendWaitMode;
} }
\ No newline at end of file
package com.clx.performance.vo.pc; package com.clx.performance.vo.pc;
import com.clx.performance.enums.OrderEnum; import com.clx.performance.enums.OrderEnum;
import com.msl.common.convertor.type.MoneyOutConvert;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
...@@ -81,6 +82,7 @@ public class PerformanceProgressVO{ ...@@ -81,6 +82,7 @@ public class PerformanceProgressVO{
} }
@ApiModelProperty("司机运费") @ApiModelProperty("司机运费")
@MoneyOutConvert
private BigDecimal driverFreightPrice; private BigDecimal driverFreightPrice;
...@@ -97,6 +99,9 @@ public class PerformanceProgressVO{ ...@@ -97,6 +99,9 @@ public class PerformanceProgressVO{
@ApiModelProperty("接单车数") @ApiModelProperty("接单车数")
private Integer orderedTruckNum; private Integer orderedTruckNum;
@ApiModelProperty("接单吨数")
private BigDecimal orderedWeight;
@ApiModelProperty("到达货源地车数") @ApiModelProperty("到达货源地车数")
private Integer arriveSendTruckNum; private Integer arriveSendTruckNum;
...@@ -171,6 +176,7 @@ public class PerformanceProgressVO{ ...@@ -171,6 +176,7 @@ public class PerformanceProgressVO{
@ApiModelProperty("测算运费") @ApiModelProperty("测算运费")
@MoneyOutConvert
private BigDecimal predictionFreightPrice; private BigDecimal predictionFreightPrice;
......
package com.clx.performance.constant;
import java.math.BigDecimal;
/**
* @ClassName BusinessConstants
* @Description
* @Author kavin
* @Date 2024/7/22 15:26
* @Version 1.0
*/
public class BusinessConstants {
//承运订单需要减去的吨数
public static final BigDecimal ORDER_SUB_WEIGHT = new BigDecimal("35");
}
...@@ -121,6 +121,7 @@ public class CarrierOrderChildController { ...@@ -121,6 +121,7 @@ public class CarrierOrderChildController {
@ApiOperation(value = "履约进度表-历史线路拉运量", notes = "<br>By:l刘海泉") @ApiOperation(value = "履约进度表-历史线路拉运量", notes = "<br>By:l刘海泉")
@GetMapping("/getHistoryLineTransportVolume") @GetMapping("/getHistoryLineTransportVolume")
@UnitCovert(param = false)
public Result<List<HistoryLineTranVolumeChartVO>> getHistoryLineTransportVolume(@NotBlank(message = "订单编号不能为空") String orderNo) { public Result<List<HistoryLineTranVolumeChartVO>> getHistoryLineTransportVolume(@NotBlank(message = "订单编号不能为空") String orderNo) {
return Result.ok(orderChildService.getHistoryLineTransportVolume(orderNo)); return Result.ok(orderChildService.getHistoryLineTransportVolume(orderNo));
} }
......
...@@ -19,4 +19,6 @@ public interface PerformanceProgressDao extends BaseDao<PerformanceProgressMappe ...@@ -19,4 +19,6 @@ public interface PerformanceProgressDao extends BaseDao<PerformanceProgressMappe
void updateRecordOrder(Long seq,boolean isUp); void updateRecordOrder(Long seq,boolean isUp);
long getMaxSeq(); long getMaxSeq();
void updatePerformanceProgress(PerformanceProgress update);
} }
...@@ -683,6 +683,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -683,6 +683,7 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
public List<OrderChild> listCompleteByOrderNos(List<String> orderNoList) { public List<OrderChild> listCompleteByOrderNos(List<String> orderNoList) {
return list(lQrWrapper() return list(lQrWrapper()
.in(OrderChild :: getOrderNo,orderNoList) .in(OrderChild :: getOrderNo,orderNoList)
.ge(OrderChild :: getStatus,OrderChildEnum.Status.LOAD.getCode())
.le(OrderChild :: getStatus,OrderChildEnum.Status.COMPLETE.getCode()) .le(OrderChild :: getStatus,OrderChildEnum.Status.COMPLETE.getCode())
); );
} }
......
...@@ -47,4 +47,17 @@ public class PerformanceProgressDaoImpl extends BaseDaoImpl<PerformanceProgressM ...@@ -47,4 +47,17 @@ public class PerformanceProgressDaoImpl extends BaseDaoImpl<PerformanceProgressM
LambdaQueryWrapper<PerformanceProgress> query = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PerformanceProgress> query = new LambdaQueryWrapper<>();
return baseMapper.selectCount(query); return baseMapper.selectCount(query);
} }
@Override
public void updatePerformanceProgress(PerformanceProgress update) {
LambdaUpdateWrapper<PerformanceProgress> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.eq(PerformanceProgress :: getId,update.getId());
updateWrapper.set(PerformanceProgress :: getTodayExpectComplete,update.getTodayExpectComplete());
updateWrapper.set(PerformanceProgress :: getTransportExpectArriveStationTime,update.getTransportExpectArriveStationTime());
updateWrapper.set(PerformanceProgress :: getTradeRequireArriveStationTime,update.getTradeRequireArriveStationTime());
updateWrapper.set(PerformanceProgress :: getAbnormalRemark,update.getAbnormalRemark());
updateWrapper.set(PerformanceProgress :: getPerformanceAbnormalReason,update.getPerformanceAbnormalReason());
updateWrapper.set(PerformanceProgress :: getDispatchFollow,update.getDispatchFollow());
baseMapper.update(null,updateWrapper);
}
} }
...@@ -11,5 +11,8 @@ public interface AddressService { ...@@ -11,5 +11,8 @@ public interface AddressService {
Optional<SystemAddressVO> getSystemAddress(Integer addressId); Optional<SystemAddressVO> getSystemAddress(Integer addressId);
String generateAddressDetail(String ... args);
} }
...@@ -8,6 +8,7 @@ import com.msl.common.base.Optional; ...@@ -8,6 +8,7 @@ import com.msl.common.base.Optional;
import com.msl.common.result.Result; import com.msl.common.result.Result;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@Service @Service
...@@ -29,4 +30,18 @@ public class AddressServiceImpl implements AddressService { ...@@ -29,4 +30,18 @@ public class AddressServiceImpl implements AddressService {
.filter(Result::succeed) .filter(Result::succeed)
.map(Result::getData); .map(Result::getData);
} }
@Override
public String generateAddressDetail(String ... args) {
StringBuilder sb = new StringBuilder();
String detail = args[args.length-1];
for (String arg : args) {
if(StringUtils.isNotBlank(arg) && !detail.contains(arg)){
sb.append(arg);
}
}
sb.append(detail);
return sb.toString();
}
} }
...@@ -131,7 +131,7 @@ public class OrderGoodsDtsListener { ...@@ -131,7 +131,7 @@ public class OrderGoodsDtsListener {
//货单状态发生变化(从已挂单变成挂单中) //货单状态发生变化(从已挂单变成挂单中)
( (
(Objects.equals(before.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.CREATED.getCode()) && (Objects.equals(before.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.CREATED.getCode()) &&
Objects.equals(before.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.PAYING.getCode())) Objects.equals(after.getOrderGoodsStatus(),OrderGoodsStatusEnum.Status.PAYING.getCode()))
|| //挂单中之后的状态的挂单运费发生变化 || //挂单中之后的状态的挂单运费发生变化
(after.getOrderGoodsStatus() >= OrderGoodsStatusEnum.Status.PAYING.getCode() && (after.getOrderGoodsStatus() >= OrderGoodsStatusEnum.Status.PAYING.getCode() &&
!Objects.equals(before.getPendingOrderFreight(),after.getPendingOrderFreight())) !Objects.equals(before.getPendingOrderFreight(),after.getPendingOrderFreight()))
......
...@@ -96,7 +96,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> { ...@@ -96,7 +96,7 @@ public interface OrderGoodsMapper extends BaseMapper<OrderGoods> {
@Param("receiveAddressId") Integer receiveAddressId); @Param("receiveAddressId") Integer receiveAddressId);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "indexOrderGoodsListSearch") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "indexOrderGoodsListSearch")
IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(@Param("page")Page<OrderGoodsAPPVO> page, @Param("param")AppGoodsOrderSearchParam param); IPage<OrderGoodsAPPVO> indexOrderGoodsListSearch(@Param("page")Page<OrderGoodsAPPVO> page, @Param("param") AppGoodsOrderSearchParam param);
@SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList") @SelectProvider(type = OrderGoodsSqlProvider.class, method = "queryProcessFleetOpenTruckList")
......
...@@ -101,6 +101,11 @@ public class PerformanceProgress implements HasKey<Integer> { ...@@ -101,6 +101,11 @@ public class PerformanceProgress implements HasKey<Integer> {
@ApiModelProperty("接单车数") @ApiModelProperty("接单车数")
private Integer orderedTruckNum; private Integer orderedTruckNum;
@TableField("ordered_weight")
@ApiModelProperty("接单吨数")
private BigDecimal orderedWeight;
@TableField("arrive_send_truck_num") @TableField("arrive_send_truck_num")
@ApiModelProperty("到达货源地车数") @ApiModelProperty("到达货源地车数")
private Integer arriveSendTruckNum; private Integer arriveSendTruckNum;
...@@ -117,14 +122,6 @@ public class PerformanceProgress implements HasKey<Integer> { ...@@ -117,14 +122,6 @@ public class PerformanceProgress implements HasKey<Integer> {
@ApiModelProperty("在途车数") @ApiModelProperty("在途车数")
private Integer onTheWayTruckNum; private Integer onTheWayTruckNum;
@TableField("ordered_rate")
@ApiModelProperty("接单率")
private BigDecimal orderedRate;
@TableField("task_complete_ratio")
@ApiModelProperty("任务完成率")
private BigDecimal taskCompleteRatio;
@TableField("sum_load_weight") @TableField("sum_load_weight")
@ApiModelProperty("矿发吨数") @ApiModelProperty("矿发吨数")
private BigDecimal sumLoadWeight; private BigDecimal sumLoadWeight;
......
...@@ -9,6 +9,7 @@ import com.clx.order.enums.ResultEnum; ...@@ -9,6 +9,7 @@ import com.clx.order.enums.ResultEnum;
import com.clx.order.enums.*; import com.clx.order.enums.*;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.vo.feign.FeignAddressVO; import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderDetailVO;
import com.clx.order.vo.feign.FeignOrderInfoVO; import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.carrier.InvoicingCompanyVO; import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
...@@ -32,7 +33,10 @@ import com.clx.performance.enums.*; ...@@ -32,7 +33,10 @@ import com.clx.performance.enums.*;
import com.clx.performance.enums.settle.SettlementWayEnum; import com.clx.performance.enums.settle.SettlementWayEnum;
import com.clx.performance.extranal.order.InvoicingCompanyService; import com.clx.performance.extranal.order.InvoicingCompanyService;
import com.clx.performance.extranal.order.QuotationService; import com.clx.performance.extranal.order.QuotationService;
import com.clx.performance.extranal.user.*; import com.clx.performance.extranal.user.AddressService;
import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.extranal.user.OrderService;
import com.clx.performance.extranal.user.OwnerInfoService;
import com.clx.performance.feign.FeignPaymentService; import com.clx.performance.feign.FeignPaymentService;
import com.clx.performance.model.*; import com.clx.performance.model.*;
import com.clx.performance.model.breakcontract.BreakContractDriverRecord; import com.clx.performance.model.breakcontract.BreakContractDriverRecord;
...@@ -60,8 +64,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService; ...@@ -60,8 +64,6 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService;
import com.clx.performance.vo.app.*; import com.clx.performance.vo.app.*;
import com.clx.performance.vo.app.owner.OwnerOrderChildVO; import com.clx.performance.vo.app.owner.OwnerOrderChildVO;
import com.clx.performance.vo.pc.*; import com.clx.performance.vo.pc.*;
import com.clx.performance.vo.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverVO;
import com.clx.performance.vo.pc.carrier.settle.CarrierPagePlatformServiceFeeConfigVO;
import com.clx.user.enums.driver.DriverInfoEnum; import com.clx.user.enums.driver.DriverInfoEnum;
import com.clx.user.feign.DocumentFeign; import com.clx.user.feign.DocumentFeign;
import com.clx.user.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
...@@ -88,8 +90,8 @@ import org.apache.commons.collections4.CollectionUtils; ...@@ -88,8 +90,8 @@ import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.exception.ExceptionUtils; import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
import org.springframework.amqp.core.AmqpTemplate; import org.springframework.amqp.core.AmqpTemplate;
...@@ -1724,6 +1726,18 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1724,6 +1726,18 @@ public class OrderChildServiceImpl implements OrderChildService {
} }
//查询进行中的运单车辆是否开启了中交兴路 //查询进行中的运单车辆是否开启了中交兴路
result.setNotOpenZJXLMsg(isOpenZJXL(orderChild.getStatus(),orderChild.getTruckNo())); result.setNotOpenZJXLMsg(isOpenZJXL(orderChild.getStatus(),orderChild.getTruckNo()));
// 设置货源地信息
Result<FeignOrderDetailVO> orderDetailFeignResult = orderFeign.getOrderDetail(orderChild.getOrderNo());
if (orderDetailFeignResult != null && orderDetailFeignResult.getData() != null) {
FeignOrderDetailVO orderDetailFeign = orderDetailFeignResult.getData();
//货源地信息
result.setSendContact(orderDetailFeign.getSendContact());
result.setSendContactPhone(orderDetailFeign.getSendContactPhone());
result.setSendWaitSystem(orderDetailFeign.getSendWaitSystem());
result.setSendWaitSystemName(orderDetailFeign.getSendWaitSystemName());
result.setSendWaitMode(orderDetailFeign.getSendWaitMode());
}
return result; return result;
} }
......
...@@ -11,6 +11,7 @@ import com.clx.order.enums.VehicleUsageEnum; ...@@ -11,6 +11,7 @@ import com.clx.order.enums.VehicleUsageEnum;
import com.clx.order.feign.OrderFeign; import com.clx.order.feign.OrderFeign;
import com.clx.order.param.feign.OrderCancelReasonParam; import com.clx.order.param.feign.OrderCancelReasonParam;
import com.clx.order.param.feign.RollbackOrderWeightParam; import com.clx.order.param.feign.RollbackOrderWeightParam;
import com.clx.order.vo.feign.FeignOrderDetailVO;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO; import com.clx.order.vo.pc.owner.OwnerQuotationDetailVO;
import com.clx.performance.component.GoodsOrderTruckRecordComponent; import com.clx.performance.component.GoodsOrderTruckRecordComponent;
...@@ -177,7 +178,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea ...@@ -177,7 +178,16 @@ public class OrderGoodsServiceImpl implements OrderGoodsService, InitializingBea
InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) { InvoicingCompanyEnum.TaxType.TAX_EXCLUDED.getCode())) {
orderGoodsVO.setGoodsOrderDetailShow(1); orderGoodsVO.setGoodsOrderDetailShow(1);
} }
Result<FeignOrderDetailVO> orderDetailFeignResult = orderFeign.getOrderDetail(orderNo);
if (orderDetailFeignResult != null && orderDetailFeignResult.getData() != null) {
FeignOrderDetailVO orderDetailFeign = orderDetailFeignResult.getData();
//货源地信息
orderGoodsVO.setSendContact(orderDetailFeign.getSendContact());
orderGoodsVO.setSendContactPhone(orderDetailFeign.getSendContactPhone());
orderGoodsVO.setSendWaitSystem(orderDetailFeign.getSendWaitSystem());
orderGoodsVO.setSendWaitSystemName(orderDetailFeign.getSendWaitSystemName());
orderGoodsVO.setSendWaitMode(orderDetailFeign.getSendWaitMode());
}
return orderGoodsVO; return orderGoodsVO;
} }
......
...@@ -6,6 +6,8 @@ import com.clx.performance.service.PerformanceProgressLogService; ...@@ -6,6 +6,8 @@ import com.clx.performance.service.PerformanceProgressLogService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Objects;
/** /**
* @author kavin * @author kavin
* Date 2024-07-12 * Date 2024-07-12
...@@ -20,7 +22,7 @@ public class PerformanceProgressLogServiceImpl implements PerformanceProgressLo ...@@ -20,7 +22,7 @@ public class PerformanceProgressLogServiceImpl implements PerformanceProgressLo
PerformanceProgressLog log = new PerformanceProgressLog(); PerformanceProgressLog log = new PerformanceProgressLog();
log.setOrderNo(orderNo); log.setOrderNo(orderNo);
log.setOperateType(logType.getCode()); log.setOperateType(logType.getCode());
log.setOperateContent(logType.getName() + ":" + content); log.setOperateContent(logType.getName() + ":" + (Objects.isNull(content)?"-":content));
log.setCreateBy(userNo); log.setCreateBy(userNo);
log.setCreateName(userName); log.setCreateName(userName);
return log; return log;
......
...@@ -7,6 +7,7 @@ import com.clx.open.sdk.callback.message.OrderInfoMessage; ...@@ -7,6 +7,7 @@ import com.clx.open.sdk.callback.message.OrderInfoMessage;
import com.clx.order.vo.feign.FeignAddressVO; import com.clx.order.vo.feign.FeignAddressVO;
import com.clx.order.vo.feign.FeignOrderInfoVO; import com.clx.order.vo.feign.FeignOrderInfoVO;
import com.clx.order.vo.feign.SystemAddressVO; import com.clx.order.vo.feign.SystemAddressVO;
import com.clx.performance.constant.BusinessConstants;
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.PerformanceProgressDao; import com.clx.performance.dao.PerformanceProgressDao;
...@@ -32,6 +33,7 @@ import com.clx.performance.utils.gd.GdService; ...@@ -32,6 +33,7 @@ import com.clx.performance.utils.gd.GdService;
import com.clx.performance.vo.pc.PerformanceProgressDetailVO; import com.clx.performance.vo.pc.PerformanceProgressDetailVO;
import com.clx.performance.vo.pc.PerformanceProgressOperationLogVO; import com.clx.performance.vo.pc.PerformanceProgressOperationLogVO;
import com.clx.performance.vo.pc.PerformanceProgressVO; import com.clx.performance.vo.pc.PerformanceProgressVO;
import com.google.common.base.Joiner;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.msl.common.exception.ServiceSystemException; import com.msl.common.exception.ServiceSystemException;
import com.msl.common.utils.DateUtils; import com.msl.common.utils.DateUtils;
...@@ -123,6 +125,25 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -123,6 +125,25 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
List<PerformanceProgressVO> records = performanceProgressStruct.convertList(page.getRecords()); List<PerformanceProgressVO> records = performanceProgressStruct.convertList(page.getRecords());
records.forEach(item->{
if(StringUtils.isNotBlank(item.getSeniorLogisticsManagerName())){
item.setSeniorLogisticsManagerName(Joiner.on(",")
.join(JSON.parseArray(item.getSeniorLogisticsManagerName())));
}
if(Objects.nonNull(item.getPendingWeight()) && Objects.nonNull(item.getOrderedWeight())){
item.setOrderedRate(calcOrderedRate(item.getOrderedWeight(),item.getPendingWeight()));
}
if(Objects.nonNull(item.getTaskWeight()) && Objects.nonNull(item.getSumUnloadWeight())){
//任务完成率 = 到站量 / 任务量+35
BigDecimal taskCompleteRatio = item.getSumUnloadWeight()
.divide(item.getTaskWeight().add(BusinessConstants.ORDER_SUB_WEIGHT),
3, RoundingMode.HALF_UP).multiply(new BigDecimal(100));
item.setTaskCompleteRatio(taskCompleteRatio);
}
}
);
returnPage.setPages(page.getPages()); returnPage.setPages(page.getPages());
returnPage.setTotal(page.getTotal()); returnPage.setTotal(page.getTotal());
returnPage.setRecords(records); returnPage.setRecords(records);
...@@ -193,37 +214,48 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -193,37 +214,48 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
public void updatePerformanceProgress(UpdatePerformanceProgressParam param, Long userNo, String userName) { public void updatePerformanceProgress(UpdatePerformanceProgressParam param, Long userNo, String userName) {
PerformanceProgress item = performanceProgressDao.getEntityByKey(param.getId()). PerformanceProgress item = performanceProgressDao.getEntityByKey(param.getId()).
orElseThrow(ResultEnum.DATA_NOT_FIND); orElseThrow(ResultEnum.DATA_NOT_FIND);
PerformanceProgress update = new PerformanceProgress();
update.setId(param.getId());
List<PerformanceProgressLog> logs = new ArrayList<>(); List<PerformanceProgressLog> logs = new ArrayList<>();
boolean change = false; boolean change = false;
BigDecimal todayExpectComplete = Objects.nonNull(item.getTodayExpectComplete()) BigDecimal todayExpectComplete = Objects.nonNull(item.getTodayExpectComplete())
?item.getTodayExpectComplete():BigDecimal.ZERO; ?item.getTodayExpectComplete():BigDecimal.ZERO;
if(Objects.nonNull(param.getTodayExpectComplete()) if(Objects.nonNull(param.getTodayExpectComplete())){
&& todayExpectComplete.compareTo(param.getTodayExpectComplete()) != 0){ if(param.getTodayExpectComplete().compareTo(todayExpectComplete) != 0){
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.TODAY_EXPECT_COMPLETE, PerformanceProgressEnum.LogType.TODAY_EXPECT_COMPLETE,
param.getTodayExpectComplete(),userNo,userName); param.getTodayExpectComplete(),userNo,userName);
update.setTodayExpectComplete(param.getTodayExpectComplete());
logs.add(log); logs.add(log);
change = true; change = true;
} }
}else{
//今日预计完成吨数从有变成无
if(todayExpectComplete.compareTo(BigDecimal.ZERO) != 0){
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.TODAY_EXPECT_COMPLETE,
"-",userNo,userName);
logs.add(log);
change = true;
}
}
String tradeRequireArriveStationTime = StringUtils.isBlank(param.getTradeRequireArriveStationTime())
?null:param.getTradeRequireArriveStationTime();
if(!StringUtils.equals(item.getTradeRequireArriveStationTime(),param.getTradeRequireArriveStationTime())){ if(!StringUtils.equals(item.getTradeRequireArriveStationTime(),tradeRequireArriveStationTime)){
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.TRADE_REQUIRE_ARRIVE_STATION_TIME, PerformanceProgressEnum.LogType.TRADE_REQUIRE_ARRIVE_STATION_TIME,
param.getTradeRequireArriveStationTime(),userNo,userName); param.getTradeRequireArriveStationTime(),userNo,userName);
update.setTradeRequireArriveStationTime(param.getTradeRequireArriveStationTime());
logs.add(log); logs.add(log);
change = true; change = true;
} }
if(!StringUtils.equals(item.getTransportExpectArriveStationTime(),param.getTransportExpectArriveStationTime())){ String transportExpectArriveStationTime = StringUtils.isBlank(param.getTransportExpectArriveStationTime())
?null:param.getTransportExpectArriveStationTime();
if(!StringUtils.equals(item.getTransportExpectArriveStationTime(),transportExpectArriveStationTime)){
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.TRADE_REQUIRE_ARRIVE_STATION_TIME, PerformanceProgressEnum.LogType.TRANSPORT_EXPECT_ARRIVE_STATION_TIME,
param.getTransportExpectArriveStationTime(),userNo,userName); param.getTransportExpectArriveStationTime(),userNo,userName);
update.setTransportExpectArriveStationTime(param.getTransportExpectArriveStationTime());
logs.add(log); logs.add(log);
change = true; change = true;
} }
...@@ -232,7 +264,6 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -232,7 +264,6 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.ABNORMAL_REMARK, PerformanceProgressEnum.LogType.ABNORMAL_REMARK,
param.getAbnormalRemark(),userNo,userName); param.getAbnormalRemark(),userNo,userName);
update.setAbnormalRemark(param.getAbnormalRemark());
logs.add(log); logs.add(log);
change = true; change = true;
} }
...@@ -240,7 +271,6 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -240,7 +271,6 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.PERFORMANCE_ABNORMAL_REASON, PerformanceProgressEnum.LogType.PERFORMANCE_ABNORMAL_REASON,
param.getPerformanceAbnormalReason(),userNo,userName); param.getPerformanceAbnormalReason(),userNo,userName);
update.setPerformanceAbnormalReason(param.getPerformanceAbnormalReason());
logs.add(log); logs.add(log);
change = true; change = true;
} }
...@@ -248,17 +278,18 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -248,17 +278,18 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(), PerformanceProgressLog log = performanceProgressLogService.generateLog(item.getOrderNo(),
PerformanceProgressEnum.LogType.DISPATCH_FOLLOW, PerformanceProgressEnum.LogType.DISPATCH_FOLLOW,
param.getDispatchFollow(),userNo,userName); param.getDispatchFollow(),userNo,userName);
update.setDispatchFollow(param.getDispatchFollow());
logs.add(log); logs.add(log);
change = true; change = true;
} }
PerformanceProgress update = performanceProgressStruct.convertParam(param);
performanceProgressDao.updatePerformanceProgress(update);
if(change){ if(change){
performanceProgressDao.updateEntityByKey(update);
performanceProgressLogDao.saveBatchList(logs); performanceProgressLogDao.saveBatchList(logs);
} }
} }
@Override @Override
public PerformanceProgressDetailVO getPerformanceProgressDetail(Integer id) { public PerformanceProgressDetailVO getPerformanceProgressDetail(Integer id) {
PerformanceProgress item = performanceProgressDao.getEntityByKey(id).orElseThrow(ResultEnum.DATA_NOT_FIND); PerformanceProgress item = performanceProgressDao.getEntityByKey(id).orElseThrow(ResultEnum.DATA_NOT_FIND);
...@@ -279,7 +310,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -279,7 +310,7 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
performanceProgressDao.deleteByField(PerformanceProgress::getOrderNo,data.getOrderNo()); performanceProgressDao.deleteByField(PerformanceProgress::getOrderNo,data.getOrderNo());
} }
Optional<PerformanceProgress> optional = performanceProgressDao.getOneByField(PerformanceProgress::getOrderNo, Optional<PerformanceProgress> performanceProgressOptional = performanceProgressDao.getOneByField(PerformanceProgress::getOrderNo,
data.getOrderNo()); data.getOrderNo());
PerformanceProgress item = new PerformanceProgress(); PerformanceProgress item = new PerformanceProgress();
...@@ -290,23 +321,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -290,23 +321,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
item.setGoodsNameId(data.getGoodsNameId()); item.setGoodsNameId(data.getGoodsNameId());
item.setGoodsName(data.getGoodsName()); item.setGoodsName(data.getGoodsName());
item.setSendOverStandard(data.getOverWeight()); item.setSendOverStandard(data.getOverWeight());
item.setTaskWeight(data.getTransportWeight().subtract(new BigDecimal(35))); item.setTaskWeight(data.getTransportWeight().subtract(BusinessConstants.ORDER_SUB_WEIGHT));
item.setPendingWeight(data.getTransportWeight().subtract(data.getResidueWeight())); item.setPendingWeight(data.getTransportWeight().subtract(data.getResidueWeight()));
item.setTransportTimeSlot(DateUtils.formatDateTime(data.getTransportBeginTime()).get() + "至" + item.setTransportTimeSlot(DateUtils.formatDateTime(data.getTransportBeginTime()).get() + "至" +
DateUtils.formatDateTime(data.getTransportEndTime()).get()); DateUtils.formatDateTime(data.getTransportEndTime()).get());
if(Objects.equals(data.getOrderStatus(),OrderEnum.Status.COMPLETED.getCode()) ||
Objects.equals(data.getOrderStatus(),OrderEnum.Status.SUCCESS.getCode())
){
//TODO 计算测算运费
}
if(optional.isPresent()){ if(performanceProgressOptional.isPresent()){
item.setId(optional.get().getId()); item.setId(performanceProgressOptional.get().getId());
if(Objects.nonNull(data.getSendSystemAddressId()) && if(Objects.nonNull(data.getSendSystemAddressId()) &&
!Objects.equals(optional.get().getSendSystemAddressId(),data.getSendSystemAddressId())){ !Objects.equals(performanceProgressOptional.get().getSendSystemAddressId(),data.getSendSystemAddressId())){
item.setSendSystemAddressId(data.getSendSystemAddressId()); item.setSendSystemAddressId(data.getSendSystemAddressId());
item.setSendSystemAddressShorter(getSystemAddressShorter(data.getSendSystemAddressId())); item.setSendSystemAddressShorter(getSystemAddressShorter(data.getSendSystemAddressId()));
} }
...@@ -319,7 +344,8 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -319,7 +344,8 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
Optional<FeignAddressVO> sendAndReceiveAddress = addressService.getSendAndReceiveAddress( Optional<FeignAddressVO> sendAndReceiveAddress = addressService.getSendAndReceiveAddress(
data.getSendAddressId(), data.getReveiveAddressId()); data.getSendAddressId(), data.getReveiveAddressId());
if (!sendAndReceiveAddress.isPresent()) { if (Objects.isNull(sendAndReceiveAddress.get().getSendAddress()) ||
Objects.isNull(sendAndReceiveAddress.get().getReceiveAddress())) {
log.warn("通过发货地址Id:{},收货地址Id:{} 查询对应的地址信息结果:{}", log.warn("通过发货地址Id:{},收货地址Id:{} 查询对应的地址信息结果:{}",
data.getSendAddressId(),data.getReveiveAddressId(),sendAndReceiveAddress); data.getSendAddressId(),data.getReveiveAddressId(),sendAndReceiveAddress);
throw new ServiceSystemException(ResultEnum.DATA_ERROR,"履约进度表订单对应的收发货地址信息为空"); throw new ServiceSystemException(ResultEnum.DATA_ERROR,"履约进度表订单对应的收发货地址信息为空");
...@@ -348,8 +374,8 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -348,8 +374,8 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
} }
item.setSendAddressId(data.getSendAddressId()); item.setSendAddressId(data.getSendAddressId());
item.setSendAddressShorter(data.getSendAddressShorter()); item.setSendAddressShorter(data.getSendAddressShorter());
item.setSendAddress(sendAddress.getProvince()+sendAddress.getCity()+sendAddress.getCounty() item.setSendAddress(addressService.generateAddressDetail(sendAddress.getProvince(),
+ sendAddress.getAddress()); sendAddress.getCity(),sendAddress.getCounty(),sendAddress.getAddress()));
performanceProgressDao.saveEntity(item); performanceProgressDao.saveEntity(item);
} }
} }
...@@ -414,11 +440,10 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -414,11 +440,10 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
int loadTruckNum = 0; //装车车数 int loadTruckNum = 0; //装车车数
int unloadTruckNum = 0; //卸车车数 int unloadTruckNum = 0; //卸车车数
int onTheWayTruckNum ; // 在途车数 int onTheWayTruckNum ; // 在途车数
BigDecimal orderedRate; //接单率
BigDecimal taskCompleteRatio ; //任务完成率 BigDecimal taskCompleteRatio ; //任务完成率
BigDecimal sumLoadWeight = BigDecimal.ZERO; //矿发吨数 BigDecimal sumLoadWeight = BigDecimal.ZERO; //矿发吨数
BigDecimal sumUnloadWeight = BigDecimal.ZERO; //到站吨数 BigDecimal sumUnloadWeight = BigDecimal.ZERO; //到站吨数
BigDecimal sumOnTheWayWeight ; //在途吨数 BigDecimal sumOnTheWayWeight = BigDecimal.ZERO; //在途吨数
BigDecimal orderedWeight = BigDecimal.ZERO; //接单吨数 BigDecimal orderedWeight = BigDecimal.ZERO; //接单吨数
...@@ -436,22 +461,21 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -436,22 +461,21 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
if(child.getStatus() >= OrderChildEnum.Status.UNLOAD.getCode()){ if(child.getStatus() >= OrderChildEnum.Status.UNLOAD.getCode()){
unloadTruckNum = unloadTruckNum + 1; unloadTruckNum = unloadTruckNum + 1;
sumUnloadWeight = sumUnloadWeight.add(child.getWeight()); sumUnloadWeight = sumUnloadWeight.add(child.getWeight());
} }
if(Objects.equals(child.getStatus(), OrderChildEnum.Status.LOAD.getCode()) ||
Objects.equals(child.getStatus(), OrderChildEnum.Status.GO_TO_RECEIVE.getCode()) ||
Objects.equals(child.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())
){
sumOnTheWayWeight = sumOnTheWayWeight.add(child.getLoadNet());
} }
//在途吨数 = 矿发量 - 到站量 }
sumOnTheWayWeight = sumLoadWeight.subtract(sumUnloadWeight);
//在途车辆数 = 装车车数 - 卸车车数 //在途车辆数 = 装车车数 - 卸车车数
onTheWayTruckNum = loadTruckNum - unloadTruckNum; onTheWayTruckNum = loadTruckNum - unloadTruckNum;
//接单率 = 接单吨数 / 挂单吨数
orderedRate = orderedWeight .divide(optional.get().getPendingWeight(),3, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
//任务完成率 = 到站量 / 任务量
taskCompleteRatio = sumUnloadWeight.divide(orderInfo.getTransportWeight(),3, RoundingMode.HALF_UP)
.multiply(new BigDecimal(100));
PerformanceProgress update = new PerformanceProgress(); PerformanceProgress update = new PerformanceProgress();
...@@ -461,11 +485,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi ...@@ -461,11 +485,17 @@ public class PerformanceProgressServiceImpl implements PerformanceProgressServi
update.setLoadTruckNum(loadTruckNum); update.setLoadTruckNum(loadTruckNum);
update.setUnloadTruckNum(unloadTruckNum); update.setUnloadTruckNum(unloadTruckNum);
update.setOnTheWayTruckNum(onTheWayTruckNum); update.setOnTheWayTruckNum(onTheWayTruckNum);
update.setOrderedRate(orderedRate); update.setOrderedWeight(orderedWeight);
update.setTaskCompleteRatio(taskCompleteRatio);
update.setSumLoadWeight(sumLoadWeight); update.setSumLoadWeight(sumLoadWeight);
update.setSumUnloadWeight(sumUnloadWeight); update.setSumUnloadWeight(sumUnloadWeight);
update.setSumOnTheWayWeight(sumOnTheWayWeight); update.setSumOnTheWayWeight(sumOnTheWayWeight);
performanceProgressDao.updateEntityByKey(update); performanceProgressDao.updateEntityByKey(update);
} }
// 计算接单率
public BigDecimal calcOrderedRate(BigDecimal orderedWeight,BigDecimal pendingWeight){
//接单率 = 接单吨数 / 挂单吨数
return orderedWeight.divide(pendingWeight,3, RoundingMode.HALF_UP).multiply(new BigDecimal("100"));
}
} }
package com.clx.performance.struct; package com.clx.performance.struct;
import com.clx.performance.model.PerformanceProgress; import com.clx.performance.model.PerformanceProgress;
import com.clx.performance.param.pc.carrier.UpdatePerformanceProgressParam;
import com.clx.performance.vo.pc.PerformanceProgressDetailVO; import com.clx.performance.vo.pc.PerformanceProgressDetailVO;
import com.clx.performance.vo.pc.PerformanceProgressVO; import com.clx.performance.vo.pc.PerformanceProgressVO;
import com.msl.common.utils.DateStructUtil; import com.msl.common.utils.DateStructUtil;
...@@ -15,4 +16,5 @@ public interface PerformanceProgressStruct { ...@@ -15,4 +16,5 @@ public interface PerformanceProgressStruct {
PerformanceProgressDetailVO convert(PerformanceProgress item); PerformanceProgressDetailVO convert(PerformanceProgress item);
PerformanceProgress convertParam(UpdatePerformanceProgressParam param);
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论