|
|
@@ -0,0 +1,758 @@
|
|
|
+package com.sckw.transport.service;
|
|
|
+
|
|
|
+import cn.hutool.core.util.ArrayUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.sckw.contract.api.RemoteContractService;
|
|
|
+import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
|
|
|
+import com.sckw.core.common.enums.enums.DictTypeEnum;
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
+import com.sckw.core.model.constant.NumberConstant;
|
|
|
+import com.sckw.core.model.enums.LogisticsOrderEnum;
|
|
|
+import com.sckw.core.model.enums.OrderRuleEnum;
|
|
|
+import com.sckw.core.model.enums.RedisOrderGenerateEnum;
|
|
|
+import com.sckw.core.utils.CollectionUtils;
|
|
|
+import com.sckw.core.utils.IdWorker;
|
|
|
+import com.sckw.core.utils.OrderGenerateSeqNoUtils;
|
|
|
+import com.sckw.core.web.constant.HttpStatus;
|
|
|
+import com.sckw.core.web.context.LoginUserHolder;
|
|
|
+import com.sckw.core.web.response.HttpResult;
|
|
|
+import com.sckw.fleet.api.RemoteFleetService;
|
|
|
+import com.sckw.manage.api.RemoteManageService;
|
|
|
+import com.sckw.manage.api.model.dto.res.LineFreightAddressRes;
|
|
|
+import com.sckw.mongo.enums.BusinessTypeEnum;
|
|
|
+import com.sckw.mongo.model.SckwLogisticsOrder;
|
|
|
+import com.sckw.order.api.dubbo.TradeOrderInfoService;
|
|
|
+import com.sckw.order.api.model.*;
|
|
|
+import com.sckw.product.api.dubbo.GoodsInfoService;
|
|
|
+import com.sckw.product.api.model.KwpGoods;
|
|
|
+import com.sckw.redis.config.RedisLockUtil;
|
|
|
+import com.sckw.stream.enums.MessageEnum;
|
|
|
+import com.sckw.stream.model.SckwBusSum;
|
|
|
+import com.sckw.system.api.RemoteSystemService;
|
|
|
+import com.sckw.system.api.model.dto.res.EntCacheResDto;
|
|
|
+import com.sckw.transport.common.config.MessageUrlConfig;
|
|
|
+import com.sckw.transport.dao.*;
|
|
|
+import com.sckw.transport.model.*;
|
|
|
+import com.sckw.transport.model.dto.AddressInfoDto;
|
|
|
+import com.sckw.transport.model.dto.ContractDto;
|
|
|
+import com.sckw.transport.model.dto.LineFreightDto;
|
|
|
+import com.sckw.transport.model.dto.LogisticsConsignmentDto;
|
|
|
+import jakarta.annotation.Resource;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.cloud.stream.function.StreamBridge;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author lfdc
|
|
|
+ * @description 物流订单Service-v4.2
|
|
|
+ * @date 2024-03-04 11:06:07
|
|
|
+ */
|
|
|
+@Slf4j
|
|
|
+@Service
|
|
|
+@SuppressWarnings("all")
|
|
|
+public class KwtLogisticsOrderConsignmentService {
|
|
|
+
|
|
|
+ @Resource
|
|
|
+ private StreamBridge streamBridge;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ RedisLockUtil redisLockUtil;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtTransportCommonService transportCommonService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ KwtWaybillOrderService waybillOrderService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ KwtLogisticsOrderGoodsService logisticsOrderGoodsService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ MessageUrlConfig messageUrlConfig;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtCommonService commonService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
|
|
|
+ RemoteSystemService remoteSystemService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
|
|
|
+ GoodsInfoService goodsInfoService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 80000)
|
|
|
+ TradeOrderInfoService tradeOrderInfoService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
|
|
|
+ RemoteFleetService remoteFleetService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
|
|
|
+ RemoteContractService contractService;
|
|
|
+
|
|
|
+ @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
|
|
|
+ RemoteManageService manageService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderLineFreightRateMapper logisticsOrderLineFreightRateMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderContractMapper kwtLogisticsOrderContractMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderAddressMapper kwtLogisticsOrderAddressMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderAmountMapper logisticsOrderAmountMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderTrackMapper kwtLogisticsOrderTrackMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderGoodsMapper kwtLogisticsOrderGoodsMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderUnitMapper kwtLogisticsOrderUnitMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtLogisticsOrderMapper kwtLogisticsOrderMapper;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ public KwtWaybillOrderMapper waybillOrderMapper;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 采购订单/销售订单-物流托运-4.2
|
|
|
+ *
|
|
|
+ * @param dto
|
|
|
+ */
|
|
|
+ public void logisticsConsignmentSave(LogisticsConsignmentDto dto) {
|
|
|
+ commonService.getRedisGenerateOrderNo();
|
|
|
+ Long count = kwtLogisticsOrderMapper.selectCount(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getTOrderId, dto.getTOrderId()));
|
|
|
+ String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "1", "0", String.valueOf(count + 1));
|
|
|
+ OrderDetailRes tradeOrder = tradeOrderInfoService.getOrderDetailById(Long.parseLong(dto.getTOrderId()));
|
|
|
+ if (tradeOrder == null) {
|
|
|
+ log.error("订单id查找失败:{}", dto.getTOrderId());
|
|
|
+ throw new BusinessException("贸易订单数据不存在");
|
|
|
+ }
|
|
|
+ KwtLogisticsOrder order = new KwtLogisticsOrder();
|
|
|
+ if (!dto.getIsFullDose()) {
|
|
|
+ //BigDecimal amount = tradeOrder.getAmount().subtract(tradeOrder.getEntrustAmount());
|
|
|
+ BigDecimal amount = dto.getAmount();
|
|
|
+ if (amount.compareTo(NumberConstant.ZERO_TWO) == 0) {
|
|
|
+ log.error("可分配量分配错误:{}", dto.getTOrderId());
|
|
|
+ throw new BusinessException("可分配量分配必须填写大于0");
|
|
|
+ }
|
|
|
+ //可运量校验
|
|
|
+ boolean bool = logisticsOrderGoodsService.chenkLogisticsAmount(dto, tradeOrder);
|
|
|
+ if (!bool) {
|
|
|
+ log.error("可分配量分配错误:{}", dto.getTOrderId());
|
|
|
+ throw new BusinessException("可分配量分配错误");
|
|
|
+ }
|
|
|
+ if (ArrayUtil.isEmpty(dto.getAmount())) {
|
|
|
+ throw new BusinessException("不是全量分配时,分配量不能为空!");
|
|
|
+ }
|
|
|
+ order.setAmount(dto.getAmount());
|
|
|
+ } else {
|
|
|
+ order.setAmount(NumberConstant.ZERO_TWO);
|
|
|
+ order.setSubcontractAmount(NumberConstant.ZERO_TWO);
|
|
|
+ }
|
|
|
+ /**验证结算方式*/
|
|
|
+ checkBillingMode(dto);
|
|
|
+ Long orderId = new IdWorker(NumberConstant.ONE).nextId();
|
|
|
+ order.setId(orderId);
|
|
|
+ List<ContractDto> contractInfo = dto.getContractInfo();
|
|
|
+ long contractId = contractInfo.get(0).getContractId();
|
|
|
+ List<Long> contractList = new ArrayList<>();
|
|
|
+ contractList.add(contractId);
|
|
|
+ Map<Long, ContractCommonInfoResDto> longContractCommonInfoResDtoMap = contractService.queryContractBaseInfo(contractList);
|
|
|
+ if (CollectionUtils.isEmpty(longContractCommonInfoResDtoMap)) {
|
|
|
+ throw new BusinessException("物流托运-并未有对应合同,应先签约合同");
|
|
|
+ }
|
|
|
+ if (longContractCommonInfoResDtoMap.get(contractId) == null) {
|
|
|
+ throw new BusinessException("物流托运-并未有对应合同,应先签约合同");
|
|
|
+ }
|
|
|
+ ContractCommonInfoResDto infoResDto = longContractCommonInfoResDtoMap.get(contractId);
|
|
|
+ /**状态判断
|
|
|
+ * 是否是已签约合同
|
|
|
+ * */
|
|
|
+ // 0 已签约 1待签约
|
|
|
+ Integer status = infoResDto.getStatus();
|
|
|
+ Integer orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
|
|
|
+ if (NumberConstant.ONE == status) {
|
|
|
+ orderStatus = LogisticsOrderEnum.TO_BE_PLANNED.getCode();
|
|
|
+ } else if (NumberConstant.ZERO == status) {
|
|
|
+ orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
|
|
|
+ } else {
|
|
|
+ log.info("物流托运创建订单异常");
|
|
|
+ throw new BusinessException("物流托运创建订单异常");
|
|
|
+ }
|
|
|
+ logisticsOrderGoodsService.insertLogisticsGoods(dto, lOrderNo, orderId);
|
|
|
+ saveLogisticsOrder(dto, lOrderNo, order, tradeOrder, orderId, orderStatus);
|
|
|
+ saveLogisticsOrderContract(dto, orderId);
|
|
|
+ saveLogisticsOrderUnit(dto, orderId);
|
|
|
+ saveLogisticsOrderAddressAndAmount(dto, orderId);
|
|
|
+ saveLogisticsOrderTrack(dto, orderId, orderStatus);
|
|
|
+ /**v4.2版本新增*/
|
|
|
+ if (dto.getBillingMode().equals("4")) {
|
|
|
+ saveLogisticsOrderLineFreight(dto, orderId);
|
|
|
+ }
|
|
|
+ saveSendMongoDB(lOrderNo, orderId, dto, tradeOrder, orderStatus);
|
|
|
+
|
|
|
+ /**将生成的分配量->贸易订单*/
|
|
|
+ List<GoodsLoadingParam> goodsLoading = logisticsOrderGoodsService.goodsLoadingParams(order, false);
|
|
|
+ HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrderV1(LoginUserHolder.getUserId(), LoginUserHolder.getUserName(), order.getTOrderId(), goodsLoading);
|
|
|
+ if (httpResult.getCode() != HttpStatus.SUCCESS_CODE) {
|
|
|
+ log.info("{}生成物流托运失败!,返回信息:{}", tradeOrder.getTOrderNo(), JSONObject.toJSONString(httpResult));
|
|
|
+ throw new BusinessException("{" + tradeOrder.getTOrderNo() + "}生成物流托运失败!" + httpResult.getMsg());
|
|
|
+ }
|
|
|
+ pushConsoleMessage(dto, lOrderNo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private boolean checkBillingMode(LogisticsConsignmentDto dto) {
|
|
|
+ if ("4".equals(dto.getBillingMode())) {
|
|
|
+ if (dto.getLineFreightList().size() < 1 || CollectionUtils.isEmpty(dto.getLineFreightList())) {
|
|
|
+ throw new BusinessException("计费方式为里程计算时,线路不能为空");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrderLineFreight(LogisticsConsignmentDto dto, Long orderId) {
|
|
|
+ List<LineFreightDto> lineFreightList = dto.getLineFreightList();
|
|
|
+ List<Long> lineFreightId = lineFreightList.stream().map(t -> t.getLineFreightId()).distinct().collect(Collectors.toList());
|
|
|
+ Map<Long, LineFreightAddressRes> resMap = manageService.findLineFreightAddress(lineFreightId);
|
|
|
+ if (resMap != null) {
|
|
|
+ lineFreightId.stream().forEach(id->{
|
|
|
+ if (resMap.get(id) != null) {
|
|
|
+ LineFreightAddressRes res = resMap.get(id);
|
|
|
+ KwtLogisticsOrderLineFreightRate lineFreightRate = new KwtLogisticsOrderLineFreightRate();
|
|
|
+ lineFreightRate.setLOrderId(orderId);
|
|
|
+ lineFreightRate.setName(res.getName());
|
|
|
+ lineFreightRate.setLoadName(res.getLoadName());
|
|
|
+ lineFreightRate.setLoadCityCode(res.getLoadCityCode());
|
|
|
+ lineFreightRate.setLoadCityName(res.getLoadCityName());
|
|
|
+ lineFreightRate.setLoadDetailAddress(res.getLoadDetailAddress());
|
|
|
+ lineFreightRate.setLoadLat(res.getLoadLat());
|
|
|
+ lineFreightRate.setLoadLng(res.getLoadLng());
|
|
|
+ lineFreightRate.setUnloadName(res.getUnloadName());
|
|
|
+ lineFreightRate.setUnloadCityCode(res.getUnloadCityCode());
|
|
|
+ lineFreightRate.setUnloadCityName(res.getUnloadCityName());
|
|
|
+ lineFreightRate.setUnloadDetailAddress(res.getUnloadDetailAddress());
|
|
|
+ lineFreightRate.setUnloadLat(res.getUnloadLat());
|
|
|
+ lineFreightRate.setUnloadLng(res.getUnloadLng());
|
|
|
+ lineFreightRate.setTransportMileage(res.getTransportMileage());
|
|
|
+ lineFreightRate.setTransportPrice(res.getTransportPrice());
|
|
|
+ BigDecimal defultBigDecimal = new BigDecimal("0.00");
|
|
|
+ lineFreightRate.setSettlementAmount(defultBigDecimal);
|
|
|
+ lineFreightRate.setId(new IdWorker(NumberConstant.FOUR).nextId());
|
|
|
+ lineFreightRate.setRemark(res.getRemark());
|
|
|
+ lineFreightRate.setStatus(res.getStatus());
|
|
|
+ lineFreightRate.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ lineFreightRate.setCreateTime(new Date());
|
|
|
+ lineFreightRate.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ lineFreightRate.setUpdateTime(new Date());
|
|
|
+ lineFreightRate.setDelFlag(0);
|
|
|
+ logisticsOrderLineFreightRateMapper.insert(lineFreightRate);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveSendMongoDB(String lOrderNo, Long orderId, LogisticsConsignmentDto bo, OrderDetailRes tradeOrder, Integer orderStatus) {
|
|
|
+ SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
|
|
|
+ logisticsOrder.setStatus(String.valueOf(orderStatus));
|
|
|
+ logisticsOrder.setLOrderId(orderId);
|
|
|
+ logisticsOrder.setLOrderNo(lOrderNo);
|
|
|
+ logisticsOrder.setLOrderPid(null);
|
|
|
+ logisticsOrder.setTOrderId(tradeOrder.getId());
|
|
|
+ logisticsOrder.setTOrderNo("D" + com.sckw.transport.utils.StringUtils.getWaybillNoUtil());
|
|
|
+ logisticsOrder.setSettlementCycle(Long.parseLong(bo.getSettlementCycle()));
|
|
|
+ logisticsOrder.setPrice(bo.getPrice());
|
|
|
+ logisticsOrder.setPriceType(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()) == null ?
|
|
|
+ null : Long.parseLong(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()).getValue()));
|
|
|
+
|
|
|
+ if (!bo.getIsFullDose()) {
|
|
|
+ if (ArrayUtil.isEmpty(bo.getAmount())) {
|
|
|
+ throw new RuntimeException("不是全量分配时,分配量不能为空!");
|
|
|
+ }
|
|
|
+ logisticsOrder.setAmount(bo.getAmount());
|
|
|
+ logisticsOrder.setUnit(bo.getCarryingCapacityUnit());
|
|
|
+ logisticsOrder.setCarryingCapacity(bo.getAmount());
|
|
|
+ } else {
|
|
|
+ logisticsOrder.setAmount(NumberConstant.ZERO_TWO);
|
|
|
+ logisticsOrder.setSubcontractAmount(NumberConstant.ZERO_TWO);
|
|
|
+ logisticsOrder.setCarryingCapacity(NumberConstant.ZERO_TWO);
|
|
|
+ }
|
|
|
+ logisticsOrder.setLoss(bo.getLoss() == null ? null : bo.getLoss());
|
|
|
+ logisticsOrder.setLossUnit(bo.getLossUnit());
|
|
|
+ logisticsOrder.setGoodsPrice(bo.getGoodsPrice() == null ? null : bo.getGoodsPrice());
|
|
|
+ BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ logisticsOrder.setSubcontractAmount(decimal);
|
|
|
+ logisticsOrder.setEntrustAmount(decimal);
|
|
|
+ logisticsOrder.setUnloadAmount(decimal);
|
|
|
+ logisticsOrder.setLoadAmount(decimal);
|
|
|
+ logisticsOrder.setIgnoreAmount(decimal);
|
|
|
+ logisticsOrder.setDeficitPrice(decimal);
|
|
|
+ logisticsOrder.setPayment(Long.parseLong(bo.getPayment()));
|
|
|
+ logisticsOrder.setTaxRate(bo.getTaxRate() == null ? null : bo.getTaxRate());
|
|
|
+ logisticsOrder.setRemark(bo.getRemark());
|
|
|
+ logisticsOrder.setEntId(LoginUserHolder.getEntId());
|
|
|
+ logisticsOrder.setFirmName(remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId()).getFirmName());
|
|
|
+ logisticsOrder.setGoodsId(bo.getGoodsId());
|
|
|
+ KwpGoods goods = goodsInfoService.getGoodsById(bo.getGoodsId());
|
|
|
+ logisticsOrder.setGoodsType(goods == null ? null : goods.getGoodsType());
|
|
|
+ logisticsOrder.setGoodsSpec(goods == null ? null : goods.getSpec());
|
|
|
+ List<ContractDto> contractInfo = bo.getContractInfo();
|
|
|
+ contractInfo.forEach(contract -> {
|
|
|
+ Long contractId = contract.getContractId();
|
|
|
+ Map<Long, ContractCommonInfoResDto> longContractCommonInfoResDtoMap = contractService.queryContractBaseInfo(Collections.singletonList(contractId));
|
|
|
+ if (longContractCommonInfoResDtoMap != null && (longContractCommonInfoResDtoMap.get(contractId) != null)) {
|
|
|
+ String contractCode = longContractCommonInfoResDtoMap.get(contractId).getContractCode();
|
|
|
+ String contactName = longContractCommonInfoResDtoMap.get(contractId).getContactName();
|
|
|
+ Integer signingWay = longContractCommonInfoResDtoMap.get(contractId).getSigningWay();
|
|
|
+ logisticsOrder.setContractId(String.valueOf(contractId));
|
|
|
+ logisticsOrder.setContractNo(contractCode);
|
|
|
+ logisticsOrder.setContractName(contactName);
|
|
|
+ logisticsOrder.setContractSigningWay(String.valueOf(signingWay));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ logisticsOrder.setCheckEntId(Long.parseLong(bo.getCheckCompanyId()));
|
|
|
+ logisticsOrder.setCheckFirmName(bo.getCheckCompany());
|
|
|
+ logisticsOrder.setCheckContacts(bo.getCheckContacts());
|
|
|
+ logisticsOrder.setCheckPhone(bo.getCheckContactPhone());
|
|
|
+ logisticsOrder.setCarrierEntId(Long.parseLong(bo.getConsignCompanyId()));
|
|
|
+ logisticsOrder.setCarrierFirmName(bo.getConsignCompany());
|
|
|
+ logisticsOrder.setCarrierContacts(bo.getConsignContacts());
|
|
|
+ OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.valueOf(bo.getTOrderId()));
|
|
|
+ // 收货单位+发货单位
|
|
|
+ if (orderDetailRes != null) {
|
|
|
+ List<UnitInfoDetailRes> unitInfo = orderDetailRes.getUnitInfo();
|
|
|
+ if (CollectionUtils.isNotEmpty(unitInfo)) {
|
|
|
+ for (UnitInfoDetailRes unitInfoDetailRes : unitInfo) {
|
|
|
+ if (String.valueOf(NumberConstant.ONE).equals(unitInfoDetailRes.getUnitType())) {
|
|
|
+ logisticsOrder.setShipmentsUnitEntId(String.valueOf(unitInfoDetailRes.getEntId()));
|
|
|
+ logisticsOrder.setShipmentsUnit(unitInfoDetailRes.getFirmName());
|
|
|
+ } else if (String.valueOf(NumberConstant.TWO).equals(unitInfoDetailRes.getUnitType())) {
|
|
|
+ logisticsOrder.setReceiveGoodsUnitEntId(String.valueOf(unitInfoDetailRes.getEntId()));
|
|
|
+ logisticsOrder.setReceiveGoodsUnit(unitInfoDetailRes.getFirmName());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<AddressInfoDetail> addressInfo = tradeOrder.getAddressInfo();
|
|
|
+ for (AddressInfoDetail detail : addressInfo) {
|
|
|
+ if (String.valueOf(NumberConstant.ONE).equals(detail.getAddressType())) {
|
|
|
+ logisticsOrder.setLoadType(Long.parseLong(detail.getType()));
|
|
|
+ logisticsOrder.setLoadCityCode(detail.getCityCode());
|
|
|
+ logisticsOrder.setLoadCityName(detail.getCityName());
|
|
|
+ logisticsOrder.setLoadDetailAddress(detail.getDetailAddress());
|
|
|
+ logisticsOrder.setLoadLat(detail.getLat());
|
|
|
+ logisticsOrder.setLoadPhone(detail.getPhone());
|
|
|
+ logisticsOrder.setLoadLng(detail.getLng());
|
|
|
+ logisticsOrder.setLoadContacts(detail.getContacts());
|
|
|
+ }
|
|
|
+ if (String.valueOf(NumberConstant.TWO).equals(detail.getAddressType())) {
|
|
|
+ logisticsOrder.setUnloadType(Long.parseLong(detail.getType()));
|
|
|
+ logisticsOrder.setUnloadPhone(detail.getPhone());
|
|
|
+ logisticsOrder.setUnloadCityCode(detail.getCityCode());
|
|
|
+ logisticsOrder.setUnloadCityName(detail.getCityName());
|
|
|
+ logisticsOrder.setUnloadDetailAddress(detail.getDetailAddress());
|
|
|
+ logisticsOrder.setUnloadLat(detail.getLat());
|
|
|
+ logisticsOrder.setUnloadLng(detail.getLng());
|
|
|
+ logisticsOrder.setUnloadContacts(detail.getContacts());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //TODO 生成时并无时间
|
|
|
+// logisticsOrder.setLoadTime();
|
|
|
+// logisticsOrder.setunLoadTime();
|
|
|
+ logisticsOrder.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ logisticsOrder.setCreateByName(LoginUserHolder.getUserName());
|
|
|
+ logisticsOrder.setCreateTime(new Date());
|
|
|
+ logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ logisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
|
|
|
+ logisticsOrder.setUpdateTime(new Date());
|
|
|
+ logisticsOrder.setGoodsPriceUnit(bo.getGoodsPriceUnit());
|
|
|
+ logisticsOrder.setBillingMode(bo.getBillingMode());
|
|
|
+ logisticsOrder.setStartTime(bo.getStartTime() == null ? null : bo.getStartTime());
|
|
|
+ logisticsOrder.setEndTime(bo.getEndTime() == null ? null : bo.getEndTime());
|
|
|
+ //rabbitMq业务汇总数据发送/消费对象
|
|
|
+ SckwBusSum busSum = new SckwBusSum();
|
|
|
+ //业务汇总类型
|
|
|
+ busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
|
|
|
+ //操作对象(1新增/2修改)
|
|
|
+ busSum.setMethod(1);
|
|
|
+ //业务汇总数据对象
|
|
|
+ busSum.setObject(logisticsOrder);
|
|
|
+ streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrderTrack(LogisticsConsignmentDto dto, Long orderId, Integer orderStatus) {
|
|
|
+ KwtLogisticsOrderTrack entity = new KwtLogisticsOrderTrack();
|
|
|
+ entity.setId(new IdWorker(NumberConstant.ONE).nextId());
|
|
|
+ entity.setLOrderId(orderId);
|
|
|
+ entity.setStatus(LogisticsOrderEnum.PENDING_ORDER.getCode());
|
|
|
+ entity.setCreateTime(new Date());
|
|
|
+ entity.setUpdateTime(new Date());
|
|
|
+ entity.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ entity.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ entity.setRemark(dto.getRemark());
|
|
|
+ kwtLogisticsOrderTrackMapper.insert(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrderAddressAndAmount(LogisticsConsignmentDto dto, Long orderId) {
|
|
|
+ //todo 装卸货地址 通过dubbo查询
|
|
|
+// OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(dto.getTOrderId()));
|
|
|
+// if (ObjectUtils.isEmpty(orderDetailRes)) {
|
|
|
+// log.info("dubbp 查询数据 error :orderId:{}", dto.getTOrderId());
|
|
|
+// throw new RuntimeException("dubbp 查询销售订单数据查找失败!");
|
|
|
+// }
|
|
|
+// List<AddressInfoDetail> addressInfo = orderDetailRes.getAddressInfo();
|
|
|
+// if (CollectionUtils.isEmpty(addressInfo)) {
|
|
|
+// throw new BusinessException("生成物流托运时,地址信息不存在!");
|
|
|
+// }
|
|
|
+ List<AddressInfoDto> addressInfo = dto.getAddressInfo();
|
|
|
+ for (AddressInfoDto addressInfoDto : addressInfo) {
|
|
|
+ OrderAddressDetailRes detail = tradeOrderInfoService.getOrderDetailByTradeOrderIdAndAddressId(Long.parseLong(dto.getTOrderId()), Long.parseLong(addressInfoDto.getAddressId()));
|
|
|
+ if (detail != null) {
|
|
|
+ if (String.valueOf(NumberConstant.ONE).equals(detail.getAddressType())) {
|
|
|
+ long addressId = new IdWorker(NumberConstant.ONE).nextId();
|
|
|
+ KwtLogisticsOrderAddress loadOrderAddress = new KwtLogisticsOrderAddress();
|
|
|
+ loadOrderAddress.setId(addressId);
|
|
|
+ loadOrderAddress.setAddressType(NumberConstant.ONE);
|
|
|
+ loadOrderAddress.setDetailAddress(detail.getDetailAddress());
|
|
|
+ loadOrderAddress.setContacts(detail.getContacts());
|
|
|
+ loadOrderAddress.setLOrderId(orderId);
|
|
|
+ loadOrderAddress.setLat(detail.getLat());
|
|
|
+ loadOrderAddress.setFence(detail.getFence());
|
|
|
+ loadOrderAddress.setCityName(detail.getCityName());
|
|
|
+ loadOrderAddress.setEntryType(NumberConstant.FOUR);
|
|
|
+ loadOrderAddress.setCreateTime(new Date());
|
|
|
+ loadOrderAddress.setPhone(detail.getPhone());
|
|
|
+ loadOrderAddress.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ loadOrderAddress.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ loadOrderAddress.setUpdateTime(new Date());
|
|
|
+ loadOrderAddress.setName(detail.getName());
|
|
|
+ loadOrderAddress.setType(Long.parseLong(detail.getType()));
|
|
|
+ loadOrderAddress.setCityCode(detail.getCityCode());
|
|
|
+ loadOrderAddress.setLng(detail.getLng());
|
|
|
+ loadOrderAddress.setSort(addressInfoDto.getSort());
|
|
|
+ kwtLogisticsOrderAddressMapper.insert(loadOrderAddress);
|
|
|
+
|
|
|
+ KwtLogisticsOrderAmount orderAmount = new KwtLogisticsOrderAmount();
|
|
|
+ BigDecimal defaultBigDecimal = new BigDecimal("0.00");
|
|
|
+ orderAmount.setLOrderId(orderId);
|
|
|
+ orderAmount.setAddressId(addressId);
|
|
|
+ orderAmount.setAmount(addressInfoDto.getAmount());
|
|
|
+ orderAmount.setSubcontractAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setEntrustAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setLoadAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setUnloadAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setIgnoreAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setId(new IdWorker(NumberConstant.THREE).nextId());
|
|
|
+ orderAmount.setStatus(0);
|
|
|
+ orderAmount.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ orderAmount.setCreateTime(new Date());
|
|
|
+ orderAmount.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ orderAmount.setUpdateTime(new Date());
|
|
|
+ orderAmount.setDelFlag(0);
|
|
|
+ logisticsOrderAmountMapper.insert(orderAmount);
|
|
|
+ }
|
|
|
+ if (String.valueOf(NumberConstant.TWO).equals(detail.getAddressType())) {
|
|
|
+ long addressId = new IdWorker(NumberConstant.TWO).nextId();
|
|
|
+ KwtLogisticsOrderAddress unloadOrderAddress = new KwtLogisticsOrderAddress();
|
|
|
+ unloadOrderAddress.setId(addressId);
|
|
|
+ unloadOrderAddress.setAddressType(NumberConstant.TWO);
|
|
|
+ unloadOrderAddress.setContacts(detail.getContacts());
|
|
|
+ unloadOrderAddress.setLOrderId(orderId);
|
|
|
+ unloadOrderAddress.setLat(detail.getLat());
|
|
|
+ unloadOrderAddress.setFence(detail.getFence());
|
|
|
+ unloadOrderAddress.setCityName(detail.getCityName());
|
|
|
+ unloadOrderAddress.setEntryType(NumberConstant.FOUR);
|
|
|
+ unloadOrderAddress.setPhone(detail.getPhone());
|
|
|
+ unloadOrderAddress.setDetailAddress(detail.getDetailAddress());
|
|
|
+ unloadOrderAddress.setCreateTime(new Date());
|
|
|
+ unloadOrderAddress.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ unloadOrderAddress.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ unloadOrderAddress.setUpdateTime(new Date());
|
|
|
+ unloadOrderAddress.setName(detail.getName());
|
|
|
+ unloadOrderAddress.setType(Long.valueOf(detail.getType()));
|
|
|
+ unloadOrderAddress.setCityCode(detail.getCityCode());
|
|
|
+ unloadOrderAddress.setLng(detail.getLng());
|
|
|
+ unloadOrderAddress.setSort(addressInfoDto.getSort());
|
|
|
+ kwtLogisticsOrderAddressMapper.insert(unloadOrderAddress);
|
|
|
+
|
|
|
+ KwtLogisticsOrderAmount orderAmount = new KwtLogisticsOrderAmount();
|
|
|
+ BigDecimal defaultBigDecimal = new BigDecimal("0.00");
|
|
|
+ orderAmount.setLOrderId(orderId);
|
|
|
+ orderAmount.setAddressId(addressId);
|
|
|
+ orderAmount.setAmount(addressInfoDto.getAmount());
|
|
|
+ orderAmount.setSubcontractAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setEntrustAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setLoadAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setUnloadAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setIgnoreAmount(defaultBigDecimal);
|
|
|
+ orderAmount.setId(new IdWorker(NumberConstant.THREE).nextId());
|
|
|
+ orderAmount.setStatus(0);
|
|
|
+ orderAmount.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ orderAmount.setCreateTime(new Date());
|
|
|
+ orderAmount.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ orderAmount.setUpdateTime(new Date());
|
|
|
+ orderAmount.setDelFlag(0);
|
|
|
+ logisticsOrderAmountMapper.insert(orderAmount);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+// if (CollectionUtils.isNotEmpty(addressInfo)) {
|
|
|
+// for (AddressInfoDetail detail : addressInfo) {
|
|
|
+// if (String.valueOf(NumberConstant.ONE).equals(detail.getAddressType())) {
|
|
|
+// List<AddressInfoDto> orderAddressInfo = dto.getAddressInfo();
|
|
|
+// for (AddressInfoDto addressInfoDto : orderAddressInfo) {
|
|
|
+// if (addressInfoDto.getAddressId().equals(detail.getId())) {
|
|
|
+// KwtLogisticsOrderAddress loadOrderAddress = new KwtLogisticsOrderAddress();
|
|
|
+// loadOrderAddress.setId(new IdWorker(NumberConstant.ONE).nextId());
|
|
|
+// loadOrderAddress.setAddressType(NumberConstant.ONE);
|
|
|
+// loadOrderAddress.setDetailAddress(detail.getDetailAddress());
|
|
|
+// loadOrderAddress.setContacts(detail.getContacts());
|
|
|
+// loadOrderAddress.setLOrderId(orderId);
|
|
|
+// loadOrderAddress.setLat(detail.getLat());
|
|
|
+// loadOrderAddress.setFence(detail.getFence());
|
|
|
+// loadOrderAddress.setCityName(detail.getCityName());
|
|
|
+// loadOrderAddress.setEntryType(NumberConstant.FOUR);
|
|
|
+// loadOrderAddress.setCreateTime(new Date());
|
|
|
+// loadOrderAddress.setPhone(detail.getPhone());
|
|
|
+// loadOrderAddress.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+// loadOrderAddress.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+// loadOrderAddress.setUpdateTime(new Date());
|
|
|
+// loadOrderAddress.setName(detail.getName());
|
|
|
+// loadOrderAddress.setType(Long.parseLong(detail.getType()));
|
|
|
+// loadOrderAddress.setCityCode(detail.getCityCode());
|
|
|
+// loadOrderAddress.setLng(detail.getLng());
|
|
|
+// loadOrderAddress.setSort(addressInfoDto.getSort());
|
|
|
+// kwtLogisticsOrderAddressMapper.insert(loadOrderAddress);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// if (String.valueOf(NumberConstant.TWO).equals(detail.getAddressType())) {
|
|
|
+// List<AddressInfoDto> orderAddressInfo = dto.getAddressInfo();
|
|
|
+// for (AddressInfoDto addressInfoDto : orderAddressInfo) {
|
|
|
+// if (addressInfoDto.getAddressId().equals(detail.getId())) {
|
|
|
+// KwtLogisticsOrderAddress unloadOrderAddress = new KwtLogisticsOrderAddress();
|
|
|
+// unloadOrderAddress.setId(new IdWorker(NumberConstant.TWO).nextId());
|
|
|
+// unloadOrderAddress.setAddressType(NumberConstant.TWO);
|
|
|
+// unloadOrderAddress.setContacts(detail.getContacts());
|
|
|
+// unloadOrderAddress.setLOrderId(orderId);
|
|
|
+// unloadOrderAddress.setLat(detail.getLat());
|
|
|
+// unloadOrderAddress.setFence(detail.getFence());
|
|
|
+// unloadOrderAddress.setCityName(detail.getCityName());
|
|
|
+// unloadOrderAddress.setEntryType(NumberConstant.FOUR);
|
|
|
+// unloadOrderAddress.setPhone(detail.getPhone());
|
|
|
+// unloadOrderAddress.setDetailAddress(detail.getDetailAddress());
|
|
|
+// unloadOrderAddress.setCreateTime(new Date());
|
|
|
+// unloadOrderAddress.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+// unloadOrderAddress.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+// unloadOrderAddress.setUpdateTime(new Date());
|
|
|
+// unloadOrderAddress.setName(detail.getName());
|
|
|
+// unloadOrderAddress.setType(Long.valueOf(detail.getType()));
|
|
|
+// unloadOrderAddress.setCityCode(detail.getCityCode());
|
|
|
+// unloadOrderAddress.setLng(detail.getLng());
|
|
|
+// unloadOrderAddress.setSort(addressInfoDto.getSort());
|
|
|
+// kwtLogisticsOrderAddressMapper.insert(unloadOrderAddress);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+// }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 消息推送首页信息
|
|
|
+ */
|
|
|
+ private void pushConsoleMessage(LogisticsConsignmentDto dto, String lOrderNo) {
|
|
|
+ /**消息列表
|
|
|
+ * 1 采购 2 销售
|
|
|
+ * */
|
|
|
+ String pcConsignUrl = "", appConsignUrl = "", pcCarriageUrl = "", appCarriageUrl = "";
|
|
|
+ MessageEnum consignMessageEnum = null, carriageMessageEnum = null;
|
|
|
+ //托运单位
|
|
|
+ KwtLogisticsOrderUnit checkUnit = new KwtLogisticsOrderUnit();
|
|
|
+ //承运单位
|
|
|
+ KwtLogisticsOrderUnit carriageUnit = new KwtLogisticsOrderUnit();
|
|
|
+ String type = dto.getType();
|
|
|
+ if (String.valueOf(NumberConstant.ONE).equals(type)) {
|
|
|
+ EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getConsignCompanyId()));
|
|
|
+ EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getCheckCompanyId()));
|
|
|
+ //发起方
|
|
|
+ checkUnit.setUnitType(NumberConstant.ONE);
|
|
|
+ checkUnit.setFirmName(dto.getCheckCompany());
|
|
|
+ checkUnit.setEntId(Long.parseLong(dto.getConsignCompanyId()));
|
|
|
+ checkUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
|
|
|
+ checkUnit.setContactsId(Long.parseLong(dto.getCheckContactsId()));
|
|
|
+ //接收方
|
|
|
+ carriageUnit.setUnitType(NumberConstant.TWO);
|
|
|
+ carriageUnit.setFirmName(dto.getConsignCompany());
|
|
|
+ carriageUnit.setEntId(Long.parseLong(dto.getCheckCompanyId()));
|
|
|
+ carriageUnit.setTopEntId(checkentMap == null ? null : checkentMap.getId());
|
|
|
+ carriageUnit.setContactsId(Long.parseLong(dto.getConsignContactsId()));
|
|
|
+ pcConsignUrl = messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl();
|
|
|
+ appConsignUrl = messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl();
|
|
|
+ pcCarriageUrl = messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl();
|
|
|
+ appCarriageUrl = messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl();
|
|
|
+ consignMessageEnum = MessageEnum.NEW_CARRIAGE_ORDER;
|
|
|
+ carriageMessageEnum = MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT;
|
|
|
+ type = "2";
|
|
|
+ } else if (String.valueOf(NumberConstant.TWO).equals(type)) {
|
|
|
+ EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getConsignCompanyId()));
|
|
|
+ EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getCheckCompanyId()));
|
|
|
+ //发起方
|
|
|
+ checkUnit.setUnitType(NumberConstant.ONE);
|
|
|
+ checkUnit.setFirmName(dto.getCheckCompany());
|
|
|
+ checkUnit.setEntId(Long.parseLong(dto.getCheckCompanyId()));
|
|
|
+ checkUnit.setTopEntId(consignentMap == null ? null : consignentMap.getId());
|
|
|
+ checkUnit.setContactsId(Long.parseLong(dto.getConsignContactsId()));
|
|
|
+ //接收方
|
|
|
+ carriageUnit.setUnitType(NumberConstant.TWO);
|
|
|
+ carriageUnit.setFirmName(dto.getConsignCompany());
|
|
|
+ carriageUnit.setEntId(Long.parseLong(dto.getConsignCompanyId()));
|
|
|
+ carriageUnit.setTopEntId(checkentMap == null ? null : checkentMap.getId());
|
|
|
+ carriageUnit.setContactsId(Long.parseLong(dto.getCheckContactsId()));
|
|
|
+ pcConsignUrl = messageUrlConfig.getPc().getConsignLogisticsAddOrderUrl();
|
|
|
+ appConsignUrl = messageUrlConfig.getApp().getConsignLogisticsAddOrderUrl();
|
|
|
+ pcCarriageUrl = messageUrlConfig.getPc().getCarriageLogisticsAddOrderUrl();
|
|
|
+ appCarriageUrl = messageUrlConfig.getApp().getCarriageLogisticsAddOrderUrl();
|
|
|
+ consignMessageEnum = MessageEnum.NEW_CARRIAGE_ORDER;
|
|
|
+ carriageMessageEnum = MessageEnum.INITIATING_LOGISTICS_CONSIGNMENT;
|
|
|
+ type = "1";
|
|
|
+ }
|
|
|
+ //发送消息
|
|
|
+ commonService.newSendLogisticsOrderToMessage(checkUnit, carriageUnit, lOrderNo, LoginUserHolder.getUserId(),
|
|
|
+ LoginUserHolder.getEntId(), pcConsignUrl, appConsignUrl, pcCarriageUrl, appCarriageUrl,
|
|
|
+ consignMessageEnum, carriageMessageEnum, type);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrderUnit(LogisticsConsignmentDto dto, Long orderId) {
|
|
|
+ EntCacheResDto consignentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getConsignCompanyId()));
|
|
|
+ EntCacheResDto checkentMap = remoteSystemService.queryEntTreeById(Long.parseLong(dto.getCheckCompanyId()));
|
|
|
+ if (consignentMap == null || checkentMap == null) {
|
|
|
+ throw new BusinessException("企业对应一级企业不存在");
|
|
|
+ }
|
|
|
+ KwtLogisticsOrderUnit checkUnit = new KwtLogisticsOrderUnit()
|
|
|
+ .setLOrderId(orderId)
|
|
|
+ .setId(new IdWorker(NumberConstant.ONE).nextId())
|
|
|
+ .setUnitType(NumberConstant.ONE)
|
|
|
+ .setFirmName(dto.getCheckCompany())
|
|
|
+ .setRemark(dto.getRemark())
|
|
|
+ .setEntId(Long.parseLong(dto.getCheckCompanyId()))
|
|
|
+ .setTopEntId(checkentMap.getId())
|
|
|
+ .setContacts(dto.getCheckContacts())
|
|
|
+ .setPhone(dto.getCheckContactPhone())
|
|
|
+ .setCreateBy(LoginUserHolder.getUserId())
|
|
|
+ .setCreateTime(new Date())
|
|
|
+ .setUpdateBy(LoginUserHolder.getUserId())
|
|
|
+ .setUpdateTime(new Date())
|
|
|
+ .setContactsId(Long.parseLong(dto.getCheckContactsId()));
|
|
|
+ kwtLogisticsOrderUnitMapper.insert(checkUnit);
|
|
|
+
|
|
|
+ KwtLogisticsOrderUnit consignUnit = new KwtLogisticsOrderUnit()
|
|
|
+ .setLOrderId(orderId)
|
|
|
+ .setId(new IdWorker(NumberConstant.ONE).nextId())
|
|
|
+ .setUnitType(NumberConstant.TWO)
|
|
|
+ .setFirmName(dto.getConsignCompany())
|
|
|
+ .setRemark(dto.getRemark())
|
|
|
+ .setEntId(Long.parseLong(dto.getConsignCompanyId()))
|
|
|
+ .setTopEntId(consignentMap.getId())
|
|
|
+ .setContacts(dto.getConsignContacts())
|
|
|
+ .setPhone(dto.getConsignContactPhone())
|
|
|
+ .setCreateBy(LoginUserHolder.getUserId())
|
|
|
+ .setCreateTime(new Date())
|
|
|
+ .setUpdateBy(LoginUserHolder.getUserId())
|
|
|
+ .setUpdateTime(new Date())
|
|
|
+ .setContactsId(Long.parseLong(dto.getConsignContactsId()));
|
|
|
+ kwtLogisticsOrderUnitMapper.insert(consignUnit);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrderContract(LogisticsConsignmentDto dto, Long orderId) {
|
|
|
+ List<ContractDto> contractInfo = dto.getContractInfo();
|
|
|
+ contractInfo.forEach(contract -> {
|
|
|
+ Long contractId = contract.getContractId();
|
|
|
+ Map<Long, ContractCommonInfoResDto> longContractCommonInfoResDtoMap = contractService.queryContractBaseInfo(Collections.singletonList(contractId));
|
|
|
+ if (longContractCommonInfoResDtoMap != null && (longContractCommonInfoResDtoMap.get(contractId) != null)) {
|
|
|
+ String contractCode = longContractCommonInfoResDtoMap.get(contractId).getContractCode();
|
|
|
+ String contactName = longContractCommonInfoResDtoMap.get(contractId).getContactName();
|
|
|
+ Integer signingWay = longContractCommonInfoResDtoMap.get(contractId).getSigningWay();
|
|
|
+ KwtLogisticsOrderContract kwtLogisticsOrderContract = new KwtLogisticsOrderContract();
|
|
|
+ kwtLogisticsOrderContract.setId(new IdWorker(NumberConstant.ONE).nextId());
|
|
|
+ kwtLogisticsOrderContract.setLOrderId(orderId);
|
|
|
+ kwtLogisticsOrderContract.setContractId(contractId);
|
|
|
+ kwtLogisticsOrderContract.setContractNo(contractCode);
|
|
|
+ kwtLogisticsOrderContract.setContractName(contactName);
|
|
|
+ kwtLogisticsOrderContract.setSigningWay(String.valueOf(signingWay));
|
|
|
+ kwtLogisticsOrderContract.setRemark(dto.getRemark());
|
|
|
+ kwtLogisticsOrderContract.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ kwtLogisticsOrderContract.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ kwtLogisticsOrderContract.setCreateTime(new Date());
|
|
|
+ kwtLogisticsOrderContract.setUpdateTime(new Date());
|
|
|
+ kwtLogisticsOrderContractMapper.insert(kwtLogisticsOrderContract);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void saveLogisticsOrder(LogisticsConsignmentDto bo, String lOrderNo, KwtLogisticsOrder order, OrderDetailRes tradeOrder, Long orderId, Integer orderStatus) {
|
|
|
+ order.setId(orderId);
|
|
|
+ order.setEntId(LoginUserHolder.getEntId());
|
|
|
+ order.setType(String.valueOf(NumberConstant.ONE));
|
|
|
+ order.setTOrderId(Long.parseLong(bo.getTOrderId()));
|
|
|
+ order.setTOrderNo(bo.getTOrderNo());
|
|
|
+ order.setLOrderNo(lOrderNo);
|
|
|
+ order.setPid(null);
|
|
|
+// order.setPids(orderId + StringConstant.COMMA);
|
|
|
+ order.setPids(String.valueOf(orderId));
|
|
|
+ order.setSettlementCycle(Long.parseLong(bo.getSettlementCycle()));
|
|
|
+ order.setPrice(bo.getPrice());
|
|
|
+ order.setPriceType(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()) == null ?
|
|
|
+ null : Long.parseLong(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()).getValue()));
|
|
|
+// order.setAmount(tradeOrder.getAmount());
|
|
|
+ order.setBillingMode(bo.getBillingMode());
|
|
|
+ order.setUnit(bo.getCarryingCapacityUnit());
|
|
|
+ order.setLoss(bo.getLoss() == null ? null : bo.getLoss());
|
|
|
+// order.setLossUnit(bo.getLossUnit());
|
|
|
+ order.setLossUnit(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.UNIT_TYPE.getType(), bo.getLossUnit()) == null ?
|
|
|
+ null : remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.UNIT_TYPE.getType(), bo.getLossUnit()).getValue());
|
|
|
+ order.setGoodsPrice(bo.getGoodsPrice() == null ? null : bo.getGoodsPrice());
|
|
|
+ order.setGoodsPriceUnit(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getGoodsPriceUnit()) == null ?
|
|
|
+ null : remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getGoodsPriceUnit()).getValue());
|
|
|
+ order.setGoodsPriceUnit(bo.getGoodsPriceUnit());
|
|
|
+ order.setStartTime(bo.getStartTime() == null ? null : bo.getStartTime());
|
|
|
+ order.setEndTime(bo.getEndTime() == null ? null : bo.getEndTime());
|
|
|
+ order.setRemark(bo.getRemark());
|
|
|
+ order.setPayment(Long.parseLong(bo.getPayment()));
|
|
|
+ order.setTaxRate(bo.getTaxRate());
|
|
|
+ order.setCreateBy(LoginUserHolder.getUserId());
|
|
|
+ order.setCreateTime(new Date());
|
|
|
+ order.setUpdateBy(LoginUserHolder.getUserId());
|
|
|
+ order.setUpdateTime(new Date());
|
|
|
+ order.setStatus(orderStatus);
|
|
|
+ BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
|
|
|
+ /**补充默认值*/
|
|
|
+ order.setEntrustAmount(decimal);
|
|
|
+ order.setSubcontractAmount(decimal);
|
|
|
+ order.setLoadAmount(decimal);
|
|
|
+ order.setUnloadAmount(decimal);
|
|
|
+ order.setIgnoreAmount(decimal);
|
|
|
+ order.setDeficitPrice(decimal);
|
|
|
+ order.setDeficitAmount(decimal);
|
|
|
+ order.setTotalUnloadAmount(decimal);
|
|
|
+ order.setTotalLoadAmount(decimal);
|
|
|
+ order.setBindStatus(String.valueOf(NumberConstant.ZERO));
|
|
|
+ kwtLogisticsOrderMapper.insert(order);
|
|
|
+ }
|
|
|
+}
|