提交 66176d62 authored 作者: 李瑞鑫's avatar 李瑞鑫

Merge branch 'v20.6_carrier_station_pound_20240802' into test

# Conflicts: # performance-web/src/main/java/com/clx/performance/dao/OrderChildDao.java # performance-web/src/main/java/com/clx/performance/dao/impl/OrderChildDaoImpl.java # performance-web/src/main/java/com/clx/performance/listener/OrderChildDtsListener.java # performance-web/src/main/java/com/clx/performance/service/OrderChildService.java # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
public enum AppEnum {
;
@Getter
@AllArgsConstructor
public enum UniqueIdentifier {
SMART_WEIGHT(1, "场站-smart-weight"),
;
private final Integer code;
private final String name;
public static Optional<UniqueIdentifier> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(UniqueIdentifier::getName).orElse(null);
}
}
}
package com.clx.performance.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
import java.util.Arrays;
import java.util.Optional;
public enum OrderChildImageEnum {
;
@Getter
@AllArgsConstructor
public enum Type {
LOAD(1, "装车图片"),
UNLOAD(2, "卸车图片"),
WEIGHT_IN(3, "进场图片"),
WEIGHT_OUT(4, "出场图片"),
;
private final Integer code;
private final String name;
public static Optional<Type> getByCode(Integer code) {
return Arrays.stream(values()).filter(e -> e.code.equals(code)).findFirst();
}
public static String getMsgByCode(int code) {
return getByCode(code).map(Type::getName).orElse(null);
}
}
}
...@@ -93,6 +93,16 @@ ...@@ -93,6 +93,16 @@
<artifactId>server-spring-boot-starter</artifactId> <artifactId>server-spring-boot-starter</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.msl</groupId>
<artifactId>open-starter</artifactId>
</dependency>
<dependency>
<groupId>com.smart</groupId>
<artifactId>smart-weight-sdk</artifactId>
</dependency>
<!-- <dependency>--> <!-- <dependency>-->
<!-- <groupId>com.msl</groupId>--> <!-- <groupId>com.msl</groupId>-->
<!-- <artifactId>cache-spring-boot-starter</artifactId>--> <!-- <artifactId>cache-spring-boot-starter</artifactId>-->
......
package com.clx.performance.dao;
import com.clx.performance.mapper.AppMapper;
import com.clx.performance.model.App;
import com.msl.common.dao.BaseDao;
/**
* @author Min
* Date 2024-06-14
* Time 11:51
*/
public interface AppDao extends BaseDao<AppMapper, App, Integer> {
}
...@@ -205,4 +205,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int ...@@ -205,4 +205,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
List<OrderChild> listBeforeCompleteByOrderNo(String orderNo); List<OrderChild> listBeforeCompleteByOrderNo(String orderNo);
List<OrderChild> listCompleteByOrderNos(List<String> strings); List<OrderChild> listCompleteByOrderNos(List<String> strings);
List<OrderChild> listChidNosByStatus(List<Integer> status);
} }
package com.clx.performance.dao;
import com.clx.performance.mapper.OrderChildWeighPictureMapper;
import com.clx.performance.model.OrderChildWeighPicture;
import com.msl.common.dao.BaseDao;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
public interface OrderChildWeighPictureDao extends BaseDao<OrderChildWeighPictureMapper, OrderChildWeighPicture, Integer> {
}
package com.clx.performance.dao.impl;
import com.clx.performance.dao.AppDao;
import com.clx.performance.mapper.AppMapper;
import com.clx.performance.model.App;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @author Min
* Date 2024-06-14
* Time 11:51
*/
@Repository
public class AppDaoImpl extends BaseDaoImpl<AppMapper, App, Integer> implements AppDao {
}
...@@ -687,4 +687,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild, ...@@ -687,4 +687,12 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
.le(OrderChild :: getStatus,OrderChildEnum.Status.COMPLETE.getCode()) .le(OrderChild :: getStatus,OrderChildEnum.Status.COMPLETE.getCode())
); );
} }
@Override
public List<OrderChild> listChidNosByStatus(List<Integer> status) {
return list(lQrWrapper()
.in(OrderChild :: getStatus, status)
);
}
} }
package com.clx.performance.dao.impl;
import com.clx.performance.dao.OrderChildWeighPictureDao;
import com.clx.performance.mapper.OrderChildWeighPictureMapper;
import com.clx.performance.model.OrderChildWeighPicture;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
@Repository
public class OrderChildWeighPictureDaoImpl extends BaseDaoImpl<OrderChildWeighPictureMapper, OrderChildWeighPicture, Integer> implements OrderChildWeighPictureDao {
}
package com.clx.performance.job;
import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.dao.AppDao;
import com.clx.performance.dao.OrderChildDao;
import com.clx.performance.dao.OrderChildWeighPictureDao;
import com.clx.performance.enums.AppEnum;
import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.model.App;
import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildWeighPicture;
import com.clx.performance.struct.OrderChildWeighPictureStruct;
import com.msl.common.job.JobLog;
import com.msl.common.open.OpenClient;
import com.msl.common.open.RequestConfig;
import com.msl.common.result.Result;
import com.smart.weight.action.WeighingSignatureAction;
import com.smart.weight.dto.WeighingSignatureDto;
import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@Slf4j
@Component
public class WeighingOderPictureJob implements InitializingBean {
@Autowired
private ThirdAppConfig thirdAppConfig;
@Autowired
private OrderChildDao orderChildDao;
@Autowired
private OrderChildWeighPictureStruct pictureStruct;
@Autowired
private OrderChildWeighPictureDao pictureDao;
@Autowired
private AppDao appDao;
private App app;
/**
* 定时拉取过磅磅单图片
*/
@XxlJob("weighingOderPicture")
@Transactional(rollbackFor = Exception.class)
public void weighingOderPicture() {
try {
getWeighingOderPicture();
} catch (Exception e) {
log.warn("定时任务获取磅单图片信息失败,异常原因:{}", ExceptionUtils.getStackTrace(e));
JobLog.error("定时任务获取磅单图片信息失败,异常原因=====================", e);
}
}
/**
* 定时拉取过磅磅单图片
**/
public void getWeighingOderPicture(){
//运单状态集合
List<Integer> status = new ArrayList<>();
status.add(OrderChildEnum.Status.UNLOAD.getCode());
status.add(OrderChildEnum.Status.UNSETTLE.getCode());
//查询指定运单数据
List<OrderChild> orderChilds = orderChildDao.listChidNosByStatus(status);
log.info("查询运单数据返回:{}",orderChilds);
//查询运单下的电子磅单数据
if(CollectionUtils.isNotEmpty(orderChilds)){
//空判断
if(Objects.isNull(app)){
//重新赋值
app= appDao.getOneByField(App::getUniqueIdentifier, AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
}
//组装配置信息
RequestConfig config = new RequestConfig()
.setAppId(app.getAppNo())
.setAppKey(app.getAppKey())
.setGatewayUrl(app.getCallback());
//集合对象
List<OrderChildWeighPicture> pictures = new ArrayList<>();
for(OrderChild orderChild:orderChilds){
//通过运单号码查询电子磅单图片
WeighingSignatureAction weightAction = new WeighingSignatureAction();
weightAction.setChildNo(orderChild.getChildNo());
log.info("请求电子磅单参数,{}",weightAction);
Result<List<WeighingSignatureDto>> weighSignature = OpenClient.doAction(config, weightAction);
log.info("请求电子磅单返回结果,{}",weighSignature);
//数据处理
if(!Objects.equals(weighSignature.getCode(),0)){
continue;
}
List<WeighingSignatureDto> weighSignatures = weighSignature.getData();
if (CollectionUtils.isNotEmpty(weighSignatures)) {
for(WeighingSignatureDto weighingSignatureDto:weighSignatures){
pictures.add(pictureStruct.convert(weighingSignatureDto));//对象转换
}
}
}
log.info("电子磅单图片,{}",pictures);
//保存电子磅单图片
if(CollectionUtils.isNotEmpty(pictures)){
List<String> childNos = pictures.stream().map(OrderChildWeighPicture::getChildNo).distinct().collect(Collectors.toList());
pictureDao.deleteInField(OrderChildWeighPicture::getChildNo,childNos);
pictureDao.saveBatchList(pictures);
}
}
}
@Override
public void afterPropertiesSet() throws Exception {
app= appDao.getOneByField(App::getUniqueIdentifier, AppEnum.UniqueIdentifier.SMART_WEIGHT.getCode()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND);
}
}
...@@ -16,16 +16,19 @@ import com.clx.performance.config.ThirdAppConfig; ...@@ -16,16 +16,19 @@ import com.clx.performance.config.ThirdAppConfig;
import com.clx.performance.constant.RabbitKeyConstants; import com.clx.performance.constant.RabbitKeyConstants;
import com.clx.performance.dao.OrderChildImageDao; import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderChildImageDao;
import com.clx.performance.dto.dts.DataTransportDTO; import com.clx.performance.dto.dts.DataTransportDTO;
import com.clx.performance.enums.DtsOperationTypeEnum; import com.clx.performance.enums.DtsOperationTypeEnum;
import com.clx.performance.enums.OrderChildEnum; import com.clx.performance.enums.OrderChildEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum; import com.clx.performance.enums.OrderChildPoundAuditEnum;
import com.clx.performance.enums.PerformanceResultEnum; import com.clx.performance.enums.PerformanceResultEnum;
import com.clx.performance.enums.OrderChildPoundAuditEnum;
import com.clx.performance.event.OrderChildCancelEvent; import com.clx.performance.event.OrderChildCancelEvent;
import com.clx.performance.extranal.user.DriverService; import com.clx.performance.extranal.user.DriverService;
import com.clx.performance.model.OrderChild; import com.clx.performance.model.OrderChild;
import com.clx.performance.model.OrderChildImage; import com.clx.performance.model.OrderChildImage;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.clx.performance.model.OrderChildImage;
import com.clx.performance.service.LastTruckService; import com.clx.performance.service.LastTruckService;
import com.clx.performance.struct.OrderChildStruct; import com.clx.performance.struct.OrderChildStruct;
import com.clx.user.feign.TruckFeign; import com.clx.user.feign.TruckFeign;
...@@ -71,6 +74,9 @@ public class OrderChildDtsListener { ...@@ -71,6 +74,9 @@ public class OrderChildDtsListener {
private final OrderChildStruct orderChildStruct; private final OrderChildStruct orderChildStruct;
private final RabbitTemplate rabbitTemplate; private final RabbitTemplate rabbitTemplate;
private final OrderGoodsDao orderGoodsDao;
private final TruckFeign truckFeign;
private final OrderChildImageDao orderChildImageDao;
......
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.App;
/**
* @author Min
* Date 2024-06-14
* Time 11:51
*/
public interface AppMapper extends BaseMapper<App> {
}
package com.clx.performance.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.clx.performance.model.OrderChildWeighPicture;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
public interface OrderChildWeighPictureMapper extends BaseMapper<OrderChildWeighPicture> {
}
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* @author Min
* Date 2024-06-14
* Time 11:51
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("app")
public class App implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("unique_identifier")
@ApiModelProperty("唯一标识 1:场站-smart-weight")
private Integer uniqueIdentifier;
@TableField("name")
@ApiModelProperty("应用名称")
private String name;
@TableField("namespace")
@ApiModelProperty("命名空间")
private String namespace;
@TableField("app_no")
@ApiModelProperty("应用标识")
private String appNo;
@TableField("app_key")
@ApiModelProperty("应用密钥")
private String appKey;
@TableField("callback")
@ApiModelProperty("回调网关")
private String callback;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime; //
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
package com.clx.performance.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
@Getter
@Setter
@Accessors(chain = true)
@TableName("order_child_weigh_picture")
public class OrderChildWeighPicture implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@TableField("child_no")
@ApiModelProperty("运单编号")
private String childNo;
@TableField("type")
@ApiModelProperty("图片类型 1进场 2出场")
private Integer type;
@TableField("original_img")
@ApiModelProperty("原始磅单图")
private String originalImg;
@TableField("no_sign_img")
@ApiModelProperty("不带签章磅单图")
private String noSignImg;
@TableField("sign_img")
@ApiModelProperty("带签章磅单图")
private String signImg;
@TableField("create_time")
@ApiModelProperty("创建时间")
private LocalDateTime createTime;
@TableField("modified_time")
@ApiModelProperty("修改时间")
private LocalDateTime modifiedTime;
@KeyColumn("id")
public Integer gainKey() {
return this.id;
}
}
...@@ -8,7 +8,6 @@ import com.clx.performance.param.app.*; ...@@ -8,7 +8,6 @@ import com.clx.performance.param.app.*;
import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam; import com.clx.performance.param.app.owner.PageOwnerOrderChildListParam;
import com.clx.performance.param.feign.CancelOrderGoodsParam; import com.clx.performance.param.feign.CancelOrderGoodsParam;
import com.clx.performance.param.pc.*; import com.clx.performance.param.pc.*;
import com.clx.performance.param.pc.breakcontract.carrier.PageCarrierBreakContractSettlementDriverParam;
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.*;
...@@ -108,6 +107,7 @@ public interface OrderChildService { ...@@ -108,6 +107,7 @@ public interface OrderChildService {
void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect); void cacheOrderChildExpectData(String childNo, OrderChildExpectDTO expect);
List<HistoryLineTranVolumeChartVO> getHistoryLineTransportVolume(String orderNo); List<HistoryLineTranVolumeChartVO> getHistoryLineTransportVolume(String orderNo);
} }
package com.clx.performance.service;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
public interface OrderChildWeighPictureService {
}
...@@ -59,6 +59,8 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService; ...@@ -59,6 +59,8 @@ 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.enums.idcard.IdCardEnum; import com.clx.user.enums.idcard.IdCardEnum;
import com.clx.user.feign.DocumentFeign; import com.clx.user.feign.DocumentFeign;
......
package com.clx.performance.service.impl;
import com.clx.performance.service.OrderChildWeighPictureService;
import org.springframework.stereotype.Service;
/**
* @author liruixin
* Date 2024-08-02
* Time 15:38
*/
@Service
public class OrderChildWeighPictureServiceImpl implements OrderChildWeighPictureService {
}
package com.clx.performance.struct;
import com.clx.performance.model.OrderChildWeighPicture;
import com.msl.common.utils.DateStructUtil;
import com.msl.common.utils.DateUtils;
import com.smart.weight.dto.WeighingSignatureDto;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring", uses = DateStructUtil.class, imports = {DateUtils.class})
public interface OrderChildWeighPictureStruct {
OrderChildWeighPicture convert(WeighingSignatureDto item);
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论