提交 e31f678d authored 作者: 杨启发's avatar 杨启发

Merge branch 'refs/heads/v18.5_pound_list_ocr_20240701' into test

# Conflicts: # performance-api/src/main/java/com/clx/performance/enums/PerformanceResultEnum.java # performance-web/src/main/java/com/clx/performance/service/impl/OrderChildServiceImpl.java Former-commit-id: 0c1750bb
...@@ -156,8 +156,19 @@ public enum PerformanceResultEnum implements ResultEnum { ...@@ -156,8 +156,19 @@ public enum PerformanceResultEnum implements ResultEnum {
OWNER_LOAN_RECORD_PAY_WAIT_ERROR(1853,"当前借款单状态不是待付款"), OWNER_LOAN_RECORD_PAY_WAIT_ERROR(1853,"当前借款单状态不是待付款"),
OWNER_LOAN_PAYMENT_STATUS_ERROR(1854, "执行借款审批失败,请稍后重试"), OWNER_LOAN_PAYMENT_STATUS_ERROR(1854, "执行借款审批失败,请稍后重试"),
OWNER_LOAN_PAY_STATUS_ERROR(1855, "付款失败"), OWNER_LOAN_PAY_STATUS_ERROR(1855, "付款失败"),
DATA_STATUS_ERROR(1856, "当前状态有误") DATA_STATUS_ERROR(1856, "当前状态有误"),
/**
* 磅单OCR识别
*/
OCR_RECOGNITION_ERROR(2101, "OCR识别错误"),
OCR_RECOGNITION_REPEAT(2102, "同一个运单只能识别一次"),
LOAD_TIME_BEFORE_ARRIVE_SEND_TIME(2103, "装货时间不可早于到达货源地时间"),
LOAD_TIME_AFTER_NOW(2104, "装货时间不可晚于当前时间"),
LOAD_TIME_AFTER_FIRST_LOAD_TIME(2105, "装货时间不可晚于首次提交时间"),
UNLOAD_TIME_BEFORE_ARRIVE_RECEIVE_TIME(2106, "交货时间不可早于到达目的地时间"),
UNLOAD_TIME_AFTER_NOW(2107, "交货时间不可晚于当前时间"),
UNLOAD_TIME_AFTER_FIRST_UNLOAD_TIME(2108, "交货时间不可晚于首次提交时间"),
; ;
private final int code; private final int code;
private final String msg; private final String msg;
......
...@@ -47,11 +47,9 @@ public class OrderChildLoadAndUnloadAgainParam extends PositionParam { ...@@ -47,11 +47,9 @@ public class OrderChildLoadAndUnloadAgainParam extends PositionParam {
private List<String> unloadImageList; private List<String> unloadImageList;
@ApiModelProperty(value = "装货时间") @ApiModelProperty(value = "装货时间")
@NotBlank(message = "装货时间不能为空")
private String loadTime; private String loadTime;
@ApiModelProperty(value = "交货时间") @ApiModelProperty(value = "交货时间")
@NotBlank(message = "交货时间不能为空")
private String unloadTime; private String unloadTime;
} }
...@@ -5,7 +5,6 @@ import lombok.Getter; ...@@ -5,7 +5,6 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
...@@ -34,6 +33,5 @@ public class OrderChildLoadParam extends PositionParam { ...@@ -34,6 +33,5 @@ public class OrderChildLoadParam extends PositionParam {
private List<String> loadImageList; private List<String> loadImageList;
@ApiModelProperty(value = "装货时间") @ApiModelProperty(value = "装货时间")
@NotBlank(message = "装货时间不能为空")
private String loadTime; private String loadTime;
} }
...@@ -5,10 +5,8 @@ import lombok.Getter; ...@@ -5,10 +5,8 @@ import lombok.Getter;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import javax.validation.constraints.Max;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
...@@ -32,7 +30,6 @@ public class OrderChildUnloadParam extends PositionParam { ...@@ -32,7 +30,6 @@ public class OrderChildUnloadParam extends PositionParam {
private List<String> unloadImageList; private List<String> unloadImageList;
@ApiModelProperty(value = "交货时间") @ApiModelProperty(value = "交货时间")
@NotBlank(message = "交货时间不能为空")
private String unloadTime; private String unloadTime;
} }
...@@ -6,6 +6,8 @@ import lombok.NoArgsConstructor; ...@@ -6,6 +6,8 @@ import lombok.NoArgsConstructor;
import lombok.Setter; import lombok.Setter;
import lombok.ToString; import lombok.ToString;
import java.math.BigDecimal;
/** /**
* @author yangqifa * @author yangqifa
*/ */
...@@ -15,7 +17,7 @@ import lombok.ToString; ...@@ -15,7 +17,7 @@ import lombok.ToString;
@NoArgsConstructor @NoArgsConstructor
public class OcrRecognitionResultVO { public class OcrRecognitionResultVO {
@ApiModelProperty(value = "毛重", example = "48.36") @ApiModelProperty(value = "毛重", example = "48.36")
private Double grossWeight; private BigDecimal grossWeight;
@ApiModelProperty(value = "皮重", example = "16.32") @ApiModelProperty(value = "皮重", example = "16.32")
private Double tareWeight; private BigDecimal tareWeight;
} }
...@@ -72,14 +72,14 @@ public class OrderChildPoundAuditDetailVO { ...@@ -72,14 +72,14 @@ public class OrderChildPoundAuditDetailVO {
private String receiveAddress; private String receiveAddress;
@ApiModelProperty(value = "装车识别毛重参考") @ApiModelProperty(value = "装车识别毛重参考")
private Double loadGrossWeight; private BigDecimal loadGrossWeight;
@ApiModelProperty(value = "装车识别皮重参考") @ApiModelProperty(value = "装车识别皮重参考")
private Double loadTareWeight; private BigDecimal loadTareWeight;
@ApiModelProperty(value = "卸车识别毛重参考") @ApiModelProperty(value = "卸车识别毛重参考")
private Double unloadGrossWeight; private BigDecimal unloadGrossWeight;
@ApiModelProperty(value = "卸车识别皮重参考") @ApiModelProperty(value = "卸车识别皮重参考")
private Double unloadTareWeight; private BigDecimal unloadTareWeight;
} }
\ No newline at end of file
package com.clx.performance.config;
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @author yangqifa
*/
@Configuration
@Getter
@Setter
@ConfigurationProperties(prefix = "tencentcloudapi.credential")
public class TencentCloudApiOcrConfig {
private String secretId;
private String secretKey;
}
...@@ -2,10 +2,13 @@ package com.clx.performance.dao; ...@@ -2,10 +2,13 @@ package com.clx.performance.dao;
import com.clx.performance.mapper.OcrRecognitionMapper; import com.clx.performance.mapper.OcrRecognitionMapper;
import com.clx.performance.model.OcrRecognition; import com.clx.performance.model.OcrRecognition;
import com.clx.performance.param.app.OcrRecognitionParam;
import com.msl.common.dao.BaseDao; import com.msl.common.dao.BaseDao;
/** /**
* @author yangqifa * @author yangqifa
*/ */
public interface OcrRecognitionDao extends BaseDao<OcrRecognitionMapper, OcrRecognition, Integer> { public interface OcrRecognitionDao extends BaseDao<OcrRecognitionMapper, OcrRecognition, Integer> {
boolean exists(OcrRecognitionParam param);
} }
...@@ -3,6 +3,7 @@ package com.clx.performance.dao.impl; ...@@ -3,6 +3,7 @@ package com.clx.performance.dao.impl;
import com.clx.performance.dao.OcrRecognitionDao; import com.clx.performance.dao.OcrRecognitionDao;
import com.clx.performance.mapper.OcrRecognitionMapper; import com.clx.performance.mapper.OcrRecognitionMapper;
import com.clx.performance.model.OcrRecognition; import com.clx.performance.model.OcrRecognition;
import com.clx.performance.param.app.OcrRecognitionParam;
import com.msl.common.dao.impl.BaseDaoImpl; import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
...@@ -12,4 +13,11 @@ import org.springframework.stereotype.Repository; ...@@ -12,4 +13,11 @@ import org.springframework.stereotype.Repository;
*/ */
@Repository @Repository
public class OcrRecognitionDaoImpl extends BaseDaoImpl<OcrRecognitionMapper, OcrRecognition, Integer> implements OcrRecognitionDao { public class OcrRecognitionDaoImpl extends BaseDaoImpl<OcrRecognitionMapper, OcrRecognition, Integer> implements OcrRecognitionDao {
@Override
public boolean exists(OcrRecognitionParam param) {
return baseMapper.exists(lQrWrapper()
.eq(OcrRecognition::getChildNo, param.getChildNo())
.eq(OcrRecognition::getImageType, param.getImageType()));
}
} }
...@@ -6,6 +6,7 @@ import com.msl.common.config.KeyColumn; ...@@ -6,6 +6,7 @@ import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey; import com.msl.common.model.HasKey;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import lombok.Data; import lombok.Data;
...@@ -45,13 +46,13 @@ public class OcrRecognition implements HasKey<Integer> { ...@@ -45,13 +46,13 @@ public class OcrRecognition implements HasKey<Integer> {
* 毛重 * 毛重
*/ */
@ApiModelProperty(value = "毛重") @ApiModelProperty(value = "毛重")
private Double grossWeight; private BigDecimal grossWeight;
/** /**
* 皮重 * 皮重
*/ */
@ApiModelProperty(value = "皮重") @ApiModelProperty(value = "皮重")
private Double tareWeight; private BigDecimal tareWeight;
/** /**
* OCR识别的原始结果 * OCR识别的原始结果
......
...@@ -16,6 +16,7 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO; ...@@ -16,6 +16,7 @@ import com.clx.order.vo.pc.carrier.InvoicingCompanyVO;
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;
import com.clx.performance.component.OrderChildLoanComponent; import com.clx.performance.component.OrderChildLoanComponent;
import com.clx.performance.config.TencentCloudApiOcrConfig;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.constant.RedissonConstants; import com.clx.performance.constant.RedissonConstants;
import com.clx.performance.dao.*; import com.clx.performance.dao.*;
...@@ -60,8 +61,8 @@ import com.clx.performance.utils.zjxl.ZjxlGpsService; ...@@ -60,8 +61,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.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.vo.feign.DriverTruckInfoFeignVo; import com.clx.user.vo.feign.DriverTruckInfoFeignVo;
import com.clx.user.vo.feign.OwnerInfoFeignVO; import com.clx.user.vo.feign.OwnerInfoFeignVO;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
...@@ -83,19 +84,20 @@ import com.tencentcloudapi.ocr.v20181119.models.SmartStructuralOCRV2Request; ...@@ -83,19 +84,20 @@ import com.tencentcloudapi.ocr.v20181119.models.SmartStructuralOCRV2Request;
import com.tencentcloudapi.ocr.v20181119.models.SmartStructuralOCRV2Response; import com.tencentcloudapi.ocr.v20181119.models.SmartStructuralOCRV2Response;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ArrayUtils;
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.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils; import org.apache.commons.lang3.math.NumberUtils;
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;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.core.env.Environment;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.PostConstruct;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.time.LocalDate; import java.time.LocalDate;
...@@ -105,6 +107,7 @@ import java.util.concurrent.TimeUnit; ...@@ -105,6 +107,7 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Supplier; import java.util.function.Supplier;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.clx.performance.enums.PerformanceResultEnum.*;
import static com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToDefaultString; import static com.msl.common.utils.LocalDateTimeUtils.convertLocalDateTimeToDefaultString;
import static com.msl.common.utils.LocalDateTimeUtils.covertStringToDefaultLocalDateTime; import static com.msl.common.utils.LocalDateTimeUtils.covertStringToDefaultLocalDateTime;
...@@ -118,12 +121,7 @@ import static com.msl.common.utils.LocalDateTimeUtils.covertStringToDefaultLocal ...@@ -118,12 +121,7 @@ import static com.msl.common.utils.LocalDateTimeUtils.covertStringToDefaultLocal
@Service @Service
public class OrderChildServiceImpl implements OrderChildService { public class OrderChildServiceImpl implements OrderChildService {
@Value("${tencentcloudapi.credential.secretId}") private String domain = "http://clx-dev.oss-cn-beijing.aliyuncs.com";
private String secretId;
@Value("${tencentcloudapi.credential.secretKey}")
private String secretKey;
@Value("${oss.domain}")
private String ossDomain;
@Autowired @Autowired
private AmqpTemplate rabbitTemplate; private AmqpTemplate rabbitTemplate;
...@@ -230,7 +228,22 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -230,7 +228,22 @@ public class OrderChildServiceImpl implements OrderChildService {
private QuotationService quotationService; private QuotationService quotationService;
@Autowired @Autowired
private OcrRecognitionDao ocrRecognitionDao; private OcrRecognitionDao ocrRecognitionDao;
@Autowired
private TencentCloudApiOcrConfig tencentCloudApiOcrConfig;
@Autowired
private Environment environment;
@Autowired
private DocumentFeign documentFeign;
@PostConstruct
public void init(){
String[] activeProfiles = environment.getActiveProfiles();
if(!StringUtils.equals(activeProfiles[0],"dev")){
log.info("开始获取文件上传domain地址================");
domain = documentFeign.getHost().getData();
log.info("获取文件上传domain地址结束,地址:{}",domain);
}
}
@Override @Override
public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) { public SaveOrderChildVO saveOrderChild(OrderChildSaveParam param) {
...@@ -835,6 +848,20 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -835,6 +848,20 @@ public class OrderChildServiceImpl implements OrderChildService {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_WEIGHT_ERROR); throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_LOAD_WEIGHT_ERROR);
} }
//装货时间不可早于到达货源地时间
LocalDateTime loadTime = StringUtils.isBlank(param.getLoadTime()) ? null : covertStringToDefaultLocalDateTime(param.getLoadTime());
if (loadTime!=null && loadTime.isBefore(orderChild.getArriveSendTime())) {
throw new ServiceSystemException(LOAD_TIME_BEFORE_ARRIVE_SEND_TIME);
}
//装货时间不可晚于当前时间
if (loadTime!=null && loadTime.isAfter(LocalDateTime.now())) {
throw new ServiceSystemException(LOAD_TIME_AFTER_NOW);
}
//装货时间不可晚于首次提交时间
if (loadTime!=null && orderChild.getFirstLoadTime()!=null && loadTime.isAfter(orderChild.getFirstLoadTime())) {
throw new ServiceSystemException(LOAD_TIME_AFTER_FIRST_LOAD_TIME);
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow( OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.DATA_NOT_FIND); PerformanceResultEnum.DATA_NOT_FIND);
...@@ -956,11 +983,11 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -956,11 +983,11 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setLoadRough(param.getLoadRough()); orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare()); orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(loadNet); orderChild.setLoadNet(loadNet);
orderChild.setLoadTime(covertStringToDefaultLocalDateTime(param.getLoadTime())); orderChild.setLoadTime(StringUtils.isBlank(param.getLoadTime())?null:covertStringToDefaultLocalDateTime(param.getLoadTime()));
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setFreight(orderChildFreightCalc(orderChild)); orderChild.setFreight(orderChildFreightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.LOAD.getCode()); orderChild.setStatus(OrderChildEnum.Status.LOAD.getCode());
orderChild.setFirstLoadTime(covertStringToDefaultLocalDateTime(param.getLoadTime())); orderChild.setFirstLoadTime(orderChild.getLoadTime());
orderChildDao.updateLoad(orderChild); orderChildDao.updateLoad(orderChild);
orderChildImageDao.batchSaveEntity(imageList); orderChildImageDao.batchSaveEntity(imageList);
...@@ -994,7 +1021,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -994,7 +1021,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setLoadRough(param.getLoadRough()); orderChild.setLoadRough(param.getLoadRough());
orderChild.setLoadTare(param.getLoadTare()); orderChild.setLoadTare(param.getLoadTare());
orderChild.setLoadNet(loadNet); orderChild.setLoadNet(loadNet);
orderChild.setLoadTime(covertStringToDefaultLocalDateTime(param.getLoadTime())); orderChild.setLoadTime(StringUtils.isBlank(param.getLoadTime())?null:covertStringToDefaultLocalDateTime(param.getLoadTime()));
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setFreight(orderChildFreightCalc(orderChild)); orderChild.setFreight(orderChildFreightCalc(orderChild));
//更新货单吨数 //更新货单吨数
...@@ -1032,6 +1059,19 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1032,6 +1059,19 @@ public class OrderChildServiceImpl implements OrderChildService {
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR); // throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// } // }
//交货时间不可早于到达目的地时间
LocalDateTime unloadTime = StringUtils.isBlank(param.getUnloadTime()) ? null : covertStringToDefaultLocalDateTime(param.getUnloadTime());
if (unloadTime!=null && unloadTime.isBefore(orderChild.getArriveReceiveTime())) {
throw new ServiceSystemException(UNLOAD_TIME_BEFORE_ARRIVE_RECEIVE_TIME);
}
//交货时间不可晚于当前时间
if (unloadTime!=null && unloadTime.isAfter(LocalDateTime.now())) {
throw new ServiceSystemException(UNLOAD_TIME_AFTER_NOW);
}
//交货时间不可晚于首次提交时间
if (unloadTime!=null && orderChild.getFirstUnloadTime()!=null && unloadTime.isAfter(orderChild.getFirstUnloadTime())) {
throw new ServiceSystemException(UNLOAD_TIME_AFTER_FIRST_UNLOAD_TIME);
}
if (orderChild.getUnloadTime() == null && if (orderChild.getUnloadTime() == null &&
Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())) { Objects.equals(orderChild.getStatus(), OrderChildEnum.Status.ARRIVE_RECEIVE.getCode())) {
...@@ -1127,12 +1167,12 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1127,12 +1167,12 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadRough(param.getUnloadRough()); orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare()); orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(loadNet); orderChild.setUnloadNet(loadNet);
orderChild.setUnloadTime(covertStringToDefaultLocalDateTime(param.getUnloadTime())); orderChild.setUnloadTime(StringUtils.isBlank(param.getUnloadTime())?null:covertStringToDefaultLocalDateTime(param.getUnloadTime()));
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setStatus(OrderChildEnum.Status.UNLOAD.getCode()); orderChild.setStatus(OrderChildEnum.Status.UNLOAD.getCode());
orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode()); orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
orderChild.setFreight(orderChildFreightCalc(orderChild)); orderChild.setFreight(orderChildFreightCalc(orderChild));
orderChild.setFirstUnloadTime(covertStringToDefaultLocalDateTime(param.getUnloadTime())); orderChild.setFirstUnloadTime(orderChild.getUnloadTime());
OrderChildPoundAudit audit = new OrderChildPoundAudit(); OrderChildPoundAudit audit = new OrderChildPoundAudit();
audit.setChildNo(childNo); audit.setChildNo(childNo);
...@@ -1189,7 +1229,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1189,7 +1229,7 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setUnloadRough(param.getUnloadRough()); orderChild.setUnloadRough(param.getUnloadRough());
orderChild.setUnloadTare(param.getUnloadTare()); orderChild.setUnloadTare(param.getUnloadTare());
orderChild.setUnloadNet(loadNet); orderChild.setUnloadNet(loadNet);
orderChild.setUnloadTime(covertStringToDefaultLocalDateTime(param.getUnloadTime())); orderChild.setUnloadTime(StringUtils.isBlank(param.getUnloadTime())?null:covertStringToDefaultLocalDateTime(param.getUnloadTime()));
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode()); orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
orderChild.setFreight(orderChildFreightCalc(orderChild)); orderChild.setFreight(orderChildFreightCalc(orderChild));
...@@ -1262,6 +1302,25 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1262,6 +1302,25 @@ public class OrderChildServiceImpl implements OrderChildService {
// throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR); // throw new ServiceSystemException(PerformanceResultEnum.ORDER_CHILD_UNLOAD_WEIGHT_ERROR);
// } // }
//装货时间不可早于到达货源地时间
LocalDateTime loadTime = StringUtils.isBlank(param.getLoadTime()) ? null : covertStringToDefaultLocalDateTime(param.getLoadTime());
if (loadTime!=null && loadTime.isBefore(orderChild.getArriveSendTime())) {
throw new ServiceSystemException(LOAD_TIME_BEFORE_ARRIVE_SEND_TIME);
}
//装货时间不可晚于首次提交时间
if (loadTime!=null && orderChild.getFirstLoadTime()!=null && loadTime.isAfter(orderChild.getFirstLoadTime())) {
throw new ServiceSystemException(LOAD_TIME_AFTER_FIRST_LOAD_TIME);
}
//交货时间不可早于到达目的地时间
LocalDateTime unloadTime = StringUtils.isBlank(param.getUnloadTime()) ? null : covertStringToDefaultLocalDateTime(param.getUnloadTime());
if (unloadTime!=null && unloadTime.isBefore(orderChild.getArriveReceiveTime())) {
throw new ServiceSystemException(UNLOAD_TIME_BEFORE_ARRIVE_RECEIVE_TIME);
}
//交货时间不可晚于首次提交时间
if (unloadTime!=null && orderChild.getFirstUnloadTime()!=null && unloadTime.isAfter(orderChild.getFirstUnloadTime())) {
throw new ServiceSystemException(UNLOAD_TIME_AFTER_FIRST_UNLOAD_TIME);
}
OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow( OrderGoods orderGoods = orderGoodsDao.getByOrderGoodsNo(orderChild.getOrderGoodsNo()).orElseThrow(
PerformanceResultEnum.ORDER_INVALID); PerformanceResultEnum.ORDER_INVALID);
...@@ -1292,8 +1351,8 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1292,8 +1351,8 @@ public class OrderChildServiceImpl implements OrderChildService {
orderChild.setWeight(orderChildWeightCalc(orderChild)); orderChild.setWeight(orderChildWeightCalc(orderChild));
orderChild.setFreight(orderChildFreightCalc(orderChild)); orderChild.setFreight(orderChildFreightCalc(orderChild));
orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode()); orderChild.setPoundStatus(OrderChildPoundAuditEnum.Status.AUDIT.getCode());
orderChild.setLoadTime(covertStringToDefaultLocalDateTime(param.getLoadTime())); orderChild.setLoadTime(StringUtils.isBlank(param.getLoadTime())?null:covertStringToDefaultLocalDateTime(param.getLoadTime()));
orderChild.setUnloadTime(covertStringToDefaultLocalDateTime(param.getUnloadTime())); orderChild.setUnloadTime(StringUtils.isBlank(param.getUnloadTime())?null:covertStringToDefaultLocalDateTime(param.getUnloadTime()));
OrderChildPoundAudit audit = new OrderChildPoundAudit(); OrderChildPoundAudit audit = new OrderChildPoundAudit();
audit.setChildNo(childNo); audit.setChildNo(childNo);
...@@ -2812,13 +2871,18 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2812,13 +2871,18 @@ public class OrderChildServiceImpl implements OrderChildService {
@Override @Override
public OcrRecognitionResultVO ocrRecognition(OcrRecognitionParam param) { public OcrRecognitionResultVO ocrRecognition(OcrRecognitionParam param) {
OcrRecognitionResultVO vo = new OcrRecognitionResultVO(); //校验,同一运单同一图片类型只能识别一次
if (ocrRecognitionDao.exists(param)) {
throw new ServiceSystemException(OCR_RECOGNITION_REPEAT);
}
try{ try{
Credential cred = new Credential(secretId, secretKey); OcrRecognitionResultVO vo = new OcrRecognitionResultVO();
Credential cred = new Credential(tencentCloudApiOcrConfig.getSecretId(), tencentCloudApiOcrConfig.getSecretKey());
OcrClient client = new OcrClient(cred, "ap-beijing"); OcrClient client = new OcrClient(cred, "ap-beijing");
String[] itemNames = {"毛重", "皮重"}; String[] itemNames = {"毛重", "皮重"};
SmartStructuralOCRV2Request req = new SmartStructuralOCRV2Request(); SmartStructuralOCRV2Request req = new SmartStructuralOCRV2Request();
req.setImageUrl(ossDomain+param.getImageUrl()); req.setImageUrl(domain+param.getImageUrl());
req.setItemNames(itemNames); req.setItemNames(itemNames);
SmartStructuralOCRV2Response resp = client.SmartStructuralOCRV2(req); SmartStructuralOCRV2Response resp = client.SmartStructuralOCRV2(req);
Map<String,String> originalResultMap = new HashMap<>(); Map<String,String> originalResultMap = new HashMap<>();
...@@ -2829,9 +2893,9 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2829,9 +2893,9 @@ public class OrderChildServiceImpl implements OrderChildService {
originalResultMap.put(autoName,autoContent); originalResultMap.put(autoName,autoContent);
if (NumberUtils.isCreatable(autoContent)) { if (NumberUtils.isCreatable(autoContent)) {
if ("毛重".equals(autoName)) { if ("毛重".equals(autoName)) {
vo.setGrossWeight(Double.valueOf(autoContent)); vo.setGrossWeight(new BigDecimal(autoContent));
}else if ("皮重".equals(autoName)) { }else if ("皮重".equals(autoName)) {
vo.setTareWeight(Double.valueOf(autoContent)); vo.setTareWeight(new BigDecimal(autoContent));
} }
} }
} }
...@@ -2845,9 +2909,10 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -2845,9 +2909,10 @@ public class OrderChildServiceImpl implements OrderChildService {
ocrRecognition.setTareWeight(vo.getTareWeight()); ocrRecognition.setTareWeight(vo.getTareWeight());
ocrRecognition.setOriginalResult(JSONUtil.toJsonStr(originalResultMap)); ocrRecognition.setOriginalResult(JSONUtil.toJsonStr(originalResultMap));
ocrRecognitionDao.saveEntity(ocrRecognition); ocrRecognitionDao.saveEntity(ocrRecognition);
return vo;
} catch (TencentCloudSDKException e) { } catch (TencentCloudSDKException e) {
log.error(e.getMessage(),e); log.error(e.getMessage(),e);
throw new ServiceSystemException(OCR_RECOGNITION_ERROR);
} }
return vo;
} }
} }
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论