From 3b9983c68ff8c6c3f8d91c19ba3799ebcb74e095 Mon Sep 17 00:00:00 2001 From: hjx <577364224@qq.com> Date: Tue, 27 Jan 2026 19:28:53 +0800 Subject: [PATCH] =?UTF-8?q?OMS=E6=89=A7=E8=A1=8C=E5=8D=95=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExecuteOrderApplicationService.java | 4 + .../entity/BusinessDocumentCargoMulti.java | 35 +- .../facade/IBusinessDocumentOrderService.java | 4 + .../mapper/BusinessDocumentOrderMapper.java | 6 +- .../BusinessDocumentOrderImpl.java | 17 + .../todo/BusinessDocumentOrderDO.java | 14 + .../BusinessDocumentOrderDomainService.java | 633 +++++++++++++++++- .../facade/IExecuteOrderService.java | 4 +- .../persistence/ExecuteOrderImpl.java | 20 +- .../service/ExecuteOrderDomainService.java | 5 +- .../BusinessDocumentCargoMultiDTO.java | 32 + .../BusinessDocumentOrderDTO.java | 15 + .../facade/executeOrder/ExecuteOrderApi.java | 35 +- .../java/com/mhd/oms/util/DictDataUtils.java | 201 ++++++ .../java/com/mhd/oms/util/DictTypeEnum.java | 53 ++ .../BusinessDocumentOrderMapper.xml | 8 +- 16 files changed, 1060 insertions(+), 26 deletions(-) create mode 100644 mhd_oms/src/main/java/com/mhd/oms/util/DictDataUtils.java create mode 100644 mhd_oms/src/main/java/com/mhd/oms/util/DictTypeEnum.java diff --git a/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java b/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java index ec5df5c08..5a3154d18 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/application/service/executeOrder/ExecuteOrderApplicationService.java @@ -60,6 +60,10 @@ public class ExecuteOrderApplicationService { return executeOrderDomainService.delete(ids); } + public boolean issueDocuments(Long[] ids) { + return executeOrderDomainService.issueDocuments(ids); + } + /** * 获取【请填写功能名称】详细信息 */ diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoMulti/entity/BusinessDocumentCargoMulti.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoMulti/entity/BusinessDocumentCargoMulti.java index 973f68838..b633cea83 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoMulti/entity/BusinessDocumentCargoMulti.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentCargoMulti/entity/BusinessDocumentCargoMulti.java @@ -13,7 +13,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; /** * 【请填写功能名称】对象 business_document_cargo_multi - * + * * @author gen * @date 2026-01-26 */ @@ -63,5 +63,38 @@ public class BusinessDocumentCargoMulti extends BaseVOEntity{ @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") private BigDecimal cargoWeight; + @ApiModelProperty("货物名称") + private String cargoName; + @ApiModelProperty("货物单位ID") + private String cargoUnitId; + + @ApiModelProperty("货物单位名字") + private String cargoUnitName; + + @ApiModelProperty(value = "货物数量") + private BigDecimal cargoNum; + + private BigDecimal weight; + @ApiModelProperty(value = "重量单位ID") + private String weightUnitId; + @ApiModelProperty(value = "重量单位名称") + private String weightUnit; + + + @ApiModelProperty(value = "数量单位ID") + private String quantityUnitId; + @ApiModelProperty(value = "数量单位名称") + private String quantityUnit; + + + @ApiModelProperty("整机表编号") + private String machineCode; + + @ApiModelProperty("") + private String materialCode; + + @ApiModelProperty("$column.columnComment") + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private String orderId; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/facade/IBusinessDocumentOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/facade/IBusinessDocumentOrderService.java index 85d931690..f01426821 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/facade/IBusinessDocumentOrderService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/facade/IBusinessDocumentOrderService.java @@ -44,4 +44,8 @@ public interface IBusinessDocumentOrderService extends IService queryList(BusinessDocumentOrderDO businessDocumentOrderDO); + String selectByMakerCodeNc(@Param("salesmanCodeNc") String salesmanCodeNc); + + String selectByMakerCodeNc1(@Param("salesmanCodeNc") String salesmanCodeNc); + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java index 127667a38..547493f8c 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/repository/persistence/BusinessDocumentOrderImpl.java @@ -141,4 +141,21 @@ public class BusinessDocumentOrderImpl extends ServiceImpl businessDocumentAddressMultiDTOList; + + @ApiModelProperty("业务单货物集合") + private List businessDocumentCargoMultiList; + + @ApiModelProperty(value = "装货地址集合") + private List loadingAddressList; + @ApiModelProperty(value = "卸货地址集合") + private List unloadAddressList; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java index 3163836b9..71ba23ffe 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/businessDocumentOrder/service/BusinessDocumentOrderDomainService.java @@ -1,13 +1,41 @@ package com.mhd.oms.domain.businessDocumentOrder.service; +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import com.aliyun.oss.ServiceException; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.mhd.common.core.domain.po.UserShipperPo; +import com.mhd.common.core.utils.OrderSequence; +import com.mhd.common.security.utils.SecurityUtils; +import com.mhd.oms.domain.businessDocumentAddressMulti.entity.BusinessDocumentAddressMulti; +import com.mhd.oms.domain.businessDocumentAddressMulti.repository.mapper.BusinessDocumentAddressMultiMapper; +import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti; +import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper; +import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder; import com.mhd.oms.domain.businessDocumentOrder.repository.facade.IBusinessDocumentOrderService; import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO; import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocumentOrderDO; +import com.mhd.oms.domain.orderType.entity.OrderType; +import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO; +import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO; +import com.mhd.oms.util.DictDataUtils; +import com.mhd.oms.util.DictTypeEnum; +import com.mhd.system.api.domain.SysDictData; +import com.mhd.system.api.model.LoginUser; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.math.BigDecimal; +import java.util.*; +import java.util.stream.Collectors; -import java.util.List; /** * 【请填写功能名称】 * @@ -21,7 +49,14 @@ public class BusinessDocumentOrderDomainService { @Autowired private IBusinessDocumentOrderService businessDocumentOrderService; + @Resource + private DictDataUtils dictDataUtils; + @Resource + private BusinessDocumentCargoMultiMapper businessDocumentCargoMultiMapper; + + @Resource + private BusinessDocumentAddressMultiMapper businessDocumentAddressMultiMapper; /** * 分页查询【请填写功能名称】列表 */ @@ -34,17 +69,569 @@ public class BusinessDocumentOrderDomainService { * 新增【请填写功能名称】 */ public Boolean insert(BusinessDocumentOrderDO businessDocumentOrderDO) { + if (null!=businessDocumentOrderDO.getGoodsQuantity()){ + businessDocumentOrderDO.setGoodsQuantity(BigDecimal.ZERO); + } - return businessDocumentOrderService.insert(businessDocumentOrderDO); + LoginUser u = SecurityUtils.getLoginUser(); + + //处理费用默认值 + handFee(businessDocumentOrderDO); + //组织赋值 + Long organizationId = businessDocumentOrderDO.getOrganizationId(); + if(ObjectUtil.isNotEmpty(organizationId)){ + businessDocumentOrderDO.setOrgId(String.valueOf(organizationId)); + businessDocumentOrderDO.setOrgName(businessDocumentOrderDO.getOrganizationName()); + }else{ + businessDocumentOrderDO.setOrgId(String.valueOf(u.getUserPo().getOrganizationId())); + businessDocumentOrderDO.setOrgName(String.valueOf(u.getUserPo().getOrganizationName())); + } + businessDocumentOrderDO.setTopOrganizationId(u.getUserPo().getTopOrganizationId()); + /* String swzlUserId = businessDocumentOrderDO.getAppointShipperId(); + // 获取数字物流平台用户Id + String appointShipperId = businessDocumentOrderDO.getAppointShipperId(); + if(StringUtils.isBlank(appointShipperId)){ + appointShipperId = u.getUserid(); + businessDocumentOrderDO.setAppointShipperId(appointShipperId); + }*/ + UserShipperPo userShipperPo=u.getUserShipperPo(); + + if (userShipperPo == null) { + throw new ServiceException("您非货主角色或账号已被删除!"); + } + String orderRemark = businessDocumentOrderDO.getRemarks(); + businessDocumentOrderDO.setRemarks(orderRemark); + + businessDocumentOrderDO.setAppointShipperId(String.valueOf(userShipperPo.getUserId())); + // 分类处理货物列表 + List allCargoList = businessDocumentOrderDO.getBusinessDocumentCargoMultiList(); + businessDocumentOrderDO.setReceivableType(2L); + //非企业员工判断个人信息审核状态x + if (userShipperPo.getShipperType() != 2 && userShipperPo.getShipperFill() != 3) { + throw new ServiceException("未提交个人信息认证或认证未通过,请先认证!"); + } + + + //企业员工判断企业货主审核状态 + if (userShipperPo.getShipperType() == 2) { + if (userShipperPo.getShipperEnterpriseFill() != 3) { + throw new ServiceException("未提交个人信息认证或认证未通过,请先认证!"); + } + } + /** + * 生成货源单信息 + */ + BusinessDocumentOrder tmsOrder = new BusinessDocumentOrder(); + BeanUtils.copyProperties(businessDocumentOrderDO, tmsOrder, "id"); + tmsOrder.setSettlementStatus(1L);//未出账 + tmsOrder.setAuditStatus(0L);//未审核 + tmsOrder.setSzwlUserId(Long.valueOf(u.getUserid())); + if (tmsOrder.getLoadingDate() != null && tmsOrder.getUnloadingData() != null) { + if (tmsOrder.getUnloadingData().before(tmsOrder.getLoadingDate())) { + throw new ServiceException("装货日期不能大于卸货日期!"); + } + } + //赋值信息费收款方信息 + if(businessDocumentOrderDO.getOrderShippingType()==3&&businessDocumentOrderDO.getInfoFeePayeeType()!=null){ + String infoFeePayee = ""; + if(businessDocumentOrderDO.getInfoFeePayeeType()==0){ + infoFeePayee = businessDocumentOrderDO.getAppointShipper();//委托方 + }else if(businessDocumentOrderDO.getInfoFeePayeeType()==1){ + infoFeePayee = businessDocumentOrderDO.getRecipientName();//收货方 + }else if(businessDocumentOrderDO.getInfoFeePayeeType()==2){ + infoFeePayee = businessDocumentOrderDO.getInfoFeePayee();//第三方 + if(StringUtils.isBlank(businessDocumentOrderDO.getInfoFeePayee())){ + throw new ServiceException("请填写信息费第三方收款方信息!"); + } + } + tmsOrder.setInfoFeePayeeType(businessDocumentOrderDO.getInfoFeePayeeType()); + if(infoFeePayee!=""){ + tmsOrder.setInfoFeePayee(infoFeePayee); + } + } + //根据货物重量大小赋值 + BigDecimal weightMin = new BigDecimal(0); + tmsOrder.setWeightMin(weightMin); + tmsOrder.setUncollectedFreight(tmsOrder.getDeliveryFreight()); + //存入对应创建人 + tmsOrder.setCreateBy(userShipperPo.getUserId()); + if ( 2 == userShipperPo.getShipperType()) { + tmsOrder.setCreateCompanyId(String.valueOf(userShipperPo.getUserId())); + } + tmsOrder.setCreateTime(new Date()); + tmsOrder.setCreaterName(u.getUsername());//保存创建人姓名 + tmsOrder.setCreaterPhone(u.getUserPo().getUserPhone());//保存创建人电话 + tmsOrder.setRealCreateBy(String.valueOf(u.getUserid())); + tmsOrder.setRealCreateName(u.getUsername()); + tmsOrder.setAppointShipper(userShipperPo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名 + String salesmanCodeNc = businessDocumentOrderDO.getSalesmanId(); + if (salesmanCodeNc != null){ + String makerCodeNc = businessDocumentOrderService.selectByMakerCodeNc(salesmanCodeNc); + String makerCodeNc1 = businessDocumentOrderService.selectByMakerCodeNc1(salesmanCodeNc); + tmsOrder.setMakerCodeNc(makerCodeNc); + tmsOrder.setSalesmanCodeNc(makerCodeNc1); + } + List machineNumberList = new ArrayList<>(); + List goodsNameList = new ArrayList<>(); + if (ObjectUtil.isNotEmpty(allCargoList)&&allCargoList.size()>0) { + BusinessDocumentCargoMultiDTO tmsCargoInfoDTO1 = allCargoList.get(0); + String goodsTypeId = tmsCargoInfoDTO1.getGoodsTypeId(); + if (ObjectUtil.isNotEmpty(goodsTypeId)) { + for (BusinessDocumentCargoMultiDTO tmsCargoInfoDTO : allCargoList) { + // 处理货物名称信息 + String goodsName = buildCargoNameInfo(tmsCargoInfoDTO, businessDocumentOrderDO); + if (goodsName != null) { + goodsNameList.add(goodsName); + } + + // 处理机械编号信息 + String machineCode = extractMachineCode(tmsCargoInfoDTO); + if (machineCode != null) { + machineNumberList.add(machineCode); + } + } + } + } + + //生成货源单号 + tmsOrder.setGoodsNumber(OrderSequence.getOrderCode()); + List loadingAddressList = businessDocumentOrderDO.getLoadingAddressList();//装货地信息集合 + List unloadAddressList = businessDocumentOrderDO.getUnloadAddressList();//卸货地信息集合 + String loadCityCounty="",unloadCityCounty=""; + //获取第一条装货地址和获取最后一条卸货地址 + BusinessDocumentAddressMultiDTO firstAddress = loadingAddressList.get(0); + BusinessDocumentAddressMultiDTO lastAddress = unloadAddressList.get(unloadAddressList.size() - 1); + tmsOrder.setLoadingAreaId(firstAddress.getAreaCode()); + tmsOrder.setLoadingName(firstAddress.getAreaCode()); + tmsOrder.setLoadingAddress(firstAddress.getAddress()); + String area = firstAddress.getAreaCode() + firstAddress.getAddress(); + tmsOrder.setLineTitleLeft(firstAddress.getAreaCode()); + tmsOrder.setLineTitleRight(lastAddress.getAreaCode()); + tmsOrder.setFreighterName(firstAddress.getContactName()); + tmsOrder.setLoadingPhone(firstAddress.getContactPhone()); + tmsOrder.setLoadingDate(firstAddress.getLayDate()); + + tmsOrder.setUnloadAreaId(lastAddress.getAreaCode()); + tmsOrder.setUnloadName(lastAddress.getAreaCode()); + tmsOrder.setUnloadAddress(lastAddress.getAddress()); + String unarea = lastAddress.getAreaCode() + lastAddress.getAddress(); + tmsOrder.setDischargerName(lastAddress.getContactName()); + tmsOrder.setUnloadPhone(lastAddress.getContactPhone()); + tmsOrder.setUnloadingData(lastAddress.getLayDate()); + tmsOrder.setMachineNumber(String.join(",", machineNumberList)); + // 设置货物名称,将所有货物信息用逗号连接 + tmsOrder.setGoodsName(String.join(",", goodsNameList)); + //服务要求 + SysDictData sysDictItem = new SysDictData(); + if (StringUtils.isNotBlank(businessDocumentOrderDO.getServiceRequireId())) { + String[] serviceRequireId = businessDocumentOrderDO.getServiceRequireId().split(","); + StringBuilder serviceRequire = new StringBuilder(); + tmsOrder.setServiceRequire(findName(serviceRequireId, sysDictItem, serviceRequire)); + } + //车长车型 + if (StringUtils.isNotEmpty(businessDocumentOrderDO.getCarType())) { + String[] carType = businessDocumentOrderDO.getCarType().split(","); + StringBuilder carTypeName = new StringBuilder(); + tmsOrder.setCarTypeName(findName(carType, sysDictItem, carTypeName)); + } + if (ObjectUtil.isNotEmpty(allCargoList)&&allCargoList.size()>0) { + BusinessDocumentCargoMultiDTO tmsCargoInfoDTO1 = allCargoList.get(0); + String goodsTypeId = tmsCargoInfoDTO1.getGoodsTypeId(); + if (ObjectUtil.isNotEmpty(goodsTypeId)) { + for (BusinessDocumentCargoMultiDTO tmsCargoInfoDTO : allCargoList) { + //货物重量单位id + if (StringUtils.isNotBlank(tmsCargoInfoDTO.getWeightUnitId())) { + SysDictData sysDictItem3 = dictDataUtils.getDictDataByValue(DictTypeEnum.GOODSUNIT.getTypeCode(), tmsCargoInfoDTO.getWeightUnitId()); + if (sysDictItem3 != null) { + tmsOrder.setGoodsUntis(sysDictItem3.getDictLabel()); + } + } else { + tmsOrder.setGoodsUntisId("1"); + tmsOrder.setGoodsUntis("吨"); + } + //货物数量单位id + if (StringUtils.isNotBlank(tmsCargoInfoDTO.getQuantityUnitId())) { + SysDictData sysDictItem33 = dictDataUtils.getDictDataByValue(DictTypeEnum.GOODSUNIT.getTypeCode(), tmsCargoInfoDTO.getQuantityUnitId()); + if (sysDictItem33 != null) { + tmsCargoInfoDTO.setQuantityUnit(sysDictItem33.getDictLabel()); + } + } + } + } + } + //配载方式名称 + if (businessDocumentOrderDO.getTransportationModeId() != null && StringUtils.isNotEmpty(businessDocumentOrderDO.getTransportationModeId() + "")) { + if (businessDocumentOrderDO.getTransportationModeId() == 0) { + tmsOrder.setTransportationName("数量配载"); + tmsOrder.setRadioValue(2L); + //wxy 23-12-15日修改,数量配载时不重置需求车次为1 +// tmsOrder.setDemandTrainNumber(1); + } else if (businessDocumentOrderDO.getTransportationModeId() == 1) { + tmsOrder.setTransportationName("车次配载"); + tmsOrder.setRadioValue(1L); + } + } + if(businessDocumentOrderDO.getOrderShippingType()==3){ + tmsOrder.setTransportationName("数量配载"); + tmsOrder.setRadioValue(2L); + tmsOrder.setTransportationModeId(0L); + }else{ + tmsOrder.setTransportationName("车次配载"); + tmsOrder.setRadioValue(1L); + tmsOrder.setTransportationModeId(1L); + } + //货源单保存 + tmsOrder.setCreateUserId(String.valueOf(u.getUserid())); + tmsOrder.setOrderStatus(0L); + //保存付款方 + if(businessDocumentOrderDO.getPayerType()==0){//委托方 + tmsOrder.setPayer(tmsOrder.getAppointShipper()); + }else if(businessDocumentOrderDO.getPayerType()==1){//收货方 + tmsOrder.setPayer(tmsOrder.getRecipientName()); + } + + // 设置组织信息 + if (businessDocumentOrderDO.getOrganizationId() != null) { + tmsOrder.setOrganizationId(businessDocumentOrderDO.getOrganizationId()); + } + if (businessDocumentOrderDO.getOrganizationName() != null) { + tmsOrder.setOrganizationName(businessDocumentOrderDO.getOrganizationName()); + } + if (businessDocumentOrderDO.getTopOrganizationId() != null) { + tmsOrder.setTopOrganizationId(businessDocumentOrderDO.getTopOrganizationId()); + } + boolean istrue=businessDocumentOrderService.insert(businessDocumentOrderDO); + //保存货物信息及地址信息 + + saveAddress2CargoInfo(tmsOrder.getId(), allCargoList, loadingAddressList, unloadAddressList); + return istrue; } /** * 修改【请填写功能名称】 */ public Boolean update(BusinessDocumentOrderDO businessDocumentOrderDO) { - return businessDocumentOrderService.update(businessDocumentOrderDO); + LoginUser u = SecurityUtils.getLoginUser(); + UserShipperPo userShipperPo=u.getUserShipperPo(); + + if (userShipperPo == null) { + throw new ServiceException("您非货主角色或账号已被删除!"); + } + BusinessDocumentOrder tmsOrder = businessDocumentOrderService.getById(businessDocumentOrderDO.getId()); + if (tmsOrder.getOrderStatus() == 1){ + tmsOrder.setOrderStatus(0L); + } + if (tmsOrder == null) { + throw new ServiceException("货源单不存在或已被删除!"); + } + if (tmsOrder.getIsSource() == 1) { + throw new ServiceException("运单已被关闭,请确认!"); + } + //处理费用默认值 + handFee(businessDocumentOrderDO); + //组织赋值 + Long organizationId = businessDocumentOrderDO.getOrganizationId(); + if(ObjectUtil.isNotEmpty(organizationId)){ + businessDocumentOrderDO.setOrgId(String.valueOf(organizationId)); + businessDocumentOrderDO.setOrgName(businessDocumentOrderDO.getOrganizationName()); + }else{ + businessDocumentOrderDO.setOrgId(String.valueOf(u.getUserPo().getOrganizationId())); + businessDocumentOrderDO.setOrgName(String.valueOf(u.getUserPo().getOrganizationName())); + } + businessDocumentOrderDO.setTopOrganizationId(u.getUserPo().getTopOrganizationId()); + BigDecimal deliveryFreight=tmsOrder.getDeliveryFreight(); + /** + * 生成货源单信息 + */ + BeanUtils.copyProperties(businessDocumentOrderDO, tmsOrder); + tmsOrder.setSzwlUserId(Long.valueOf(u.getUserid())); + if (tmsOrder.getLoadingDate() != null && tmsOrder.getUnloadingData() != null) { + if (tmsOrder.getUnloadingData().before(tmsOrder.getLoadingDate())) { + throw new ServiceException("装货日期不能大于卸货日期!"); + } + } + //赋值信息费收款方信息 + if(businessDocumentOrderDO.getOrderShippingType()==3&&businessDocumentOrderDO.getInfoFeePayeeType()!=null){ + String infoFeePayee = ""; + if(businessDocumentOrderDO.getInfoFeePayeeType()==0){ + infoFeePayee = businessDocumentOrderDO.getAppointShipper();//委托方 + }else if(businessDocumentOrderDO.getInfoFeePayeeType()==1){ + infoFeePayee = businessDocumentOrderDO.getRecipientName();//收货方 + }else if(businessDocumentOrderDO.getInfoFeePayeeType()==2){ + infoFeePayee = businessDocumentOrderDO.getInfoFeePayee();//第三方 + if(StringUtils.isBlank(businessDocumentOrderDO.getInfoFeePayee())){ + throw new ServiceException("请填写信息费第三方收款方信息!"); + } + } + tmsOrder.setInfoFeePayeeType(businessDocumentOrderDO.getInfoFeePayeeType()); + if(infoFeePayee!=""){ + tmsOrder.setInfoFeePayee(infoFeePayee); + } + } + //根据货物重量大小赋值 + BigDecimal weightMin = new BigDecimal(0); + tmsOrder.setWeightMin(weightMin); + tmsOrder.setUncollectedFreight(tmsOrder.getDeliveryFreight()); + //存入对应创建人 + tmsOrder.setCreateBy(userShipperPo.getUserId()); + if ( 2 == userShipperPo.getShipperType()) { + tmsOrder.setCreateCompanyId(String.valueOf(userShipperPo.getUserId())); + } + tmsOrder.setCreateTime(new Date()); + tmsOrder.setCreaterName(u.getUsername());//保存创建人姓名 + tmsOrder.setCreaterPhone(u.getUserPo().getUserPhone());//保存创建人电话 + tmsOrder.setRealCreateBy(String.valueOf(u.getUserid())); + tmsOrder.setRealCreateName(u.getUsername()); + tmsOrder.setAppointShipper(userShipperPo.getShipperEnterpriseName());//20250-07-29修改:订单表委托方保存公司名字,而不是姓名 + String salesmanCodeNc = businessDocumentOrderDO.getSalesmanId(); + if (salesmanCodeNc != null){ + String makerCodeNc = businessDocumentOrderService.selectByMakerCodeNc(salesmanCodeNc); + String makerCodeNc1 = businessDocumentOrderService.selectByMakerCodeNc1(salesmanCodeNc); + tmsOrder.setMakerCodeNc(makerCodeNc); + tmsOrder.setSalesmanCodeNc(makerCodeNc1); + } + List machineNumberList = new ArrayList<>(); + List goodsNameList = new ArrayList<>(); + // 分类处理货物列表 + List allCargoList = businessDocumentOrderDO.getBusinessDocumentCargoMultiList(); + if (ObjectUtil.isNotEmpty(allCargoList)&&allCargoList.size()>0) { + BusinessDocumentCargoMultiDTO tmsCargoInfoDTO1 = allCargoList.get(0); + String goodsTypeId = tmsCargoInfoDTO1.getGoodsTypeId(); + if (ObjectUtil.isNotEmpty(goodsTypeId)) { + for (BusinessDocumentCargoMultiDTO tmsCargoInfoDTO : allCargoList) { + // 处理货物名称信息 + String goodsName = buildCargoNameInfo(tmsCargoInfoDTO, businessDocumentOrderDO); + if (goodsName != null) { + goodsNameList.add(goodsName); + } + + // 处理机械编号信息 + String machineCode = extractMachineCode(tmsCargoInfoDTO); + if (machineCode != null) { + machineNumberList.add(machineCode); + } + } + } + } + + //生成货源单号 + tmsOrder.setGoodsNumber(OrderSequence.getOrderCode()); + List loadingAddressList = businessDocumentOrderDO.getLoadingAddressList();//装货地信息集合 + List unloadAddressList = businessDocumentOrderDO.getUnloadAddressList();//卸货地信息集合 + String loadCityCounty="",unloadCityCounty=""; + //获取第一条装货地址和获取最后一条卸货地址 + BusinessDocumentAddressMultiDTO firstAddress = loadingAddressList.get(0); + BusinessDocumentAddressMultiDTO lastAddress = unloadAddressList.get(unloadAddressList.size() - 1); + tmsOrder.setLoadingAreaId(firstAddress.getAreaCode()); + tmsOrder.setLoadingName(firstAddress.getAreaCode()); + tmsOrder.setLoadingAddress(firstAddress.getAddress()); + String area = firstAddress.getAreaCode() + firstAddress.getAddress(); + tmsOrder.setLineTitleLeft(firstAddress.getAreaCode()); + tmsOrder.setLineTitleRight(lastAddress.getAreaCode()); + tmsOrder.setFreighterName(firstAddress.getContactName()); + tmsOrder.setLoadingPhone(firstAddress.getContactPhone()); + tmsOrder.setLoadingDate(firstAddress.getLayDate()); + + tmsOrder.setUnloadAreaId(lastAddress.getAreaCode()); + tmsOrder.setUnloadName(lastAddress.getAreaCode()); + tmsOrder.setUnloadAddress(lastAddress.getAddress()); + String unarea = lastAddress.getAreaCode() + lastAddress.getAddress(); + tmsOrder.setDischargerName(lastAddress.getContactName()); + tmsOrder.setUnloadPhone(lastAddress.getContactPhone()); + tmsOrder.setUnloadingData(lastAddress.getLayDate()); + tmsOrder.setMachineNumber(String.join(",", machineNumberList)); + // 设置货物名称,将所有货物信息用逗号连接 + tmsOrder.setGoodsName(String.join(",", goodsNameList)); + //服务要求 + SysDictData sysDictItem = new SysDictData(); + if (StringUtils.isNotBlank(businessDocumentOrderDO.getServiceRequireId())) { + String[] serviceRequireId = businessDocumentOrderDO.getServiceRequireId().split(","); + StringBuilder serviceRequire = new StringBuilder(); + tmsOrder.setServiceRequire(findName(serviceRequireId, sysDictItem, serviceRequire)); + } + //车长车型 + if (StringUtils.isNotEmpty(businessDocumentOrderDO.getCarType())) { + String[] carType = businessDocumentOrderDO.getCarType().split(","); + StringBuilder carTypeName = new StringBuilder(); + tmsOrder.setCarTypeName(findName(carType, sysDictItem, carTypeName)); + } + if (ObjectUtil.isNotEmpty(allCargoList)&&allCargoList.size()>0) { + BusinessDocumentCargoMultiDTO tmsCargoInfoDTO1 = allCargoList.get(0); + String goodsTypeId = tmsCargoInfoDTO1.getGoodsTypeId(); + if (ObjectUtil.isNotEmpty(goodsTypeId)) { + for (BusinessDocumentCargoMultiDTO tmsCargoInfoDTO : allCargoList) { + //货物重量单位id + if (StringUtils.isNotBlank(tmsCargoInfoDTO.getWeightUnitId())) { + SysDictData sysDictItem3 = dictDataUtils.getDictDataByValue(DictTypeEnum.GOODSUNIT.getTypeCode(), tmsCargoInfoDTO.getWeightUnitId()); + if (sysDictItem3 != null) { + tmsOrder.setGoodsUntis(sysDictItem3.getDictLabel()); + } + } else { + tmsOrder.setGoodsUntisId("1"); + tmsOrder.setGoodsUntis("吨"); + } + //货物数量单位id + if (StringUtils.isNotBlank(tmsCargoInfoDTO.getQuantityUnitId())) { + SysDictData sysDictItem33 = dictDataUtils.getDictDataByValue(DictTypeEnum.GOODSUNIT.getTypeCode(), tmsCargoInfoDTO.getQuantityUnitId()); + if (sysDictItem33 != null) { + tmsCargoInfoDTO.setQuantityUnit(sysDictItem33.getDictLabel()); + } + } + } + } + } + //配载方式名称 + if (businessDocumentOrderDO.getTransportationModeId() != null && StringUtils.isNotEmpty(businessDocumentOrderDO.getTransportationModeId() + "")) { + if (businessDocumentOrderDO.getTransportationModeId() == 0) { + tmsOrder.setTransportationName("数量配载"); + tmsOrder.setRadioValue(2L); + //wxy 23-12-15日修改,数量配载时不重置需求车次为1 +// tmsOrder.setDemandTrainNumber(1); + } else if (businessDocumentOrderDO.getTransportationModeId() == 1) { + tmsOrder.setTransportationName("车次配载"); + tmsOrder.setRadioValue(1L); + } + } + if(businessDocumentOrderDO.getOrderShippingType()==3){ + tmsOrder.setTransportationName("数量配载"); + tmsOrder.setRadioValue(2L); + tmsOrder.setTransportationModeId(0L); + }else{ + tmsOrder.setTransportationName("车次配载"); + tmsOrder.setRadioValue(1L); + tmsOrder.setTransportationModeId(1L); + } + //货源单保存 + tmsOrder.setCreateUserId(String.valueOf(u.getUserid())); + tmsOrder.setOrderStatus(0L); + //保存付款方 + if(businessDocumentOrderDO.getPayerType()==0){//委托方 + tmsOrder.setPayer(tmsOrder.getAppointShipper()); + }else if(businessDocumentOrderDO.getPayerType()==1){//收货方 + tmsOrder.setPayer(tmsOrder.getRecipientName()); + } + + // 设置组织信息 + if (businessDocumentOrderDO.getOrganizationId() != null) { + tmsOrder.setOrganizationId(businessDocumentOrderDO.getOrganizationId()); + } + if (businessDocumentOrderDO.getOrganizationName() != null) { + tmsOrder.setOrganizationName(businessDocumentOrderDO.getOrganizationName()); + } + if (businessDocumentOrderDO.getTopOrganizationId() != null) { + tmsOrder.setTopOrganizationId(businessDocumentOrderDO.getTopOrganizationId()); + } + boolean istrue=businessDocumentOrderService.update(businessDocumentOrderDO); + //保存货物信息及地址信息 + + saveAddress2CargoInfo(tmsOrder.getId(), allCargoList, loadingAddressList, unloadAddressList); + return istrue; + + } + private void saveAddress2CargoInfo(Long id, List cargoInfoList, List loadingAddressList, List unloadAddressList) { + + //根据ID先删除货物、装卸货信息 + Snowflake snowflake = IdUtil.createSnowflake(1, 1); + if (ObjectUtil.isNotEmpty(cargoInfoList)&&cargoInfoList.size()>0) { + BusinessDocumentCargoMultiDTO tmsCargoInfoDTO1 = cargoInfoList.get(0); + String goodsTypeId = tmsCargoInfoDTO1.getGoodsTypeId(); + if (ObjectUtil.isNotEmpty(goodsTypeId)) { + businessDocumentCargoMultiMapper.delete(new LambdaQueryWrapper().eq(BusinessDocumentCargoMulti::getOrderId, id)); + List tmsCargoInfoList = new ArrayList<>(); + for (BusinessDocumentCargoMultiDTO tmsCargoInfoDTO : cargoInfoList) { + BusinessDocumentCargoMulti tmsCargoInfo = new BusinessDocumentCargoMulti(); + BeanUtils.copyProperties(tmsCargoInfoDTO, tmsCargoInfo); + tmsCargoInfo.setCreateTime(new Date()); + tmsCargoInfo.setUpdateTime(new Date()); + tmsCargoInfo.setOrderId(String.valueOf(id)); + tmsCargoInfo.setCargoWeight(tmsCargoInfoDTO.getWeight()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getWeight()); + tmsCargoInfo.setCargoNum(tmsCargoInfoDTO.getCargoNum()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getCargoNum()); + businessDocumentCargoMultiMapper.insert(tmsCargoInfo); + } + + } + } + + businessDocumentAddressMultiMapper.delete(new LambdaQueryWrapper().eq(BusinessDocumentAddressMulti::getOrderId, id)); + List addressMultiList = new ArrayList<>(); + for (BusinessDocumentAddressMultiDTO addressMultiDTO : loadingAddressList) { + BusinessDocumentAddressMulti tmsAddressMulti = new BusinessDocumentAddressMulti(); + BeanUtils.copyProperties(addressMultiDTO, tmsAddressMulti); + tmsAddressMulti.setCreateTime(new Date()); + tmsAddressMulti.setUpdateTime(new Date()); + tmsAddressMulti.setOrderId(String.valueOf(id)); + tmsAddressMulti.setLayType(1L); + tmsAddressMulti.setSort(addressMultiDTO.getSort()); + tmsAddressMulti.setShortName(tmsAddressMulti.getAreaName()); + businessDocumentAddressMultiMapper.insert(tmsAddressMulti); + } + for (BusinessDocumentAddressMultiDTO addressMultiDTO : unloadAddressList) { + BusinessDocumentAddressMulti tmsAddressMulti = new BusinessDocumentAddressMulti(); + BeanUtils.copyProperties(addressMultiDTO, tmsAddressMulti); + tmsAddressMulti.setCreateTime(new Date()); + tmsAddressMulti.setUpdateTime(new Date()); + tmsAddressMulti.setOrderId(String.valueOf(id)); + tmsAddressMulti.setShortName(tmsAddressMulti.getAreaName()); + businessDocumentAddressMultiMapper.insert(tmsAddressMulti); + } + } + /** + * 处理前端费用为null的情况 + * @param businessDocumentOrderDO + */ + private void handFee(BusinessDocumentOrderDO businessDocumentOrderDO) { + businessDocumentOrderDO.setWeightMin( businessDocumentOrderDO.getWeightMin() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getWeightMin()); + businessDocumentOrderDO.setWeightMax( businessDocumentOrderDO.getWeightMax() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getWeightMax()); + businessDocumentOrderDO.setDeliveryFreight( businessDocumentOrderDO.getDeliveryFreight() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getDeliveryFreight()); + businessDocumentOrderDO.setTransportationUnitPrice( businessDocumentOrderDO.getTransportationUnitPrice() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getTransportationUnitPrice()); + //businessDocumentOrderDO.setHighestPrice( businessDocumentOrderDO.getHighestPrice() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getHighestPrice()); + // businessDocumentOrderDO.setMaximumBidPrice( businessDocumentOrderDO.getMaximumBidPrice() == null ? BigDecimal.ZERO : businessDocumentOrderDO.getMaximumBidPrice()); + + } + /** + * 构建货物名称信息 + * @param tmsCargoInfoDTO 货物信息 + * @param tmsOrderAddDTO 订单信息 + * @return 格式化的货物名称字符串,如果货物名称为空则返回null + */ + private String buildCargoNameInfo(BusinessDocumentCargoMultiDTO tmsCargoInfoDTO, BusinessDocumentOrderDO tmsOrderAddDTO) { + // 早期返回:如果货物名称为空,返回null + if (tmsCargoInfoDTO.getCargoName() == null || StringUtils.isEmpty(tmsCargoInfoDTO.getCargoName())) { + return null; + } + + StringBuilder goodsInfo = new StringBuilder(); + goodsInfo.append(tmsCargoInfoDTO.getCargoName()); + + + // 非罐车运输:使用cargoNum和cargoUnitName + if (tmsCargoInfoDTO.getCargoNum() != null) { + goodsInfo.append("*").append(tmsCargoInfoDTO.getCargoNum()); + } + + if (tmsCargoInfoDTO.getCargoUnitName() != null && StringUtils.isNotEmpty(tmsCargoInfoDTO.getCargoUnitName())) { + goodsInfo.append(tmsCargoInfoDTO.getCargoUnitName()); + } + + + return goodsInfo.toString(); + } + + /** + * 提取机械编号信息 + * @param tmsCargoInfoDTO 货物信息 + * @return 机械编号字符串,如果机械编号为空则返回null + */ + private String extractMachineCode(BusinessDocumentCargoMultiDTO tmsCargoInfoDTO) { + // 早期返回:如果机械编号为空,返回null + if (tmsCargoInfoDTO.getMachineCode() == null || StringUtils.isEmpty(tmsCargoInfoDTO.getMachineCode())) { + return null; + } + + return tmsCargoInfoDTO.getMachineCode(); + } /** * 批量删除【请填写功能名称】 */ @@ -68,4 +655,44 @@ public class BusinessDocumentOrderDomainService { public Boolean execute(Long[] ids) { return businessDocumentOrderService.execute(ids); } + + /** + * 查询编码对应名称 + * + * @param serviceRequireId + * @param sysDictItem + * @param serviceRequire + * @return + */ + private String findName(String[] serviceRequireId, SysDictData sysDictItem, StringBuilder serviceRequire) { + List dictDataList = dictDataUtils.getDictDataList(); + Map> map = dictDataList.stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + List dictData = new ArrayList<>(); + if (map != null){ + if (map.get(DictTypeEnum.SERVICE_REQUIREMENT.getTypeCode()) != null){ + dictData.addAll(map.get(DictTypeEnum.SERVICE_REQUIREMENT.getTypeCode())); + } + if (map.get(DictTypeEnum.VEHICLE_LENGTH.getTypeCode()) != null){ + dictData.addAll(map.get(DictTypeEnum.VEHICLE_LENGTH.getTypeCode())); + } + if (map.get(DictTypeEnum.VEHICLE_TYPE.getTypeCode()) != null){ + dictData.addAll(map.get(DictTypeEnum.VEHICLE_TYPE.getTypeCode())); + } + } + if(dictData != null && dictData.size()>0){ + for (int i = 0; i < serviceRequireId.length; i++) { + if (serviceRequireId[i].length() > 0) { + sysDictItem = dictDataUtils.getDictData(dictData, serviceRequireId[i]); + if (sysDictItem != null){ + serviceRequire.append(sysDictItem.getDictLabel()); + if (i < serviceRequireId.length - 1) { + serviceRequire.append(","); + } + } + } + } + } + return serviceRequire.toString(); + } + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java index 580820c7d..460b0c3e6 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/facade/IExecuteOrderService.java @@ -9,7 +9,7 @@ import java.util.List; /** * 【请填写功能名称】Service接口 - * + * * @author gen * @date 2026-01-27 */ @@ -35,6 +35,8 @@ public interface IExecuteOrderService extends IService */ public Boolean delete(Long[] ids); + public Boolean issueDocuments(Long[] ids); + /** * 查询【请填写功能名称】 diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java index f7bcd611c..3af302e57 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/executeOrder/repository/persistence/ExecuteOrderImpl.java @@ -1,5 +1,6 @@ package com.mhd.oms.domain.executeOrder.repository.persistence; +import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mhd.oms.domain.executeOrder.entity.ExecuteOrder; import com.mhd.oms.domain.executeOrder.repository.facade.IExecuteOrderService; @@ -15,7 +16,7 @@ import java.util.List; /** * 【请填写功能名称】Service业务层处理 - * + * * @author gen * @date 2026-01-27 */ @@ -68,6 +69,23 @@ public class ExecuteOrderImpl extends ServiceImpl businessDocumentAddressMultiDTOList; + + @ApiModelProperty("业务单货物集合") + private List businessDocumentCargoMultiList; + + @ApiModelProperty(value = "装货地址集合") + private List loadingAddressList; + @ApiModelProperty(value = "卸货地址集合") + private List unloadAddressList; + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java index 3f0b0acc6..601f6fa0a 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/executeOrder/ExecuteOrderApi.java @@ -4,13 +4,7 @@ import java.util.List; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.DeleteMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import com.mhd.oms.interfaces.dto.executeOrder.ExecuteOrderDTO; import com.mhd.oms.domain.executeOrder.repository.todo.ExecuteOrderDO; import com.mhd.oms.domain.executeOrder.repository.po.ExecuteOrderPO; @@ -22,7 +16,7 @@ import com.mhd.common.core.web.domain.AjaxResult; import com.mhd.common.core.web.page.TableDataInfo; /** - * 【请填写功能名称】Api + * 【执行单】Api * * @author gen * @date 2026-01-27 @@ -37,9 +31,9 @@ public class ExecuteOrderApi extends BaseController{ private ExecuteOrderAssembler executeOrderAssembler; /** - * 分页查询【请填写功能名称】列表 + * 分页查询【执行单】列表 */ - @ApiOperation("查询【请填写功能名称】列表") + @ApiOperation("查询【执行单】列表") @GetMapping("/list") public TableDataInfo list(ExecuteOrderDTO executeOrderDTO) { @@ -51,9 +45,9 @@ public class ExecuteOrderApi extends BaseController{ } /** - * 编辑【请填写功能名称】 + * 编辑【执行单】 */ - @ApiOperation("编辑【请填写功能名称】") + @ApiOperation("编辑【执行单】") @PostMapping("/edit") public AjaxResult edit(@RequestBody ExecuteOrderDTO executeOrderDTO) { @@ -67,9 +61,9 @@ public class ExecuteOrderApi extends BaseController{ } /** - * 批量删除【请填写功能名称】 + * 批量删除【执行单】 */ - @ApiOperation("批量删除【请填写功能名称】") + @ApiOperation("批量删除【执行单】") @DeleteMapping("/deleteByIds/{ids}") public AjaxResult delete(@PathVariable Long[] ids) { @@ -77,9 +71,9 @@ public class ExecuteOrderApi extends BaseController{ } /** - * 获取【请填写功能名称】详细信息 + * 获取【执行单】详细信息 */ - @ApiOperation("获取【请填写功能名称】") + @ApiOperation("获取【执行单】") @GetMapping(value = "/getInfo/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { @@ -88,6 +82,15 @@ public class ExecuteOrderApi extends BaseController{ + /** + * 批量下发【执行单】 + */ + @ApiOperation("批量下发【执行单】") + @PostMapping("/issueDocuments") + public AjaxResult issueDocuments(@RequestParam("ids") Long[] ids) + { + return toAjax(executeOrderApplicationService.issueDocuments(ids)); + } diff --git a/mhd_oms/src/main/java/com/mhd/oms/util/DictDataUtils.java b/mhd_oms/src/main/java/com/mhd/oms/util/DictDataUtils.java new file mode 100644 index 000000000..6f200f2f2 --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/util/DictDataUtils.java @@ -0,0 +1,201 @@ +package com.mhd.oms.util; + +import cn.hutool.core.collection.CollectionUtil; +import com.mhd.common.core.domain.entity.R; +import com.mhd.common.core.utils.StringUtils; +import com.mhd.system.api.SystemServiceFeign; +import com.mhd.system.api.domain.SysDictData; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * 普通字典查询 + */ +@Component +public class DictDataUtils { + + @Autowired + private SystemServiceFeign systemServiceFeign; + + /** + * 获取全部通用字典 + * @return + */ + public List getDictDataList(){ + List list = new ArrayList<>(); + //通过feign调用获取通用数据字典 + SysDictData sysDictData = new SysDictData(); + sysDictData.setTopOrganizationId(0L); + R> result = systemServiceFeign.getDictDataList(sysDictData); + if (result.getCode() == 200){ + list = result.getData(); + } + return list; + } + + /** + * 通过字典类别获取list + * @param dictTypeCode + * @return + */ + public List getDictDataList(String dictTypeCode){ + List list = new ArrayList<>(); + //通过feign调用获取通用数据字典 + SysDictData sysDictData = new SysDictData(); + sysDictData.setTopOrganizationId(0L); + sysDictData.setDictType(dictTypeCode); + R> result = systemServiceFeign.getDictDataList(sysDictData); + if (result.getCode() == 200){ + list = result.getData(); + } + return list; + } + + /** + * 通过字典类别和编码获取字典 + * @param dictType + * @return + */ + public SysDictData getDictDataByValue(String dictType, String dictValue){ + if (StringUtils.isBlank(dictType) || StringUtils.isBlank(dictValue)){ + return null; + } + List list = new ArrayList<>(); + //通过feign调用获取通用数据字典 + SysDictData sysDictData = new SysDictData(); + sysDictData.setTopOrganizationId(0L); + sysDictData.setDictType(dictType); + sysDictData.setDictValue(dictValue); + R> result = systemServiceFeign.getDictDataList(sysDictData); + if (result.getCode() == 200){ + list = result.getData(); + } + if (CollectionUtil.isNotEmpty(list) && ! list.isEmpty()){ + return list.get(0); + } + return null; + } + + /** + * 通过字典类别和名称获取字典 + * @param dictType + * @return + */ + public SysDictData getDictDataByLable(String dictType, String dictLable){ + if (StringUtils.isBlank(dictType) || StringUtils.isBlank(dictLable)){ + return null; + } + List list = new ArrayList<>(); + //通过feign调用获取通用数据字典 + SysDictData sysDictData = new SysDictData(); + sysDictData.setTopOrganizationId(0L); + sysDictData.setDictType(dictType); + sysDictData.setDictLabel(dictLable); + R> result = systemServiceFeign.getDictDataList(sysDictData); + if (result.getCode() == 200){ + list = result.getData(); + } + if (CollectionUtil.isNotEmpty(list) && list.size() > 0){ + return list.get(0); + } + return null; + } + + /** + * 通过给定的值和字段类型,获取数据字典 + * @param list + * @param dictValue + * @return + */ + public SysDictData getDictData(List list, String dictValue){ + if (CollectionUtil.isNotEmpty(list)){ + Map menuMap = list.stream().collect(Collectors.toMap(SysDictData::getDictValue, Function.identity(), (key1, key2) -> key2)); + SysDictData sysDictData = menuMap.get(dictValue); + return sysDictData; + }else { + return null; + } + } + /** + * 通过给定的值和字段类型,获取数据字典 + * @param list + * @param dictLable + * @return + */ + public SysDictData getDictDataForLable(List list, String dictLable){ + if (CollectionUtil.isNotEmpty(list)){ + Map menuMap = list.stream().collect(Collectors.toMap(SysDictData::getDictLabel, Function.identity(), (key1, key2) -> key2)); + SysDictData sysDictData = menuMap.get(dictLable); + return sysDictData; + }else { + return null; + } + } + + /** + * 通过给定的值和字段类型,获取数据字典 + * @param list + * @param dictValue + * @return + */ + public SysDictData getDictDataByTypeAndValue(List list, String dictType, String dictValue){ + if (CollectionUtil.isNotEmpty(list)){ + Map> collect = list.stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + List dictDataList = collect.get(dictType); + if (CollectionUtil.isNotEmpty(dictDataList)){ + Map menuMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictValue, Function.identity(), (key1, key2) -> key2)); + SysDictData sysDictData = menuMap.get(dictValue); + return sysDictData; + }else { + return null; + } + } + return null; + } + /** + * 通过给定的值和字段值,获取数据字典 + * @param list + * @param dictLable + * @return + */ + public SysDictData getDictDataByTypeAndLable(List list, String dictType, String dictLable){ + if (CollectionUtil.isNotEmpty(list)){ + Map> collect = list.stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + List dictDataList = collect.get(dictType); + if (CollectionUtil.isNotEmpty(dictDataList)){ + Map menuMap = dictDataList.stream().collect(Collectors.toMap(SysDictData::getDictLabel, Function.identity(), (key1, key2) -> key2)); + SysDictData sysDictData = menuMap.get(dictLable); + return sysDictData; + }else { + return null; + } + } + return null; + } + + /** + * 通过类别和编码获取字典名称 + * @param type + * @param code + * @return + */ + public String getSysDictItemValue(String type, String code) { + SysDictData dictDataList = this.getDictDataByValue(type, code); + if (dictDataList == null) + { + return ""; + } + return dictDataList.getDictValue(); + } + + + + + +} diff --git a/mhd_oms/src/main/java/com/mhd/oms/util/DictTypeEnum.java b/mhd_oms/src/main/java/com/mhd/oms/util/DictTypeEnum.java new file mode 100644 index 000000000..68ad3a3ee --- /dev/null +++ b/mhd_oms/src/main/java/com/mhd/oms/util/DictTypeEnum.java @@ -0,0 +1,53 @@ +package com.mhd.oms.util; + +public enum DictTypeEnum { + VEHICLE_TYPE("vehicle_type", "车型"), + VEHICLE_ENERGY_TYPE("vehicle_energy_type", "车辆能源类型"), + LINCESE_COLOR("license_color", "车牌颜色"), + ZHENGJIANLEIXING("zhengjianleixing", "证件类型"), + ZHUNJIACHEXING("zhunjiachexing", "准驾车型"), + MARKER_STATE("marker_state", "标记状态"), + ZAIZHONG("zaizhong", "载重"), + VEHICLE_LENGTH("vehicle_length", "车长"), + AXLENUM("axlenum", "车轴数"), + GROSS_MASS("gross_mass", "总质量"), + VEHICLE_VOLUME("vehicle_volume", "容积"), + BANK("bank", "银行名称"), + SHIP_TYPE("ship_type", "船舶类型"), + PACK_TYPE("pack_type", "包装方式"), + TIMETYPE("time_type", "装卸货时间"), + GOODS_TYPE("goods_type", "商品类型"), + GOODSUNIT("goods_unit", "货物数量单位(吨、方、件)"), + WAYBILL_TYPE("waybill_type", "货单类型"), + SERVICE_REQUIREMENT("service_request", "服务要求(发货页面)"), + SPECIAL_CHARGES("special_charges", "特殊费用-费用类型"), + BUDGET_STATE("budget_state", "特殊费用-收支类型"), + SHIPPER_CANCEL_RESON("shipper_cancel_reson", "货主取消运单理由"), + UNNATURAL_REASON("abnormal_cause", "异常原因"), + PINGAN_FILE_TYPE("pingan_file_type", "平安银行文件类型"), + ; + + private String typeCode; + private String typeValue; + + DictTypeEnum(String typeCode, String typeValue) { + this.typeCode = typeCode; + this.typeValue = typeValue; + } + + public String getTypeCode() { + return typeCode; + } + + public void setTypeCode(String typeCode) { + this.typeCode = typeCode; + } + + public String getTypeValue() { + return typeValue; + } + + public void setVehicleType(String typeValue) { + this.typeValue = typeValue; + } +} diff --git a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml index 19a291d5b..d9151fe0d 100644 --- a/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml +++ b/mhd_oms/src/main/resources/mapper/businessDocumentOrder/BusinessDocumentOrderMapper.xml @@ -3,7 +3,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - + @@ -673,4 +673,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - \ No newline at end of file + + +