|
|
@@ -9,6 +9,7 @@ import java.time.ZoneId;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
+import java.util.stream.IntStream;
|
|
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
@@ -458,7 +459,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
}
|
|
|
|
|
|
@Async
|
|
|
- private void jdOrderImport(List<BizWaybillOrder> bizWaybillOrders) {
|
|
|
+ public void jdOrderImport(List<BizWaybillOrder> bizWaybillOrders) {
|
|
|
String batchNum = redisIdGenerator.generateUniqueId("JDPC");
|
|
|
|
|
|
int successCount = 0;
|
|
|
@@ -698,7 +699,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
dto.setPickupType(1);
|
|
|
dto.setCreateTime(DateUtils.getNowDate());
|
|
|
dto.setBatchNum(batchNum);
|
|
|
-
|
|
|
+ dto.setOrderStatus(OrderStatusEnum.ORDER_STATUS_1.getCode());
|
|
|
// 保存到数据库
|
|
|
int result = bizWaybillOrderMapper.insertBizWaybillOrder(dto);
|
|
|
if (result > 0) {
|
|
|
@@ -726,12 +727,10 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
public Map<String,Object> validateAndGetError(List<SfOrderImportDTO> orderList) {
|
|
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
Map<String,Object> result= new HashMap<>();
|
|
|
- List<BizWaybillOrder> bizWaybillOrderList= new ArrayList<>();
|
|
|
- StringBuilder errorMsg = new StringBuilder();
|
|
|
- List<String> rowErrors = new ArrayList<>();
|
|
|
//先把类型拿出来
|
|
|
Map productParam= new HashMap<>();
|
|
|
productParam.put("dictType","sf_logistics_product_code");
|
|
|
+ productParam.put("companyType","2");
|
|
|
productParam.put("deptId",loginUser.getSysUser().getDeptId());
|
|
|
List<SysDictData> allProductDictList = dictDataMapper.selectDictDataSfProductList(productParam);
|
|
|
// 转成 Map:label -> value,方便快速查找
|
|
|
@@ -741,9 +740,16 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
SysDictData::getDictValue,
|
|
|
(existing, replacement) -> existing // 重复 label 保留第一个
|
|
|
));
|
|
|
- for (int i = 0; i < orderList.size(); i++) {
|
|
|
+
|
|
|
+ // ===================== 并行校验(线程安全,行号正确) =====================
|
|
|
+ List<Map<String, Object>> errorList = Collections.synchronizedList(new ArrayList<>());
|
|
|
+ List<BizWaybillOrder> successList = Collections.synchronizedList(new ArrayList<>());
|
|
|
+
|
|
|
+
|
|
|
+ IntStream.range(0, orderList.size()).parallel().forEach(i -> {
|
|
|
SfOrderImportDTO vo = orderList.get(i);
|
|
|
- int row = i + 2; // 行号从1开始
|
|
|
+ int row = i + 2; // 行号完全正确
|
|
|
+ List<String> rowErrors = new ArrayList<>();
|
|
|
try {
|
|
|
if (StringUtils.isBlank(vo.getSenderPhone())) {
|
|
|
rowErrors.add("寄件人手机号不能为空");
|
|
|
@@ -766,12 +772,12 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
if (StringUtils.isBlank(vo.getGoodsName())) {
|
|
|
rowErrors.add("物品名称不能为空");
|
|
|
}
|
|
|
- // 货物重量校验
|
|
|
+ // 货物重量校验
|
|
|
BigDecimal weight = vo.getGoodsWeight();
|
|
|
if (weight == null||weight.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
rowErrors.add("货物重量不能为空,且必须输入大于0的有效数字");
|
|
|
}
|
|
|
- // 货物体积
|
|
|
+ // 货物体积
|
|
|
BigDecimal volume = vo.getGoodsVolume();
|
|
|
if (volume == null||volume.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
rowErrors.add("货物体积不能为空,且必须输入大于0的有效数字");
|
|
|
@@ -780,7 +786,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
if (goodsQty == null || goodsQty <= 0) {
|
|
|
rowErrors.add("货物数量不能为空,且必须输入大于0的有效数字");
|
|
|
}
|
|
|
- String productLabel = vo.getProductCode(); // Excel 传的是中文
|
|
|
+ String productLabel = vo.getProductCode();
|
|
|
if (!StringUtils.hasText(productLabel)) {
|
|
|
rowErrors.add("产品类型不能为空");
|
|
|
}
|
|
|
@@ -790,11 +796,208 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
rowErrors.add("产品类型【" + productLabel + "】不存在,请检查填写是否正确");
|
|
|
}
|
|
|
vo.setProductCode(productCode);
|
|
|
+ if (!rowErrors.isEmpty()) {
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", String.join(",", rowErrors));
|
|
|
+ errorList.add(errorMap);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //这里拿到生成的id进行前置校验用 如果全部通过的时候 这个还需要用到
|
|
|
+ String orderId = redisIdGenerator.generateUniqueId("RJSD");
|
|
|
+ vo.setWaybillNo(orderId);
|
|
|
+ //全部校验完后在进行 下单前置校验
|
|
|
+ BizWaybillOrder bizWaybillOrder = convertToSFBizWaybillOrder(vo, loginUser);
|
|
|
+ JSONObject jsonObject = logisticsOrderService.precheckOrder(bizWaybillOrder);
|
|
|
+ if (!jsonObject.getBooleanValue("success")) {
|
|
|
+ log.warn("订单前置校验未通过!发件人:{}, 收件人:{}, 原因:{}",
|
|
|
+ vo.getSenderName(), vo.getReceiverName(), jsonObject.getString("msg"));
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", "订单前置校验未通过 原因:" + jsonObject.getString("msg"));
|
|
|
+ errorList.add(errorMap);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ successList.add(bizWaybillOrder);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", "系统异常:" + e.getMessage());
|
|
|
+ errorList.add(errorMap);
|
|
|
+ log.error("第{}行校验异常", row, e);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ });
|
|
|
+ List<Map<String, Object>> sortedErrors = errorList.stream()
|
|
|
+ .sorted(Comparator.comparingInt(m -> (Integer) m.get("row")))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
|
|
|
- /*//还需要校验一下收件地址寄件地址的省市区信息是否合规
|
|
|
+ StringBuilder errorMsg = new StringBuilder();
|
|
|
+ for (Map<String, Object> map : sortedErrors) {
|
|
|
+ errorMsg.append("第").append(map.get("row")).append("行:")
|
|
|
+ .append(map.get("msg")).append("\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("errorMsg", errorMsg.toString());
|
|
|
+ result.put("orderList", successList); // 注意:你之前是 orederList 拼写错误
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Map<String, Object> validateAndGetErrorJd(List<JDOrderDTO> orderList) {
|
|
|
+ {
|
|
|
+ LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
+ Map<String,Object> result= new HashMap<>();
|
|
|
+ //先把类型拿出来
|
|
|
+ Map productParam= new HashMap<>();
|
|
|
+ productParam.put("dictType","jd_logistics_product_code");
|
|
|
+ productParam.put("companyType","1");
|
|
|
+ productParam.put("deptId",loginUser.getSysUser().getDeptId());
|
|
|
+ List<SysDictData> allProductDictList = dictDataMapper.selectDictDataSfProductList(productParam);
|
|
|
+ // 转成 Map:label -> value,方便快速查找
|
|
|
+ Map<String, String> productMap = allProductDictList.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ SysDictData::getDictLabel,
|
|
|
+ SysDictData::getDictValue,
|
|
|
+ (existing, replacement) -> existing // 重复 label 保留第一个
|
|
|
+ ));
|
|
|
+
|
|
|
+ // ===================== 并行校验(线程安全,行号正确) =====================
|
|
|
+ List<Map<String, Object>> errorList = Collections.synchronizedList(new ArrayList<>());
|
|
|
+ List<BizWaybillOrder> successList = Collections.synchronizedList(new ArrayList<>());
|
|
|
+
|
|
|
+
|
|
|
+ IntStream.range(0, orderList.size()).parallel().forEach(i -> {
|
|
|
+ JDOrderDTO vo = orderList.get(i);
|
|
|
+ int row = i + 2; // 行号完全正确
|
|
|
+ List<String> rowErrors = new ArrayList<>();
|
|
|
+ try {
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(vo.getReceiverPhone()) || !vo.getReceiverPhone().matches("1[3-9]\\d{9}")) {
|
|
|
+ rowErrors.add("收件人手机号为空或格式不正确");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(vo.getSenderPhone()) || !vo.getSenderPhone().matches("1[3-9]\\d{9}")) {
|
|
|
+ rowErrors.add("寄件人手机号为空或格式不正确");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(vo.getReceiverAddress())) {
|
|
|
+ rowErrors.add("收件地址不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(vo.getSenderAddress())) {
|
|
|
+ rowErrors.add("寄件地址不能为空");
|
|
|
+ }
|
|
|
+ if (StringUtils.isBlank(vo.getGoodsName())) {
|
|
|
+ rowErrors.add("物品名称不能为空");
|
|
|
+ }
|
|
|
+ // 货物重量校验
|
|
|
+ BigDecimal weight = vo.getGoodsWeight();
|
|
|
+ if (weight == null||weight.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ rowErrors.add("货物重量不能为空,且必须输入大于0的有效数字");
|
|
|
+ }
|
|
|
+ // 货物体积
|
|
|
+ BigDecimal volume = vo.getGoodsVolume();
|
|
|
+ if (volume == null||volume.compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ rowErrors.add("货物体积不能为空,且必须输入大于0的有效数字");
|
|
|
+ }
|
|
|
+ Long goodsQty = vo.getGoodsQty();
|
|
|
+ if (goodsQty == null || goodsQty <= 0) {
|
|
|
+ rowErrors.add("货物数量不能为空,且必须输入大于0的有效数字");
|
|
|
+ }
|
|
|
+ String productLabel = vo.getProductCode();
|
|
|
+ if (!StringUtils.hasText(productLabel)) {
|
|
|
+ rowErrors.add("产品类型不能为空");
|
|
|
+ }
|
|
|
+
|
|
|
+ String productCode = productMap.get(productLabel);
|
|
|
+ if (productCode == null) {
|
|
|
+ rowErrors.add("产品类型【" + productLabel + "】不存在,请检查填写是否正确");
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != vo.getIsPack() && !"是".equals(vo.getIsPack()) && !"否".equals(vo.getIsPack())) {
|
|
|
+ rowErrors.add("包装服务参数有误;");
|
|
|
+ }
|
|
|
+ if (null != vo.getIsReceiptCollect() && !"是".equals(vo.getIsReceiptCollect()) && !"否".equals(vo.getIsReceiptCollect())) {
|
|
|
+ rowErrors.add("签单返还参数有误;");
|
|
|
+ }
|
|
|
+ if (null != vo.getGuaranteeMoney() && vo.getGuaranteeMoney().compareTo(new BigDecimal("0")) <= 0) {
|
|
|
+ rowErrors.add("保价金额不能小于等于0;");
|
|
|
+ }
|
|
|
+ vo.setAddedService(getAddedService(vo));
|
|
|
+ vo.setProductCode(productCode);
|
|
|
+ if (!rowErrors.isEmpty()) {
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", String.join(",", rowErrors));
|
|
|
+ errorList.add(errorMap);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ BizWaybillOrder bizWaybillOrder = convertToBizWaybillOrder(vo, loginUser);
|
|
|
+ String orderId = redisIdGenerator.generateUniqueId("RJSD");
|
|
|
+ bizWaybillOrder.setWaybillNo(orderId);
|
|
|
+ bizWaybillOrder.setOrderStatus(OrderStatusEnum.ORDER_STATUS_1.getCode());
|
|
|
+
|
|
|
+ // 前置校验
|
|
|
+ bizWaybillOrder.setSenderProvince("");
|
|
|
+ bizWaybillOrder.setSenderCity("");
|
|
|
+ bizWaybillOrder.setSenderCounty("");
|
|
|
+ bizWaybillOrder.setReceiverProvince("");
|
|
|
+ bizWaybillOrder.setReceiverCity("");
|
|
|
+ bizWaybillOrder.setReceiverCounty("");
|
|
|
+
|
|
|
+ JSONObject jsonObject = logisticsOrderService.precheckOrder(bizWaybillOrder);
|
|
|
+ if (!jsonObject.getBooleanValue("success")) { log.warn("订单前置校验未通过!发件人:{}, 收件人:{}, 原因:{}",
|
|
|
+ vo.getSenderName(), vo.getReceiverName(), jsonObject.getString("msg"));
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", "订单前置校验未通过 原因:" + jsonObject.getString("msg"));
|
|
|
+ errorList.add(errorMap);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ successList.add(bizWaybillOrder);
|
|
|
+ } catch (Exception e) {
|
|
|
+ Map<String, Object> errorMap = new HashMap<>();
|
|
|
+ errorMap.put("row", row);
|
|
|
+ errorMap.put("msg", "系统异常:" + e.getMessage());
|
|
|
+ errorList.add(errorMap);
|
|
|
+ log.error("第{}行校验异常", row, e);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ List<Map<String, Object>> sortedErrors = errorList.stream()
|
|
|
+ .sorted(Comparator.comparingInt(m -> (Integer) m.get("row")))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+
|
|
|
+ StringBuilder errorMsg = new StringBuilder();
|
|
|
+ for (Map<String, Object> map : sortedErrors) {
|
|
|
+ errorMsg.append("第").append(map.get("row")).append("行:")
|
|
|
+ .append(map.get("msg")).append("\n");
|
|
|
+ }
|
|
|
+
|
|
|
+ result.put("errorMsg", errorMsg.toString());
|
|
|
+ result.put("orderList", successList); // 注意:你之前是 orederList 拼写错误
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Async
|
|
|
+ @Override
|
|
|
+ public void asyncBatchInsertJd(List<BizWaybillOrder> orderList, Integer orderType) {
|
|
|
+ String batchNum = redisIdGenerator.generateUniqueId("JDPC");
|
|
|
+
|
|
|
+ int successCount = 0;
|
|
|
+ int failCount = 0;
|
|
|
+ List<String> errorMessages = new ArrayList<>();
|
|
|
+ List<BizWaybillOrder> failList= new ArrayList<>();
|
|
|
+ for (BizWaybillOrder dto : orderList) {
|
|
|
+ try {
|
|
|
+ //还需要校验一下收件地址寄件地址的省市区信息是否合规
|
|
|
// ===================== 解析 发件地址 省市区 =====================
|
|
|
Map<String, Object> senderParam = new HashMap<>();
|
|
|
- senderParam.put("param", vo.getSenderAddress());
|
|
|
+ senderParam.put("param", dto.getSenderAddress());
|
|
|
Map<String, Object> senderResultMap = kuaidi100Service.queryIcrExpres(senderParam);
|
|
|
Map<String, Object> senderData = (Map<String, Object>) senderResultMap.get("data");
|
|
|
List<Map<String, Object>> senderResultList = (List<Map<String, Object>>) senderData.get("result");
|
|
|
@@ -806,12 +1009,12 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
String senderProvince = senderSplit[0];
|
|
|
String senderCity = senderSplit[1];
|
|
|
String senderDistrict = senderSplit[2];
|
|
|
- vo.setSenderProvince(senderProvince);
|
|
|
- vo.setSenderCity(senderCity);
|
|
|
- vo.setSenderCounty(senderDistrict);
|
|
|
- // ===================== 解析 收件地址 省市区 =====================
|
|
|
+ dto.setSenderProvince(senderProvince);
|
|
|
+ dto.setSenderCity(senderCity);
|
|
|
+ dto.setSenderCounty(senderDistrict);
|
|
|
+ // ===================== 解析 收件地址 省市区 =====================
|
|
|
Map<String, Object> receiverParam = new HashMap<>();
|
|
|
- receiverParam.put("param", vo.getReceiverAddress());
|
|
|
+ receiverParam.put("param", dto.getReceiverAddress());
|
|
|
Map<String, Object> receiverResultMap = kuaidi100Service.queryIcrExpres(receiverParam);
|
|
|
Map<String, Object> receiverData = (Map<String, Object>) receiverResultMap.get("data");
|
|
|
List<Map<String, Object>> receiverResultList = (List<Map<String, Object>>) receiverData.get("result");
|
|
|
@@ -823,36 +1026,50 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
String receiverProvince = receiverSplit[0];
|
|
|
String receiverCity = receiverSplit[1];
|
|
|
String receiverDistrict = receiverSplit[2];
|
|
|
- vo.setReceiverProvince(receiverProvince);
|
|
|
- vo.setReceiverCity(receiverCity);
|
|
|
- vo.setReceiverCounty(receiverDistrict);*/
|
|
|
- //这里拿到生成的id进行前置校验用 如果全部通过的时候 这个还需要用到
|
|
|
- String orderId = redisIdGenerator.generateUniqueId("RJSD");
|
|
|
- vo.setWaybillNo(orderId);
|
|
|
+ dto.setReceiverProvince(receiverProvince);
|
|
|
+ dto.setReceiverCity(receiverCity);
|
|
|
+ dto.setReceiverCounty(receiverDistrict);
|
|
|
|
|
|
- //全部校验完后在进行 下单前置校验
|
|
|
- BizWaybillOrder bizWaybillOrder = convertToSFBizWaybillOrder(vo, loginUser);
|
|
|
- JSONObject jsonObject = logisticsOrderService.precheckOrder(bizWaybillOrder);
|
|
|
- if (!jsonObject.getBooleanValue("success")) {
|
|
|
- log.warn("订单前置校验未通过!发件人:{}, 收件人:{}, 原因:{}",
|
|
|
- vo.getSenderName(), vo.getReceiverName(), jsonObject.getString("msg"));
|
|
|
- rowErrors.add("订单前置校验未通过 原因:"+jsonObject.getString("msg"));
|
|
|
+ // 调用下单接口
|
|
|
+ JSONObject orderObject = logisticsOrderService.createOrder(dto);
|
|
|
+ if (!orderObject.getBooleanValue("success")) {
|
|
|
+ log.warn("下单失败!发件人:{}, 收件人:{}, 原因:{}",
|
|
|
+ dto.getSenderName(), dto.getReceiverName(), orderObject.getString("msg"));
|
|
|
+ failCount++;
|
|
|
+ errorMessages.add(String.format("订单 %s-%s 下单失败:%s",
|
|
|
+ dto.getSenderName(), dto.getReceiverName(), orderObject.getString("msg")));
|
|
|
+ failList.add(dto);
|
|
|
+ continue;
|
|
|
}
|
|
|
- bizWaybillOrderList.add(bizWaybillOrder);
|
|
|
- if (!rowErrors.isEmpty()) {
|
|
|
- errorMsg.append("第").append(row).append("行:")
|
|
|
- .append(String.join(",", rowErrors)) // 用逗号拼接所有错误
|
|
|
- .append("\n");
|
|
|
- continue; // 跳过这一行,不进正常列表
|
|
|
+
|
|
|
+ // 设置默认值
|
|
|
+ dto.setPickupType(1);
|
|
|
+ dto.setCreateTime(DateUtils.getNowDate());
|
|
|
+ dto.setBatchNum(batchNum);
|
|
|
+ dto.setOrderStatus(OrderStatusEnum.ORDER_STATUS_1.getCode());
|
|
|
+ dto.setWaybillNo(redisIdGenerator.generateUniqueId("RJSD"));
|
|
|
+ // 保存到数据库
|
|
|
+ int result = bizWaybillOrderMapper.insertBizWaybillOrder(dto);
|
|
|
+ if (result > 0) {
|
|
|
+ successCount++;
|
|
|
+ // 保存最近使用地址
|
|
|
+ saveRecentAddresses(dto, dto.getUserId());
|
|
|
+ } else {
|
|
|
+ failCount++;
|
|
|
+ errorMessages.add(String.format("订单 %s-%s 保存失败",
|
|
|
+ dto.getSenderName(), dto.getReceiverName()));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
- // 拼接错误:第X行 + 原因
|
|
|
- errorMsg.append("第").append(row).append("行:").append(e.getMessage()).append("\n");
|
|
|
+ log.error("批量下单异常!发件人:{}, 收件人:{}",
|
|
|
+ dto.getSenderName(), dto.getReceiverName(), e);
|
|
|
+ failCount++;
|
|
|
+ errorMessages.add(String.format("订单 %s-%s 异常:%s",
|
|
|
+ dto.getSenderName(), dto.getReceiverName(), e.getMessage()));
|
|
|
}
|
|
|
}
|
|
|
- result.put("errorMsg",errorMsg);
|
|
|
- result.put("orederList",bizWaybillOrderList);
|
|
|
- return result;
|
|
|
+ log.info("批量下单完成!总数:{}, 成功:{}, 失败:{}", orderList.size(), successCount, failCount);
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -887,7 +1104,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
// 取件时间
|
|
|
bizWaybillOrder.setSendStartTime(dto.getSendStartTime());
|
|
|
//结束时间需要计算出来
|
|
|
- //bizWaybillOrder.setSendEndTime(dto.getSendEndTime());
|
|
|
+
|
|
|
LocalDateTime now = LocalDateTime.now();
|
|
|
// 先整点归零
|
|
|
LocalDateTime hourStart = now.withMinute(0).withSecond(0).withNano(0);
|
|
|
@@ -905,7 +1122,7 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
|
|
|
|
|
|
|
|
|
- // 2. 构建保价 JSON 格式(你要的结构)
|
|
|
+ // 2. 构建保价 JSON 格式
|
|
|
Map<String, Object> serviceMap = new HashMap<>();
|
|
|
serviceMap.put("isPack", null); // 固定 null 顺丰没有现在
|
|
|
serviceMap.put("guaranteeMoney", dto.getProtecPrice()); // 赋值 Excel 里的报价金额
|
|
|
@@ -966,13 +1183,12 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
LocalDateTime nextHour = hourStart.plusHours(1);
|
|
|
// 结束再+1
|
|
|
LocalDateTime endHour = nextHour.plusHours(1);
|
|
|
+
|
|
|
// 转Date给你原有字段用
|
|
|
Date startTime = Date.from(nextHour.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
Date endTime = Date.from(endHour.atZone(ZoneId.systemDefault()).toInstant());
|
|
|
bizWaybillOrder.setSendStartTime(startTime);
|
|
|
bizWaybillOrder.setSendEndTime(endTime);
|
|
|
-// bizWaybillOrder.setSendStartTime(DateUtils.parseDate(dto.getSendStartTime()));
|
|
|
-// bizWaybillOrder.setSendEndTime(DateUtils.parseDate(dto.getSendEndTime()));
|
|
|
|
|
|
// 产品信息和增值服务
|
|
|
bizWaybillOrder.setProductCode(dto.getProductCode());
|
|
|
@@ -980,7 +1196,12 @@ public class BizWaybillOrderServiceImpl implements IBizWaybillOrderService
|
|
|
|
|
|
// 备注
|
|
|
bizWaybillOrder.setRemark(dto.getRemark());
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
+ bizWaybillOrder.setDeptId(loginUser.getSysUser().getDeptId());
|
|
|
+ bizWaybillOrder.setUserId(loginUser.getUserid());
|
|
|
+
|
|
|
+
|
|
|
return bizWaybillOrder;
|
|
|
}
|
|
|
|