|
@@ -14,6 +14,7 @@ import com.sckw.core.utils.StringUtils;
|
|
|
import com.sckw.fleet.api.model.vo.DriverConductRulesVO;
|
|
import com.sckw.fleet.api.model.vo.DriverConductRulesVO;
|
|
|
import com.sckw.fleet.api.model.vo.RTruckVo;
|
|
import com.sckw.fleet.api.model.vo.RTruckVo;
|
|
|
import com.sckw.fleet.api.model.vo.TruckDispatchCoefficientVO;
|
|
import com.sckw.fleet.api.model.vo.TruckDispatchCoefficientVO;
|
|
|
|
|
+import com.sckw.order.api.model.OrderUnitInfoDetailVO;
|
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
import com.sckw.product.api.model.KwpGoods;
|
|
|
import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
import com.sckw.system.api.model.dto.res.SysDictResDto;
|
|
|
import com.sckw.transport.model.*;
|
|
import com.sckw.transport.model.*;
|
|
@@ -59,7 +60,9 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
if (orderTicket == null) {
|
|
if (orderTicket == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录皮重!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.WAYBILL_ORDER_TICKET_NOT_FOUND, "当前物流运单装卸货信息不存在,无法记录皮重!");
|
|
|
}
|
|
}
|
|
|
- if (checkIsFirst(waybillOrder)) {
|
|
|
|
|
|
|
+ // 校验是否是第一次过磅
|
|
|
|
|
+ checkIsFirst(waybillOrder);
|
|
|
|
|
+ if (waybillOrder.getIsExistWeighbridges()) {
|
|
|
//第一次过磅
|
|
//第一次过磅
|
|
|
firstWeighbridge(param, waybillOrder, orderTicket);
|
|
firstWeighbridge(param, waybillOrder, orderTicket);
|
|
|
} else {
|
|
} else {
|
|
@@ -74,10 +77,14 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param waybillOrder
|
|
* @param waybillOrder
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
- private Boolean checkIsFirst(KwtWaybillOrder waybillOrder) {
|
|
|
|
|
|
|
+ private void checkIsFirst(KwtWaybillOrder waybillOrder) {
|
|
|
List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
|
|
List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
|
|
|
.queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
|
|
.queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
|
|
|
- return CollectionUtils.isEmpty(weighbridges);
|
|
|
|
|
|
|
+ if (CollectionUtils.isEmpty(weighbridges)) {
|
|
|
|
|
+ waybillOrder.setIsExistWeighbridges(Boolean.TRUE);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ waybillOrder.setIsExistWeighbridges(Boolean.FALSE);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -86,6 +93,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param waybillOrder
|
|
* @param waybillOrder
|
|
|
*/
|
|
*/
|
|
|
private void firstWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
private void firstWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
|
|
|
+ log.info("[过磅称重]开始第一次过磅称重,入参参数:{}", JSON.toJSONString(waybillOrder));
|
|
|
if (param.getWeighAmount() == null) {
|
|
if (param.getWeighAmount() == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "皮重不能为空!");
|
|
|
}
|
|
}
|
|
@@ -114,7 +122,8 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
createForkliftWaybill(waybillOrder);
|
|
createForkliftWaybill(waybillOrder);
|
|
|
|
|
|
|
|
//5.创建过磅记录
|
|
//5.创建过磅记录
|
|
|
- createWeighbridges(param,waybillOrder);
|
|
|
|
|
|
|
+ createWeighbridges(param, waybillOrder);
|
|
|
|
|
+ log.info("[过磅称重]第一次过磅称重结束!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -122,54 +131,83 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param waybillOrder
|
|
* @param waybillOrder
|
|
|
*/
|
|
*/
|
|
|
private void createForkliftWaybill(KwtWaybillOrder waybillOrder) {
|
|
private void createForkliftWaybill(KwtWaybillOrder waybillOrder) {
|
|
|
- CompletableFuture.runAsync(() ->{
|
|
|
|
|
- try {
|
|
|
|
|
- log.debug("开始异步保存铲车司机数据,运单ID:{}", waybillOrder.getId());
|
|
|
|
|
-
|
|
|
|
|
- KwtForkliftWaybillOrder forklift = new KwtForkliftWaybillOrder();
|
|
|
|
|
- forklift.setFOrderNo("F" + System.currentTimeMillis());
|
|
|
|
|
- forklift.setEntId(waybillOrder.getEntId());
|
|
|
|
|
- forklift.setWOrderId(waybillOrder.getId());
|
|
|
|
|
- forklift.setLOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
-
|
|
|
|
|
- //查询字典
|
|
|
|
|
- Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
|
|
|
|
|
- Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
|
|
|
|
|
- Map<String, String> goodsTypeMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), new HashMap<>());
|
|
|
|
|
- Map<String, String> goodsSpecMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.GOODS_SPEC.getType(), new HashMap<>());
|
|
|
|
|
-
|
|
|
|
|
- // 查询商品信息
|
|
|
|
|
- KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsRepository.queryByLogOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
- KwpGoods goods = goodsInfoService.getGoodsById(orderGoods.getGoodsId());
|
|
|
|
|
- if (goods != null) {
|
|
|
|
|
- List<SysDictResDto> dictResDtoList = remoteSystemService.queryDictFrontAll(DictTypeEnum.GOODS_SPEC.getType(), goods.getSpec());
|
|
|
|
|
- forklift.setDictId(CollectionUtils.isNotEmpty(dictResDtoList) ? dictResDtoList.get(0).getId() : -1L);
|
|
|
|
|
- forklift.setGoodsId(goods.getId());
|
|
|
|
|
- forklift.setGoodsName(goods.getName()+"/"+goodsTypeMap.getOrDefault(goods.getGoodsType(),"")+"/"+goodsSpecMap.getOrDefault(goods.getSpec(), ""));
|
|
|
|
|
- }
|
|
|
|
|
- forklift.setLoadingType(LoadingTypeEnum.LOADING.getCode());
|
|
|
|
|
- forklift.setStatus(ForkliftStatusEnum.PENDING_ORDERS.getCode());
|
|
|
|
|
- forklift.setWaybillAcceptTime(waybillOrder.getCreateTime());
|
|
|
|
|
-
|
|
|
|
|
- // 任务量
|
|
|
|
|
- KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
|
|
- forklift.setEntrustAmount(waybillSubtask.getEntrustAmount());
|
|
|
|
|
- // 车辆类型
|
|
|
|
|
- RTruckVo truckVo = remoteFleetService.findTruckByTruckNo(waybillOrder.getTruckNo());
|
|
|
|
|
- if (truckVo != null) {
|
|
|
|
|
- forklift.setTruckType(truckVo.getTruckType());
|
|
|
|
|
- forklift.setCarAxis(truckVo.getCarAxis());
|
|
|
|
|
- }
|
|
|
|
|
- forklift.setCreateTime(new Date());
|
|
|
|
|
- forklift.setCreateUser(waybillOrder.getDriverId());
|
|
|
|
|
- forklift.setUpdateUser(waybillOrder.getDriverId());
|
|
|
|
|
-
|
|
|
|
|
- forkliftWaybillOrderRepository.save(forklift);
|
|
|
|
|
- log.debug("铲车司机数据保存成功");
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "异步保存铲车司机数据失败!");
|
|
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.debug("开始异步保存铲车司机数据,运单ID:{}", waybillOrder.getId());
|
|
|
|
|
+ //企业id
|
|
|
|
|
+ Long entId = getEntId(waybillOrder);
|
|
|
|
|
+
|
|
|
|
|
+ KwtForkliftWaybillOrder forklift = new KwtForkliftWaybillOrder();
|
|
|
|
|
+ forklift.setFOrderNo("F" + System.currentTimeMillis());
|
|
|
|
|
+ forklift.setEntId(entId);
|
|
|
|
|
+ forklift.setWOrderId(waybillOrder.getId());
|
|
|
|
|
+ forklift.setLOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
+
|
|
|
|
|
+ //查询字典
|
|
|
|
|
+ Map<String, Map<String, String>> dictValueAndDictResDtoMap = remoteSystemService.queryDictByType(
|
|
|
|
|
+ Arrays.asList(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), DictTypeEnum.GOODS_SPEC.getType()));
|
|
|
|
|
+ Map<String, String> goodsTypeMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.PRODUCT_NAME_TYPE.getType(), new HashMap<>());
|
|
|
|
|
+ Map<String, String> goodsSpecMap= dictValueAndDictResDtoMap.getOrDefault(DictTypeEnum.GOODS_SPEC.getType(), new HashMap<>());
|
|
|
|
|
+
|
|
|
|
|
+ // 查询商品信息
|
|
|
|
|
+ KwtLogisticsOrderGoods orderGoods = logisticsOrderGoodsRepository.queryByLogOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
+ KwpGoods goods = goodsInfoService.getGoodsById(orderGoods.getGoodsId());
|
|
|
|
|
+ if (goods != null) {
|
|
|
|
|
+ List<SysDictResDto> dictResDtoList = remoteSystemService.queryDictFrontAll(DictTypeEnum.GOODS_SPEC.getType(), goods.getSpec());
|
|
|
|
|
+ forklift.setDictId(CollectionUtils.isNotEmpty(dictResDtoList) ? dictResDtoList.get(0).getId() : -1L);
|
|
|
|
|
+ forklift.setGoodsId(goods.getId());
|
|
|
|
|
+ forklift.setGoodsName(goods.getName()+"/"+goodsTypeMap.getOrDefault(goods.getGoodsType(),"")+"/"+goodsSpecMap.getOrDefault(goods.getSpec(), ""));
|
|
|
}
|
|
}
|
|
|
- });
|
|
|
|
|
|
|
+ forklift.setLoadingType(LoadingTypeEnum.LOADING.getCode());
|
|
|
|
|
+ forklift.setStatus(ForkliftStatusEnum.PENDING_ORDERS.getCode());
|
|
|
|
|
+ forklift.setWaybillAcceptTime(waybillOrder.getCreateTime());
|
|
|
|
|
+
|
|
|
|
|
+ // 任务量
|
|
|
|
|
+ KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
|
|
+ forklift.setEntrustAmount(waybillSubtask.getEntrustAmount());
|
|
|
|
|
+ // 车辆类型
|
|
|
|
|
+ RTruckVo truckVo = remoteFleetService.findTruckByTruckNo(waybillOrder.getTruckNo());
|
|
|
|
|
+ if (truckVo != null) {
|
|
|
|
|
+ forklift.setTruckType(truckVo.getTruckType());
|
|
|
|
|
+ forklift.setCarAxis(truckVo.getCarAxis());
|
|
|
|
|
+ }
|
|
|
|
|
+ forklift.setCreateTime(new Date());
|
|
|
|
|
+ forklift.setCreateUser(waybillOrder.getDriverId());
|
|
|
|
|
+ forklift.setUpdateUser(waybillOrder.getDriverId());
|
|
|
|
|
+
|
|
|
|
|
+ forkliftWaybillOrderRepository.save(forklift);
|
|
|
|
|
+ log.debug("铲车司机数据保存成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.info("[创建装货铲车]保存铲车司机数据异常!", e);
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "保存铲车司机数据失败!");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 获取企业id
|
|
|
|
|
+ * @param waybillOrder
|
|
|
|
|
+ * @return
|
|
|
|
|
+ */
|
|
|
|
|
+ private Long getEntId(KwtWaybillOrder waybillOrder) {
|
|
|
|
|
+ log.info("[创建装货铲车]开始查询企业id,入参参数:{}", JSON.toJSONString(waybillOrder));
|
|
|
|
|
+ Long entId;
|
|
|
|
|
+ KwtLogisticsOrder logOrder = getLogisticsOrder(waybillOrder.getLOrderId());
|
|
|
|
|
+ KwtLogisticsOrderUnit kwtLogisticsOrderUnit = logisticsOrderUnitRepository.queryByLOrderIdAndUnitType(logOrder.getId(), 1);
|
|
|
|
|
+ if (kwtLogisticsOrderUnit == null) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.LOGISTICS_ORDER_NOT_FOUND, "[接单]物流企业信息数据不存在");
|
|
|
|
|
+ }
|
|
|
|
|
+ // 原矿运输山上、上下门卫企业id
|
|
|
|
|
+ List<Long> mockEntIds = Arrays.asList(538039617157337089L, 538040297439891457L);
|
|
|
|
|
+ if (Objects.equals(1, logOrder.getOrderType()) && mockEntIds.contains(kwtLogisticsOrderUnit.getEntId())) {
|
|
|
|
|
+ entId = mockEntIds.get(0);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ List<OrderUnitInfoDetailVO> unitInfoDetailVOS = tradeOrderInfoService.queryOrderUnitByTradeOrderId(logOrder.getTOrderId());
|
|
|
|
|
+ OrderUnitInfoDetailVO unitInfoDetailVO = unitInfoDetailVOS.stream()
|
|
|
|
|
+ .filter(unit -> Objects.equals(unit.getUnitType(), "2"))
|
|
|
|
|
+ .findFirst().orElse(new OrderUnitInfoDetailVO());
|
|
|
|
|
+ entId = unitInfoDetailVO.getEntId();
|
|
|
|
|
+ }
|
|
|
|
|
+ log.info("[创建装货铲车]查询企业id完成,入参参数:{}", JSON.toJSONString(entId));
|
|
|
|
|
+ return entId;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -178,7 +216,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @return
|
|
* @return
|
|
|
*/
|
|
*/
|
|
|
public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder) {
|
|
public void updateGatekeeperOrderStatus(KwtWaybillOrder waybillOrder) {
|
|
|
- log.info("推进门卫数据为已进场:{}", JSON.toJSONString(waybillOrder));
|
|
|
|
|
|
|
+ log.info("开始推进门卫数据为已进场:{}", JSON.toJSONString(waybillOrder));
|
|
|
KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository
|
|
KwtGatekeeperWaybillOrder gatekeeper = gatekeeperWaybillOrderRepository
|
|
|
.queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
|
|
.queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
|
|
|
if (gatekeeper == null) {
|
|
if (gatekeeper == null) {
|
|
@@ -191,35 +229,35 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
gatekeeper.setStatus(GatekeeperStatusEnum.IN_YARD.getCode());
|
|
gatekeeper.setStatus(GatekeeperStatusEnum.IN_YARD.getCode());
|
|
|
gatekeeper.setIntoTime(new Date());
|
|
gatekeeper.setIntoTime(new Date());
|
|
|
gatekeeperWaybillOrderRepository.updateById(gatekeeper);
|
|
gatekeeperWaybillOrderRepository.updateById(gatekeeper);
|
|
|
|
|
+ log.info("推进门卫数据为已进场结算!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 创建过磅记录
|
|
* 创建过磅记录
|
|
|
* @param waybillOrder
|
|
* @param waybillOrder
|
|
|
*/
|
|
*/
|
|
|
- private void createWeighbridges(WaybillOrderCmeIntoWeighParam param,KwtWaybillOrder waybillOrder) {
|
|
|
|
|
- CompletableFuture.runAsync(() ->{
|
|
|
|
|
- try {
|
|
|
|
|
- log.debug("开始异步保存地磅记录,运单ID:{}", waybillOrder.getId());
|
|
|
|
|
- KwtWaybillOrderWeighbridge weighbridge = new KwtWaybillOrderWeighbridge();
|
|
|
|
|
- weighbridge.setWOrderId(waybillOrder.getId());
|
|
|
|
|
- weighbridge.setLOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
- weighbridge.setTruckId(waybillOrder.getTruckId());
|
|
|
|
|
- weighbridge.setTruckNo(waybillOrder.getTruckNo());
|
|
|
|
|
- weighbridge.setType(WeighbridgeTypeEnum.LOADING.getCode());
|
|
|
|
|
- weighbridge.setWeighbridgeId(param.getWeighbridgeId());
|
|
|
|
|
- weighbridge.setWeight(param.getWeighAmount());
|
|
|
|
|
- weighbridge.setWeighUrl(param.getWeighUrl());
|
|
|
|
|
- weighbridge.setCreateTime(new Date());
|
|
|
|
|
- weighbridge.setCreateUser(waybillOrder.getDriverId());
|
|
|
|
|
- weighbridge.setUpdateUser(waybillOrder.getDriverId());
|
|
|
|
|
-
|
|
|
|
|
- waybillOrderWeighbridgeRepository.save(weighbridge);
|
|
|
|
|
- log.debug("异步保存过磅数据保存成功");
|
|
|
|
|
- } catch (Exception e) {
|
|
|
|
|
- throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "异步保存过磅数据失败!");
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
|
|
+ private void createWeighbridges(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
|
|
+ try {
|
|
|
|
|
+ log.debug("开始异步保存地磅记录,运单ID:{}", waybillOrder.getId());
|
|
|
|
|
+ KwtWaybillOrderWeighbridge weighbridge = new KwtWaybillOrderWeighbridge();
|
|
|
|
|
+ weighbridge.setWOrderId(waybillOrder.getId());
|
|
|
|
|
+ weighbridge.setLOrderId(waybillOrder.getLOrderId());
|
|
|
|
|
+ weighbridge.setTruckId(waybillOrder.getTruckId());
|
|
|
|
|
+ weighbridge.setTruckNo(waybillOrder.getTruckNo());
|
|
|
|
|
+ weighbridge.setType(WeighbridgeTypeEnum.LOADING.getCode());
|
|
|
|
|
+ weighbridge.setWeighbridgeId(param.getWeighbridgeId());
|
|
|
|
|
+ weighbridge.setWeight(param.getWeighAmount());
|
|
|
|
|
+ weighbridge.setWeighUrl(param.getWeighUrl());
|
|
|
|
|
+ weighbridge.setCreateTime(new Date());
|
|
|
|
|
+ weighbridge.setCreateUser(waybillOrder.getDriverId());
|
|
|
|
|
+ weighbridge.setUpdateUser(waybillOrder.getDriverId());
|
|
|
|
|
+
|
|
|
|
|
+ waybillOrderWeighbridgeRepository.save(weighbridge);
|
|
|
|
|
+ log.debug("异步保存过磅数据保存成功");
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ log.info("保存过磅数据异常!", e);
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.DATA_SAVE_FAIL, "保存过磅数据失败!");
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -229,18 +267,21 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param waybillOrder
|
|
* @param waybillOrder
|
|
|
*/
|
|
*/
|
|
|
private void laterWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
private void laterWeighbridge(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, KwtWaybillOrderTicket orderTicket) {
|
|
|
|
|
+ log.info("[过磅称重]开始第二次过磅称重,入参参数:{}", JSON.toJSONString(waybillOrder));
|
|
|
if (param.getWeighAmount() == null) {
|
|
if (param.getWeighAmount() == null) {
|
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "毛重不能为空!");
|
|
throw new BusinessPlatfromException(ErrorCodeEnum.PARAM_ERROR, "毛重不能为空!");
|
|
|
}
|
|
}
|
|
|
//1.填充装货单毛重和装货净重
|
|
//1.填充装货单毛重和装货净重
|
|
|
BigDecimal loadAmount = updateGrossAmount(param, orderTicket);
|
|
BigDecimal loadAmount = updateGrossAmount(param, orderTicket);
|
|
|
- //2.填充运单装货净重
|
|
|
|
|
|
|
+ //2.填充子运单装货净重
|
|
|
updateLoadAmount(param, waybillOrder, loadAmount);
|
|
updateLoadAmount(param, waybillOrder, loadAmount);
|
|
|
//3.判断流程
|
|
//3.判断流程
|
|
|
checkProcess(param, waybillOrder, loadAmount);
|
|
checkProcess(param, waybillOrder, loadAmount);
|
|
|
//4.创建过磅记录
|
|
//4.创建过磅记录
|
|
|
- createWeighbridges(param,waybillOrder);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ createWeighbridges(param, waybillOrder);
|
|
|
|
|
+ //5.填补门卫地磅id
|
|
|
|
|
+ updateGatekeeperOrder(param, waybillOrder);
|
|
|
|
|
+ log.info("[过磅称重]第二次过磅称重结束!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -249,6 +290,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param shipmentTicket
|
|
* @param shipmentTicket
|
|
|
*/
|
|
*/
|
|
|
private BigDecimal updateGrossAmount(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrderTicket shipmentTicket) {
|
|
private BigDecimal updateGrossAmount(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrderTicket shipmentTicket) {
|
|
|
|
|
+ log.info("[二次过磅称重]填充装货单毛重和装货净重,入参参数:{}", JSON.toJSONString(param));
|
|
|
//毛重
|
|
//毛重
|
|
|
shipmentTicket.setGrossAmount(param.getWeighAmount());
|
|
shipmentTicket.setGrossAmount(param.getWeighAmount());
|
|
|
//皮重
|
|
//皮重
|
|
@@ -267,12 +309,13 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param loadAmount
|
|
* @param loadAmount
|
|
|
*/
|
|
*/
|
|
|
private void updateLoadAmount(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
private void updateLoadAmount(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
|
|
|
+ log.info("[二次过磅称重]填充子运单装货净重,入参参数:{}", JSON.toJSONString(param));
|
|
|
//更新子运单装货净重
|
|
//更新子运单装货净重
|
|
|
KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
|
|
KwtWaybillOrderSubtask subtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
subtask.setLoadAmount(loadAmount);
|
|
subtask.setLoadAmount(loadAmount);
|
|
|
subtask.setLoadTime(new Date());
|
|
subtask.setLoadTime(new Date());
|
|
|
waybillOrderSubtaskRepository.updateById(subtask);
|
|
waybillOrderSubtaskRepository.updateById(subtask);
|
|
|
- log.info("物流运单离场过磅成功!运单ID: {}, 毛重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getWeighAmount(), loadAmount);
|
|
|
|
|
|
|
+ log.info("[二次过磅称重]填充子运单装货净重结束,运单ID: {}, 毛重: {}, 装货净重: {}", param.getWaybillOrderId(), param.getWeighAmount(), loadAmount);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//
|
|
//
|
|
@@ -286,6 +329,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
* @param loadAmount
|
|
* @param loadAmount
|
|
|
*/
|
|
*/
|
|
|
private void checkProcess(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
private void checkProcess(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, BigDecimal loadAmount) {
|
|
|
|
|
+ log.info("[二次过磅称重]判断过磅称重流程,入参参数:{}", JSON.toJSONString(waybillOrder));
|
|
|
//获取运单任务量
|
|
//获取运单任务量
|
|
|
KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
KwtWaybillOrderSubtask waybillSubtask = getWaybillSubtask(waybillOrder.getId());
|
|
|
if (waybillSubtask.getEntrustAmount() == null) {
|
|
if (waybillSubtask.getEntrustAmount() == null) {
|
|
@@ -338,51 +382,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
// 场景四:正常流程,0.5<净重<=任务量
|
|
// 场景四:正常流程,0.5<净重<=任务量
|
|
|
waybillOrder.setTargetStatus(2);
|
|
waybillOrder.setTargetStatus(2);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-// //场景一:净重<-0.5
|
|
|
|
|
-// if (loadAmount.compareTo(BigDecimal.valueOf(-0.5)) < 0) {
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
-// //场景二:空载离场,-0.5<=净重<=0.5
|
|
|
|
|
-// if (loadAmount.compareTo(BigDecimal.valueOf(0.5)) <= 0) {
|
|
|
|
|
-// waybillOrder.setTargetStatus(1);
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// if (Objects.equals(forklift.getStatus(), ForkliftStatusEnum.PENDING_ORDERS.getCode())) {
|
|
|
|
|
-// //如果铲车司机未接单,则二次过磅的时候,非空载情况,必须校验是否完成装载
|
|
|
|
|
-// //场景:铲车未接单,司机第一次空载离场,第二次空载离场,还是展示空载,其它什么不展示。(就是没有完成装货就什么都不展示)
|
|
|
|
|
-// if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
|
|
|
|
|
-// //什么不展示
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
-// } else {
|
|
|
|
|
-// //如果铲车司机完成装载,则二次过磅的时候,已最新的一次称重为准
|
|
|
|
|
-// //场景:铲车未接单,司机第一次空载离场,然后铲车装货完成。 二次过磅,是什么流程就是什么流程
|
|
|
|
|
-// if (!Objects.equals(CarWaybillV1Enum.EXIT_COMPLETED.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.EMPTY_WAIT_LEAVE.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.REPLENISH_FINISH.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.WAIT_LEAVE.getCode(), waybillOrder.getStatus())
|
|
|
|
|
-// && !Objects.equals(CarWaybillV1Enum.UNLOADING.getCode(), waybillOrder.getStatus())) {
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// //法定载重
|
|
|
|
|
-// BigDecimal truckStandardLoad = getTruckStandardLoad(param.getTruckNo());
|
|
|
|
|
-// // 场景三:超载流程, 净重>任务量或者毛重>法定载重
|
|
|
|
|
-// if (loadAmount.compareTo(entrustAmount) > 0 || param.getWeighAmount().compareTo(truckStandardLoad) > 0) {
|
|
|
|
|
-// waybillOrder.setTargetStatus(3);
|
|
|
|
|
-// return;
|
|
|
|
|
-// }
|
|
|
|
|
-//
|
|
|
|
|
-// // 场景四:正常流程,0.5<净重<=任务量
|
|
|
|
|
-// waybillOrder.setTargetStatus(2);
|
|
|
|
|
-
|
|
|
|
|
|
|
+ log.info("[二次过磅称重]判断过磅称重流程结束!");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -398,6 +398,26 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
return truckVo.getLegalLoad();
|
|
return truckVo.getLegalLoad();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 创建过磅记录
|
|
|
|
|
+ * @param waybillOrder
|
|
|
|
|
+ */
|
|
|
|
|
+ private void updateGatekeeperOrder(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
|
|
+ log.info("[二次过磅称重]填补门卫地磅id,入参参数:{}", JSON.toJSONString(waybillOrder));
|
|
|
|
|
+ KwtGatekeeperWaybillOrder gatekeeperWaybillOrder = gatekeeperWaybillOrderRepository
|
|
|
|
|
+ .queryGatekeeperWaybillOrderByWOrderId(waybillOrder.getId(), GatekeeperTypeEnum.LOADING.getCode());
|
|
|
|
|
+ if (gatekeeperWaybillOrder == null) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_NOT_FOUND, "门卫订单不存在!");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!GatekeeperStatusEnum.IN_YARD.getCode().equals(gatekeeperWaybillOrder.getStatus())) {
|
|
|
|
|
+ throw new BusinessPlatfromException(ErrorCodeEnum.GATEKEEPER_ORDER_STATUS_ERROR, "门卫状态异常,不能填充门卫地磅id!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ gatekeeperWaybillOrder.setWeighbridgeId(param.getWeighbridgeId());
|
|
|
|
|
+ gatekeeperWaybillOrderRepository.updateById(gatekeeperWaybillOrder);
|
|
|
|
|
+ log.info("[二次过磅称重]填补门卫地磅id结束!");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
protected String getProcessName() {
|
|
protected String getProcessName() {
|
|
|
return "称重过磅";
|
|
return "称重过磅";
|
|
@@ -407,7 +427,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
protected void getStatus(KwtWaybillOrder waybillOrder) {
|
|
protected void getStatus(KwtWaybillOrder waybillOrder) {
|
|
|
Integer status;
|
|
Integer status;
|
|
|
// 校验是否第一次过磅
|
|
// 校验是否第一次过磅
|
|
|
- if (checkIsFirst(waybillOrder)) {
|
|
|
|
|
|
|
+ if (waybillOrder.getIsExistWeighbridges()) {
|
|
|
status = CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
|
|
status = CarWaybillV1Enum.REFUSE_TRAFFIC.getCode();
|
|
|
updateOrderStatus(waybillOrder, status);
|
|
updateOrderStatus(waybillOrder, status);
|
|
|
return;
|
|
return;
|
|
@@ -457,12 +477,12 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
*/
|
|
*/
|
|
|
@Override
|
|
@Override
|
|
|
protected void createNodeTrace(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
protected void createNodeTrace(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
|
|
|
|
|
- .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
|
|
|
|
|
- if (CollectionUtils.isEmpty(weighbridges)) {
|
|
|
|
|
|
|
+ if (waybillOrder.getIsExistWeighbridges()) {
|
|
|
// 首次过磅
|
|
// 首次过磅
|
|
|
createArrivedAndFirstWeighNodes(param, waybillOrder);
|
|
createArrivedAndFirstWeighNodes(param, waybillOrder);
|
|
|
} else {
|
|
} else {
|
|
|
|
|
+ List<KwtWaybillOrderWeighbridge> weighbridges = waybillOrderWeighbridgeRepository
|
|
|
|
|
+ .queryWaybillOrderWeighbridgeByWOrderId(waybillOrder.getId(), WeighbridgeTypeEnum.LOADING.getCode());
|
|
|
// 后续过磅
|
|
// 后续过磅
|
|
|
createMultipleWeighNode(param, waybillOrder, weighbridges);
|
|
createMultipleWeighNode(param, waybillOrder, weighbridges);
|
|
|
}
|
|
}
|
|
@@ -500,7 +520,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
private void createMultipleWeighNode(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, List<KwtWaybillOrderWeighbridge> weighbridges) {
|
|
private void createMultipleWeighNode(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder, List<KwtWaybillOrderWeighbridge> weighbridges) {
|
|
|
KwtWaybillOrderNode node = getWaybillOrderNode(param, waybillOrder);
|
|
KwtWaybillOrderNode node = getWaybillOrderNode(param, waybillOrder);
|
|
|
//过磅次数
|
|
//过磅次数
|
|
|
- int size = weighbridges.size() + 1;
|
|
|
|
|
|
|
+ int size = weighbridges.size();
|
|
|
String grossAmount = getWeighAmount(param);
|
|
String grossAmount = getWeighAmount(param);
|
|
|
node.setRemark("第" + size + "次称重,[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]");
|
|
node.setRemark("第" + size + "次称重,[" + param.getWeighbridgeName() + "]称重[" + grossAmount + "吨]");
|
|
|
waybillOrderNodeRepository.save(node);
|
|
waybillOrderNodeRepository.save(node);
|
|
@@ -526,7 +546,7 @@ public class ComeIntoHandler extends AbstractWaybillOrderHandler<WaybillOrderCme
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
protected void calculateAutoDispatchScore(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
protected void calculateAutoDispatchScore(WaybillOrderCmeIntoWeighParam param, KwtWaybillOrder waybillOrder) {
|
|
|
- if (checkIsFirst(waybillOrder)) {
|
|
|
|
|
|
|
+ if (waybillOrder.getIsExistWeighbridges()) {
|
|
|
//校验连续按时到场次数
|
|
//校验连续按时到场次数
|
|
|
checkContinuousArriveTimes(waybillOrder);
|
|
checkContinuousArriveTimes(waybillOrder);
|
|
|
}
|
|
}
|