Merge branch 'dev_20260429' into dev_WMS20260401

# Conflicts:
#	mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/OmsServiceFeign.java
#	mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/UserServiceFeign.java
#	mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteOmsFeignFallbackFactory.java
#	mhd-api/mhd-api-system/src/main/java/com/mhd/system/api/factory/RemoteUserFeignFallbackFactory.java
#	mhd-modules/mhd-system/src/main/java/com/mhd/basic/application/service/batchDetail/BatchDetailApplicationService.java
#	mhd-modules/mhd-system/src/main/java/com/mhd/basic/domain/batchDetail/service/BatchDetailDomainService.java
#	mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/sysTableConfig/SysTableConfigApi.java
This commit is contained in:
王奎兴
2026-05-15 13:55:42 +08:00
162 changed files with 7447 additions and 285 deletions
@@ -96,10 +96,16 @@ public class BusinessDocumentCargoMulti extends BaseVOEntity{
@ApiModelProperty("")
private String materialCode;
@ApiModelProperty("物料id")
private Long materialBaseInfoId;
@ApiModelProperty("$column.columnComment")
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private String orderId;
@ApiModelProperty("货物内容")
private String materialContent;
@ApiModelProperty("商品类型/货物类型(0料件,1半成品,2成品)")
private Integer productType;
}
@@ -62,6 +62,10 @@ public class BusinessDocumentCargoMultiPO extends BaseVOEntity{
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
private BigDecimal cargoWeight;
@ApiModelProperty("商品类型/货物类型(0料件,1半成品,2成品)")
private Integer productType;
@ApiModelProperty("物料id")
private Long materialBaseInfoId;
}
@@ -67,4 +67,10 @@ public class BusinessDocumentCargoMultiDO extends BaseVOEntity{
@ApiModelProperty(name = "权限菜单ID")
private Long permissionMenuId;
@ApiModelProperty("商品类型/货物类型(0料件,1半成品,2成品)")
private Integer productType;
@ApiModelProperty("物料id")
private Long materialBaseInfoId;
}
@@ -756,4 +756,21 @@ public class BusinessDocumentOrder extends BaseVOEntity{
@ApiModelProperty("仓库负责人电话")
private String directorPhone;
@ApiModelProperty("进出口方式:I-进口,E-出口")
private String ieType;
@ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private String pushBy;
@ApiModelProperty("推送人姓名")
private String pushByName;
}
@@ -52,4 +52,6 @@ public interface IBusinessDocumentOrderService extends IService<BusinessDocument
String selectByMakerCodeNc(String salesmanCodeNc);
String selectByMakerCodeNc1(String salesmanCodeNc);
List<BusinessDocumentOrderPO> queryListAndMaterial(BusinessDocumentOrderDO businessDocumentOrderDO);
}
@@ -23,4 +23,5 @@ public interface BusinessDocumentOrderMapper extends BaseMapper<BusinessDocument
String selectByMakerCodeNc1(@Param("salesmanCodeNc") String salesmanCodeNc);
List<BusinessDocumentOrderPO> queryListAndMaterial(BusinessDocumentOrderDO businessDocumentOrderDO);
}
@@ -449,4 +449,10 @@ public class BusinessDocumentOrderImpl extends ServiceImpl<BusinessDocumentOrder
}
return makerCodeNc;
}
@Override
public List<BusinessDocumentOrderPO> queryListAndMaterial(BusinessDocumentOrderDO businessDocumentOrderDO)
{
return businessDocumentOrderMapper.queryListAndMaterial(businessDocumentOrderDO);
}
}
@@ -765,9 +765,39 @@ public class BusinessDocumentOrderPO extends BaseVOEntity{
@ApiModelProperty("出入库单号")
private String inOrderNumber;
@ApiModelProperty("仓库负责人")
private String directorName;
@ApiModelProperty("仓库负责人电话")
private String directorPhone;
@ApiModelProperty("进出口方式:I-进口,E-出口")
private String ieType;
@ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private String pushBy;
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("执行单")
private List<ExecuteOrder> executeOrderList;
@ApiModelProperty("货物信息")
private List<BusinessDocumentCargoMulti> businessDocumentCargoMultiList;
@ApiModelProperty("物料编码")
private String materialCode;
@ApiModelProperty("商品类型")
private Integer productType;
}
@@ -775,7 +775,7 @@ public class BusinessDocumentOrderDO extends BaseVOEntity{
@ApiModelProperty(value = "审核意见")
private String reviewOpinion;
@ApiModelProperty("订单来源")
@ApiModelProperty("订单来源 0.运输,1.仓储")
private String orderSource;
@ApiModelProperty(value = "出入库单号")
@@ -790,6 +790,23 @@ public class BusinessDocumentOrderDO extends BaseVOEntity{
@ApiModelProperty("仓库负责人电话")
private String directorPhone;
@ApiModelProperty("进出口方式:I-进口,E-出口")
private String ieType;
@ApiModelProperty("推送状态:1-未推送 2-推送中 3-推送成功 4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private String pushBy;
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("费用科目明细")
private List<BusinessOrderAccount> businessOrderAccountList;
@@ -806,4 +823,24 @@ public class BusinessDocumentOrderDO extends BaseVOEntity{
private List<BusinessDocumentAddressMultiDTO> loadingAddressList;
@ApiModelProperty(value = "卸货地址集合")
private List<BusinessDocumentAddressMultiDTO> unloadAddressList;
@ApiModelProperty(value = "单证日期起")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date documentDateStart;
@ApiModelProperty(value = "单证日期止")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date documentDateEnd;
@ApiModelProperty(value = "推送时间起")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date pushTimeStart;
@ApiModelProperty(value = "推送时间止")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date pushTimeEnd;
}
@@ -19,6 +19,8 @@ import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOr
import com.mhd.oms.domain.businessDocumentOrder.repository.todo.BusinessDocumentOrderDO;
import com.mhd.oms.domain.businessOrderAccount.BusinessOrderAccount;
import com.mhd.oms.domain.businessOrderAccount.repository.mapper.BusinessOrderAccountMapper;
import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder;
import com.mhd.oms.domain.reservationOrder.repository.mapper.ReservationOrderMapper;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO;
import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO;
@@ -64,6 +66,9 @@ public class BusinessDocumentOrderDomainService {
@Resource
private BusinessOrderAccountMapper businessOrderAccountMapper;
@Resource
private ReservationOrderMapper reservationOrderMapper;
/**
* 分页查询【请填写功能名称】列表
*/
@@ -564,7 +569,19 @@ public class BusinessDocumentOrderDomainService {
tmsOrder.setTopOrganizationId(businessDocumentOrderDO.getTopOrganizationId());
}
// boolean istrue=businessDocumentOrderService.update(businessDocumentOrderDO);
int i = businessDocumentOrderMapper.updateById(tmsOrder);
if (deliveryFreight != null && deliveryFreight.compareTo(BigDecimal.ZERO) > 0){
List<ReservationOrder> reservationOrderList = reservationOrderMapper.selectList(new LambdaQueryWrapper<ReservationOrder>().eq(ReservationOrder::getGoodsNumber, businessDocumentOrderDO.getGoodsNumber()));
if (ObjectUtil.isNotEmpty(reservationOrderList) && reservationOrderList.size() > 0) {
for (ReservationOrder reservationOrder : reservationOrderList){
reservationOrder.setDeliveryFreight(deliveryFreight);
reservationOrderMapper.updateById(reservationOrder);
}
}
}
//保存货物信息及地址信息
saveAddress2CargoInfo(tmsOrder.getId(), allCargoList, loadingAddressList, unloadAddressList);
@@ -623,6 +640,7 @@ public class BusinessDocumentOrderDomainService {
tmsCargoInfo.setCargoWeight(tmsCargoInfoDTO.getWeight()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getWeight());
tmsCargoInfo.setCargoNum(tmsCargoInfoDTO.getCargoNum()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getCargoNum());
tmsCargoInfo.setMaterialVolume(tmsCargoInfoDTO.getMaterialVolume()==null ? BigDecimal.ZERO: tmsCargoInfoDTO.getMaterialVolume());
tmsCargoInfo.setMaterialBaseInfoId(tmsCargoInfoDTO.getMaterialBaseInfoId());
businessDocumentCargoMultiMapper.insert(tmsCargoInfo);
}
@@ -787,4 +805,11 @@ public class BusinessDocumentOrderDomainService {
}
return null;
}
public List<BusinessDocumentOrderPO> queryListAndMaterial(BusinessDocumentOrderDO businessDocumentOrderDO) {
return businessDocumentOrderService.queryListAndMaterial(businessDocumentOrderDO);
}
}
@@ -0,0 +1,73 @@
package com.mhd.oms.domain.erpCountry.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("erp_country")
@ApiModel(description = "企业国别实体")
public class ErpCountry implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(type = IdType.AUTO)
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("ERP国别编码")
private String erpCountryCode;
@ApiModelProperty("ERP国别名称")
private String erpCountryName;
@ApiModelProperty("推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private Long pushBy;
@ApiModelProperty("推送人姓名")
private String pushByName;
@ApiModelProperty("所属组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("所属组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新人")
private Long updateBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -0,0 +1,24 @@
package com.mhd.oms.domain.erpCountry.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.oms.domain.erpCountry.entity.ErpCountry;
import com.mhd.oms.domain.erpCountry.repository.po.ErpCountryPO;
import com.mhd.oms.interfaces.dto.erpCountry.ErpCountryDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ErpCountryMapper extends BaseMapper<ErpCountry> {
/**
*
* @param erpCountryDTO
* @return
*/
List<ErpCountryPO> queryList(@Param("erpCountryDTO") ErpCountryDTO erpCountryDTO);
int deleteByIds(@Param("idList") List<Long> idList);
}
@@ -0,0 +1,67 @@
package com.mhd.oms.domain.erpCountry.repository.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class ErpCountryPO {
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("ERP国别编码")
private String erpCountryCode;
@ApiModelProperty("ERP国别名称")
private String erpCountryName;
@ApiModelProperty("推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("推送时间")
private Date pushTime;
@ApiModelProperty("推送人")
private Long pushBy;
@ApiModelProperty("推送人")
private String pushByName;
@ApiModelProperty("所属组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("所属组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("更新人")
private Long updateBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty("更新时间")
private Date updateTime;
@ApiModelProperty("删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -0,0 +1,72 @@
package com.mhd.oms.domain.erpEnterpriseUnit.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ApiModel(description = "企业单位")
public class ErpEnterpriseUnit {
@ApiModelProperty(value = "主键ID")
@TableId(type = IdType.AUTO)
private Long id;
@ApiModelProperty(value = "ERP单位编码")
private String erpCode;
@ApiModelProperty(value = "ERP单位名称")
private String erpName;
@ApiModelProperty(value = "推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "推送时间")
private Date pushTime;
@ApiModelProperty(value = "推送人")
private String pushBy;
@ApiModelProperty(value = "推送人姓名")
private String pushByName;
@ApiModelProperty(value = "所属组织ID")
private Long organizationId;
@ApiModelProperty(value = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty(value = "所属组织名称")
private String organizationName;
@ApiModelProperty(value = "创建人")
private Long createBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新人")
private Long updateBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -0,0 +1,30 @@
package com.mhd.oms.domain.erpEnterpriseUnit.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.oms.domain.erpEnterpriseUnit.entity.ErpEnterpriseUnit;
import com.mhd.oms.domain.erpEnterpriseUnit.repository.po.ErpEnterpriseUnitPO;
import com.mhd.oms.domain.erpEnterpriseUnit.repository.todo.ErpEnterpriseUnitDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface ErpEnterpriseUnitMapper extends BaseMapper<ErpEnterpriseUnit> {
/**
*
* @param erpEnterpriseUnitDO
* @return
*/
List<ErpEnterpriseUnitPO> queryList(@Param("erpEnterpriseUnitDO")ErpEnterpriseUnitDO erpEnterpriseUnitDO);
/**
*
* @param idList
* @return
*/
int deleteByIds(@Param("idList") List<Long> idList);
}
@@ -0,0 +1,71 @@
package com.mhd.oms.domain.erpEnterpriseUnit.repository.po;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
@ApiModel(description = "企业单位PO")
public class ErpEnterpriseUnitPO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
private Long id;
@ApiModelProperty(value = "ERP单位编码")
private String erpCode;
@ApiModelProperty(value = "ERP单位名称")
private String erpName;
@ApiModelProperty(value = "推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "推送时间")
private Date pushTime;
@ApiModelProperty(value = "推送人")
private Long pushBy;
@ApiModelProperty(value = "推送人")
private String pushByName;
@ApiModelProperty(value = "所属组织ID")
private Long organizationId;
@ApiModelProperty(value = "一级组织ID")
private Long topOrganizationId;
@ApiModelProperty(value = "所属组织名称")
private String organizationName;
@ApiModelProperty(value = "创建人")
private Long createBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "创建时间")
private Date createTime;
@ApiModelProperty(value = "更新人")
private Long updateBy;
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@ApiModelProperty(value = "更新时间")
private Date updateTime;
@ApiModelProperty(value = "删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -0,0 +1,57 @@
package com.mhd.oms.domain.erpEnterpriseUnit.repository.todo;
import com.mhd.common.core.web.domain.BaseVOEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
public class ErpEnterpriseUnitDO extends BaseVOEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "主键ID")
private Long id;
@ApiModelProperty(value = "ERP单位编码")
private String erpCode;
@ApiModelProperty(value = "ERP单位名称")
private String erpName;
@ApiModelProperty(value = "推送状态:1-未推送,2-推送中,3-推送成功,4-推送失败")
private Integer pushStatus;
@ApiModelProperty(value = "推送时间")
private String pushTime;
@ApiModelProperty(value = "推送时间起")
private String pushTimeFrom;
@ApiModelProperty(value = "推送时间止")
private String pushTimeTo;
@ApiModelProperty(value = "推送人")
private String pushBy;
@ApiModelProperty(value = "所属组织ID")
private Long organizationId;
@ApiModelProperty(value = "所属组织名称")
private String organizationName;
@ApiModelProperty(value = "创建时间起")
private String createTimeFrom;
@ApiModelProperty(value = "创建时间止")
private String createTimeTo;
@ApiModelProperty(value = "页码")
private Integer pageNum = 1;
@ApiModelProperty(value = "每页数量")
private Integer pageSize = 10;
@ApiModelProperty(value = "每页数量")
private Long TopOrganizationId;
}
@@ -0,0 +1,64 @@
package com.mhd.oms.domain.gwLog.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModelProperty;
import io.swagger.annotations.ApiOperation;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.io.Serializable;
import java.util.Date;
@Data
@TableName("gw_log")
public class GwLog implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty("日志id")
@TableId(type = IdType.AUTO)
private Long logId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("业务ID")
private Long businessId;
@ApiModelProperty("请求报文")
private String requestBody;
@ApiModelProperty("响应报文")
private String responseBody;
@ApiModelProperty("状态(1-初始,2-成功,3-失败)")
private Integer status;
@ApiModelProperty("错误信息")
private String errorMsg;
@ApiModelProperty("推送时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sendTime;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@ApiModelProperty("创建时间")
private Date createTime;
@ApiModelProperty("删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -0,0 +1,26 @@
package com.mhd.oms.domain.gwLog.repository.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.mhd.oms.domain.gwLog.entity.GwLog;
import com.mhd.oms.domain.gwLog.repository.po.GwLogPO;
import com.mhd.oms.interfaces.dto.gwLog.GwLogDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.springframework.web.bind.annotation.RequestBody;
import java.util.List;
@Mapper
public interface GwLogMapper extends BaseMapper<GwLog> {
/**
*
* @param gwLogDTO
* @return
*/
List<GwLogPO> queryList(GwLogDTO gwLogDTO);
@Select("select * from gw_log where business_id = #{businessId} and type = #{type} order by create_time desc")
List<GwLogPO> selectByTypeAndId(@RequestBody GwLog gwLog);
}
@@ -0,0 +1,66 @@
package com.mhd.oms.domain.gwLog.repository.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
@Data
public class GwLogPO {
@ApiModelProperty("日志id")
private Long logId;
@ApiModelProperty("类型")
private String type;
@ApiModelProperty("业务ID")
private String businessId;
@ApiModelProperty("请求报文")
private String requestBody;
@ApiModelProperty("响应报文")
private String responseBody;
@ApiModelProperty("状态(1-初始,2-成功,3-失败)")
private Integer status;
@ApiModelProperty("错误信息")
private String errorMsg;
@ApiModelProperty("推送时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sendTime;
@ApiModelProperty("组织ID")
private Long organizationId;
@ApiModelProperty("一级组织ID")
private Long topOrganizationId;
@ApiModelProperty("组织名称")
private String organizationName;
@ApiModelProperty("创建人")
private Long createBy;
@ApiModelProperty("创建人姓名")
private String pushByName;
@ApiModelProperty("创建时间")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
@ApiModelProperty("删除标记:1-正常,0-删除")
private Integer delFlag;
}
@@ -504,9 +504,6 @@ public class ReservationOrder {
@ApiModelProperty(value = "订单结算状态:1未出账、2已出账、3部分结算、4已结算")
private Integer settlementStatus;
@ApiModelProperty(value = "订单类型:0-预约单,1-业务单")
private Integer orderType;
@ApiModelProperty(value = "订单运费结算时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@@ -701,9 +698,16 @@ public class ReservationOrder {
@ApiModelProperty("业务单号")
private String businessOrderNumber;
@ApiModelProperty("订单状态(0.待确认,1.待提货,2.待补充,3.运输中,4.已完成,5.已取消)")
private Integer orderType;
@ApiModelProperty("起运时间")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date departureTime;
@ApiModelProperty("业务主管")
private String salesManager;
@ApiModelProperty("审核意见")
private String reviewOpinion;
}
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
import com.mhd.oms.domain.reservationOrder.entity.ReservationOrder;
import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderAddDTO;
import com.mhd.oms.interfaces.dto.resevationOrder.OmsOrderDTO;
import com.mhd.common.core.utils.sms.Result;
@@ -16,11 +17,18 @@ import java.security.spec.InvalidKeySpecException;
import com.mhd.oms.interfaces.facade.resevationOrder.BatchConfirmResult;
import java.util.List;
import java.util.Map;
public interface IOmsAddressMultiService {
void save(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException;
/**
* 更新预约单
* @param tmsOrderAddDTO 预约单信息
*/
void update(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException;
List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO);
/**
@@ -28,14 +36,24 @@ public interface IOmsAddressMultiService {
* @param goodsNumber 预约单号
* @return 业务单信息
*/
BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber);
Boolean confirmReservationOrder(String goodsNumber);
/**
* 批量确认预约单,生成业务单
* @param goodsNumbers 预约单号列表
* @return 批量处理结果
*/
Result<?> batchConfirmReservationOrder(List<String> goodsNumbers);
Result<?> batchConfirmReservationOrder(BusinessAuditDTO businessAuditDTO);
Result<?> batchRejectReservationOrder(List<String> goodsNumbers);
/**
* 根据订单状态(orderType)统计各状态的数量
* @return Map<Integer, Long> key为orderType值,value为对应数量
*/
Map<Integer, Long> countByOrderType();
Integer cancelReserve(List<String> goodsNumbers);
OmsOrderDTO getResevationOrderInfo(String goodsNumber);
}
@@ -723,7 +723,7 @@ public class ReservationOrderPO {
private String executor;
@ApiModelProperty("业务单id")
private Long businesssOrderId ;
private Long businessOrderId ;
@ApiModelProperty("业务单号")
private String businessOrderNumber;
@@ -735,4 +735,9 @@ public class ReservationOrderPO {
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private java.util.Date departureTime;
@ApiModelProperty("业务主管")
private String salesManager;
@ApiModelProperty("审核意见")
private String reviewOpinion;
}
@@ -12,6 +12,7 @@ import com.mhd.common.core.utils.sms.Result;
import com.mhd.oms.application.service.businessDocumentOrder.BusinessDocumentOrderApplicationService;
import com.mhd.oms.domain.businessDocumentOrder.repository.facade.IBusinessDocumentOrderService;
import com.mhd.oms.domain.businessDocumentOrder.entity.BusinessDocumentOrder;
import com.mhd.oms.domain.businessDocumentOrder.repository.mapper.BusinessDocumentOrderMapper;
import com.mhd.oms.domain.businessDocumentOrder.repository.po.BusinessDocumentOrderPO;
import com.mhd.oms.domain.businessDocumentCargoMulti.entity.BusinessDocumentCargoMulti;
import com.mhd.oms.domain.businessDocumentCargoMulti.repository.mapper.BusinessDocumentCargoMultiMapper;
@@ -30,6 +31,9 @@ import com.mhd.oms.domain.reservationOrder.repository.po.ReservationOrderPO;
import com.mhd.oms.enums.*;
import com.mhd.oms.infrastructure.feign.ThirdPartyServiceFeign;
//import com.mhd.oms.infrastructure.feign.TransportServiceFeign;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessAuditDTO;
import com.mhd.oms.interfaces.dto.businessDocumentAddressMulti.BusinessDocumentAddressMultiDTO;
import com.mhd.oms.interfaces.dto.businessDocumentCargoMulti.BusinessDocumentCargoMultiDTO;
import com.mhd.oms.interfaces.dto.resevationOrder.*;
import com.mhd.oms.interfaces.facade.resevationOrder.BatchConfirmResult;
import com.mhd.oms.util.DictDataUtils;
@@ -41,12 +45,16 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.mhd.common.core.web.domain.AjaxResult;
import com.mhd.common.core.domain.po.UserPo;
import com.mhd.common.core.domain.po.UserShipperPo;
import io.swagger.annotations.ApiModelProperty;
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.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Resource;
import java.math.BigDecimal;
@@ -114,6 +122,9 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
@Autowired
private IBusinessDocumentOrderService businessDocumentOrderService;
@Resource
private BusinessDocumentOrderMapper businessDocumentOrderMapper;
@Transactional(rollbackFor = Exception.class)
@@ -424,10 +435,10 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
resevationOrder.setLoadingPhone(firstAddress.getContactPhone());
resevationOrder.setLoadingDate(firstAddress.getLayDate());
resevationOrder.setUnloadAreaId(lastAddress.getAreaCode());
resevationOrder.setUnloadName(lastAddress.getAreaCode());
resevationOrder.setUnloadAddress(lastAddress.getAddress());
String unarea = lastAddress.getAreaCode() + lastAddress.getAddress();
resevationOrder.setUnloadAreaId(lastAddress.getAreaCode());
resevationOrder.setUnloadName(lastAddress.getAreaCode());
resevationOrder.setUnloadAddress(lastAddress.getAddress());
String unarea = lastAddress.getAreaCode() + lastAddress.getAddress();
/*String ungeo = amapService.geo(unarea);
String unloadingLatitude = ungeo.substring(ungeo.indexOf(",") + 1);
String unloadingLongitude = ungeo.substring(0,ungeo.indexOf(","));
@@ -524,11 +535,11 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
resevationOrder.setTransportationModeId(1);
}
}
//设置是否自动审核
//自动审核用户信息(0否1是)
//设置是否自动审核
//自动审核用户信息(0否1是)
// SysConfigSwitch configSwitch = sysConfigSwitchService.queryBySysOrgCode();
//查询平台业务员
// 从UserCenter服务获取平台业务员信息
//查询平台业务员
// 从UserCenter服务获取平台业务员信息
// UserDTO userDTO = new UserDTO();
// userDTO.setUserRole("platAuther");
// AjaxResult platAutherResult = AjaxResult.success(userServiceFeign.getUserByTopOrganizationUserAccount(userDTO, "oms"));
@@ -867,12 +878,272 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
// tmsBidingDocumentLine.setServiceRate(tmsOrderAddDTO.getServiceRate());
// tmsBidingDocumentLine.setSingleVehicleWeight(tmsOrderAddDTO.getSingleVehicleWeight());
// tmsBidingDocumentLineMapper.insert(tmsBidingDocumentLine);
// tmsBidingDocumentLineMapper.insert(tmsBidingDocumentLine);
// }
}
@Transactional(rollbackFor = Exception.class)
@Override
public void update(OmsOrderAddDTO tmsOrderAddDTO) throws InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
if (StringUtils.isBlank(tmsOrderAddDTO.getGoodsQuantity())) {
tmsOrderAddDTO.setGoodsQuantity("0");
}
LoginUser loginUser = SecurityUtils.getLoginUser();
//获取登录人
// 从UserCenter服务获取用户信息
AjaxResult userInfoResult = userServiceFeign.getInfo(Long.valueOf(loginUser.getUserid()));
if (!userInfoResult.get("code").toString().equals("200")) {
throw new ServiceException("获取用户信息失败");
}
ObjectMapper objectMapper = new ObjectMapper();
UserPo userPo = objectMapper.convertValue(userInfoResult.get("data"), UserPo.class);
// 从UserCenter服务获取货主信息
AjaxResult shipperInfoResult = userServiceFeign.getShipperByUserId(Long.valueOf(loginUser.getUserid()));
if (!shipperInfoResult.get("code").toString().equals("200")) {
throw new ServiceException("获取货主信息失败");
}
//处理费用默认值
handFee(tmsOrderAddDTO);
//组织赋值
Long organizationId = tmsOrderAddDTO.getOrganizationId();
if (ObjectUtil.isNotEmpty(organizationId)) {
tmsOrderAddDTO.setOrgId(String.valueOf(organizationId));
tmsOrderAddDTO.setOrgName(tmsOrderAddDTO.getOrganizationName());
}
// 获取一份副本等一会需要存储到数据库
String swzlUserId = String.valueOf(loginUser.getUserid());
// 从UserCenter服务获取当前登录用户的货主信息
AjaxResult shipperResult = userServiceFeign.getShipperByUserId(Long.valueOf(loginUser.getUserid()));
if (!shipperResult.get("code").toString().equals("200")) {
throw new ServiceException("您非货主角色或账号已被删除!");
}
UserShipperPo userShipperPoInfo = objectMapper.convertValue(shipperResult.get("data"), UserShipperPo.class);
if (userShipperPoInfo == null) {
throw new ServiceException("您非货主角色或账号已被删除!");
}
String orderRemark = tmsOrderAddDTO.getOrderRemark();
tmsOrderAddDTO.setRemarks(orderRemark);
tmsOrderAddDTO.setAppointShipperId(String.valueOf(userShipperPoInfo.getShipperId()));
// 分类处理货物列表
List<OmsCargoInfoDTO> allCargoList = tmsOrderAddDTO.getCargoInfoList();
//获取货主月结标识,
int receivableType;
int autoAuditOrder;
if (userShipperPoInfo.getShipperType() == 2) {
// 从UserCenter服务获取企业货主信息
AjaxResult companyShipperResult = userServiceFeign.getShipperByUserId(userShipperPoInfo.getUserId());
if (!companyShipperResult.get("code").toString().equals("200")) {
throw new ServiceException("获取企业货主信息失败");
}
UserShipperPo companyUserShipperPo = objectMapper.convertValue(companyShipperResult.get("data"), UserShipperPo.class);
receivableType = companyUserShipperPo.getMonthlySettlementFlag();
autoAuditOrder = companyUserShipperPo.getIsAutoAuditOrder();
} else {
receivableType = userShipperPoInfo.getMonthlySettlementFlag();
autoAuditOrder = userShipperPoInfo.getIsAutoAuditOrder();
}
tmsOrderAddDTO.setReceivableType(receivableType);
//非企业员工判断个人信息审核状态x
if (userShipperPoInfo.getShipperType() != 2 && userShipperPoInfo.getShipperFill() != 3) { // 假设3代表审核通过
throw new ServiceException("未提交个人信息认证或认证未通过,请先认证!");
}
//企业员工判断企业货主审核状态
if (userShipperPoInfo.getShipperType() == 2) {
// 从UserCenter服务获取企业用户信息
AjaxResult companyUserResult = userServiceFeign.getInfo(userShipperPoInfo.getUserId());
if (!companyUserResult.get("code").toString().equals("200")) {
throw new ServiceException("获取企业用户信息失败");
}
userPo = objectMapper.convertValue(companyUserResult.get("data"), UserPo.class);
}
//企业员工判断企业货主审核状态
if (userShipperPoInfo.getShipperType() == 2) {
// 从UserCenter服务获取企业货主信息
AjaxResult companyShipperResult = userServiceFeign.getShipperByUserId(userShipperPoInfo.getUserId());
if (!companyShipperResult.get("code").toString().equals("200")) {
throw new ServiceException("获取企业货主信息失败");
}
UserShipperPo companyUserShipperPo = objectMapper.convertValue(companyShipperResult.get("data"), UserShipperPo.class);
if (companyUserShipperPo.getShipperFill() != 3) { // 假设3代表审核通过
throw new ServiceException("未提交个人信息认证或认证未通过,请先认证!");
}
}
/**
* 更新货源单信息
*/
ReservationOrder resevationOrder = new ReservationOrder();
BeanUtils.copyProperties(tmsOrderAddDTO, resevationOrder);
String id = tmsOrderAddDTO.getId();
resevationOrder.setId(Long.valueOf(id));
// 设置更新时间戳和用户信息
resevationOrder.setUpdateTime(new Date());
resevationOrder.setUpdateBy(loginUser.getWlhyLoginUser().getRealname());
// resevationOrder.setUpdateByName(userPo.getUserName());
// 检查ID是否为空
if (resevationOrder.getId() == null || resevationOrder.getId() <= 0) {
throw new ServiceException("预约单ID不能为空,无法执行更新操作");
}
List<OmsAddressMultiDTO> loadingAddressList = tmsOrderAddDTO.getLoadingAddressList();//装货地信息集合
List<OmsAddressMultiDTO> unloadAddressList = tmsOrderAddDTO.getUnloadAddressList();//卸货地信息集合
/*if (CollUtil.isEmpty(loadingAddressList)) {
throw new ServiceException("请传入装货地址!");
}
if (CollUtil.isEmpty(unloadAddressList)) {
throw new ServiceException("请传入卸货地址!");
}*/
String loadCityCounty = "", unloadCityCounty = "";
//当是短驳的时候不走这个逻辑
/*for (int i = 0; i < loadingAddressList.size(); i++) {
//根据行政区划代码获取省市县名称
String areaName= sysComboService.getLoadOrUnloadName(loadingAddressList.get(i).getAreaCode());
loadingAddressList.get(i).setAreaName(areaName);
// 简称
String shortName= sysComboService.getCityCountyName(loadingAddressList.get(i).getAreaCode());
loadingAddressList.get(i).setShortName(shortName);
//获取装卸货地经纬度
String[] lng2Lat = setLngAndLat(loadingAddressList.get(i).getAreaCode(), loadingAddressList.get(i).getLongitude(),
loadingAddressList.get(i).getLatitude(), loadingAddressList.get(i).getAddress());
if (null != lng2Lat) {
loadingAddressList.get(i).setLongitude(lng2Lat[0]);
loadingAddressList.get(i).setLatitude(lng2Lat[1]);
}
//获取装货时间
SysDictData sysDictData = getLayTime(loadingAddressList.get(i).getLayTimeId());
if (sysDictData != null) {
loadingAddressList.get(i).setLayTimeId(sysDictData.getDictValue());
loadingAddressList.get(i).setLayTime(sysDictData.getDictLabel());
}
loadingAddressList.get(i).setSort(i);
}
for (int i = 0; i < unloadAddressList.size(); i++) {
//根据行政区划代码获取省市县名称
//String areaName= sysComboService.getLoadOrUnloadName(unloadAddressList.get(i).getAreaCode());
//unloadAddressList.get(i).setAreaName(areaName);
// 简称
//String shortName= sysComboService.getCityCountyName(unloadAddressList.get(i).getAreaCode());
//unloadAddressList.get(i).setShortName(shortName);
//获取装卸货地经纬度
String[] lng2Lat = setLngAndLat(unloadAddressList.get(i).getAreaCode(), unloadAddressList.get(i).getLongitude(),
unloadAddressList.get(i).getLatitude(), unloadAddressList.get(i).getAddress());
if (null != lng2Lat) {
unloadAddressList.get(i).setLongitude(lng2Lat[0]);
unloadAddressList.get(i).setLatitude(lng2Lat[1]);
}
//获取装货时间
SysDictData sysDictData = getLayTime(unloadAddressList.get(i).getLayTimeId());
if (sysDictData != null) {
unloadAddressList.get(i).setLayTimeId(sysDictData.getDictValue());
unloadAddressList.get(i).setLayTime(sysDictData.getDictLabel());
}
unloadAddressList.get(i).setSort(i);
// }
//多装多卸获取第一个装货地址和最后一个卸货地址 获取省市县简称
loadCityCounty = sysComboService.getCityCountyName(loadingAddressList.get(0).getAreaCode());
unloadCityCounty = sysComboService.getCityCountyName(unloadAddressList.get(unloadAddressList.size() - 1).getAreaCode());
resevationOrder.setLineTitleLeft(loadCityCounty);
resevationOrder.setLineTitleRight(unloadCityCounty);
}*/
//获取第一条装货地址和获取最后一条卸货地址
OmsAddressMultiDTO firstAddress = loadingAddressList.get(0);
OmsAddressMultiDTO lastAddress = unloadAddressList.get(unloadAddressList.size() - 1);
resevationOrder.setLoadingAreaId(firstAddress.getAreaCode());
resevationOrder.setLoadingName(firstAddress.getAreaCode());
resevationOrder.setLoadingAddress(firstAddress.getAddress());
String area = firstAddress.getAreaCode() + firstAddress.getAddress();
/*String geo = amapService.geo(area);
String loadingLatitude = geo.substring(geo.indexOf(",") + 1);
String loadingLongitude = geo.substring(0,geo.indexOf(","));
resevationOrder.setLoadingLongitude(loadingLongitude);
resevationOrder.setLoadingLatitude(loadingLatitude);
firstAddress.setLatitude(loadingLatitude);
firstAddress.setLongitude(loadingLongitude);*/
resevationOrder.setLineTitleLeft(firstAddress.getAreaCode());
resevationOrder.setLineTitleRight(lastAddress.getAreaCode());
resevationOrder.setFreighterName(firstAddress.getContactName());
resevationOrder.setLoadingPhone(firstAddress.getContactPhone());
resevationOrder.setLoadingDate(firstAddress.getLayDate());
resevationOrder.setUnloadAreaId(lastAddress.getAreaCode());
resevationOrder.setUnloadName(lastAddress.getAreaCode());
resevationOrder.setUnloadAddress(lastAddress.getAddress());
String unarea = lastAddress.getAreaCode() + lastAddress.getAddress();
/*String ungeo = amapService.geo(unarea);
String unloadingLatitude = ungeo.substring(ungeo.indexOf(",") + 1);
String unloadingLongitude = ungeo.substring(0,ungeo.indexOf(","));
lastAddress.setLatitude(unloadingLatitude);
lastAddress.setLongitude(unloadingLongitude);
resevationOrder.setUnloadLongitude(unloadingLongitude);
resevationOrder.setUnloadLatitude(unloadingLatitude);*/
resevationOrder.setDischargerName(lastAddress.getContactName());
resevationOrder.setUnloadPhone(lastAddress.getContactPhone());
resevationOrder.setUnloadingData(lastAddress.getLayDate());
// 执行更新操作
int result = resevationOrderMapper.updateById(resevationOrder);
if (result == 0) {
throw new ServiceException("更新失败:未找到对应的预约单记录");
}
// 更新费用科目信息
List<OmsOrderAccount> tmsOrderAccountList = tmsOrderAddDTO.getTmsOrderAccountList();
if (ObjectUtil.isNotNull(tmsOrderAccountList) && tmsOrderAccountList.size() > 0) {
// 先删除旧的费用科目信息
tmsOrderAccountMapper.delete(new LambdaQueryWrapper<OmsOrderAccount>().eq(OmsOrderAccount::getOrderId, String.valueOf(resevationOrder.getId())));
// 插入新的费用科目信息
for (OmsOrderAccount tmsOrderAccount : tmsOrderAccountList) {
tmsOrderAccount.setIsDelete(0);
tmsOrderAccount.setOrderId(String.valueOf(resevationOrder.getId()));
tmsOrderAccount.setCreateBy(String.valueOf(userPo.getUserId()));
tmsOrderAccount.setCreateTime(new Date());
// 设置组织信息
if (tmsOrderAddDTO.getOrganizationId() != null) {
tmsOrderAccount.setOrganizationId(tmsOrderAddDTO.getOrganizationId());
}
if (tmsOrderAddDTO.getOrganizationName() != null) {
tmsOrderAccount.setOrganizationName(tmsOrderAddDTO.getOrganizationName());
}
if (tmsOrderAddDTO.getTopOrganizationId() != null) {
tmsOrderAccount.setTopOrganizationId(tmsOrderAddDTO.getTopOrganizationId());
}
tmsOrderAccountMapper.insert(tmsOrderAccount);
}
}
// 更新货物信息及地址信息
saveAddress2CargoInfo(String.valueOf(resevationOrder.getId()), allCargoList, tmsOrderAddDTO.getLoadingAddressList(), tmsOrderAddDTO.getUnloadAddressList());
}
@Override
public List<ReservationOrderPO> queryList(OmsOrderDTO omsOrderDTO) {
LoginUser loginUser = SecurityUtils.getLoginUser();
@@ -882,6 +1153,10 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
omsOrderDTO.setTopOrganizationId(loginUser.getUserPo().getTopOrganizationId());
}
}
Long organizationId = loginUser.getUserPo().getOrganizationId();
if (organizationId !=2827L){
omsOrderDTO.setOrganizationId(loginUser.getUserPo().getOrganizationId());
}
List<ReservationOrderPO> reservationOrderPOS = reservationOrderDomainService.queryList(omsOrderDTO);
for (ReservationOrderPO reservationOrderPO : reservationOrderPOS){
List<ReservationCargoInfo> reservationCargoInfoList = reservationCargoInfoMapper.selectList(new LambdaQueryWrapper<ReservationCargoInfo>().eq(ReservationCargoInfo::getOrderId, reservationOrderPO.getId()));
@@ -1078,7 +1353,7 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
// }
@Override
public BusinessDocumentOrderPO confirmReservationOrder(String goodsNumber) {
public Boolean confirmReservationOrder(String goodsNumber) {
LambdaQueryWrapper<ReservationOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReservationOrder::getGoodsNumber, goodsNumber);
@@ -1102,71 +1377,27 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
BusinessDocumentOrderDO businessDocumentOrderDO = new BusinessDocumentOrderDO();
// 基本信息映射
businessDocumentOrderDO.setGoodsNumber(OrderSequence.getOrderCodeByDate(new Date())); // 生成业务单号
businessDocumentOrderDO.setGoodsNumber(reservationOrder.getGoodsNumber()); // 生成业务单号
businessDocumentOrderDO.setOrderStatus(0L); // 业务单状态:0-待审核
businessDocumentOrderDO.setReviewStatus(0L); // 审核状态:0-未审核
businessDocumentOrderDO.setExecuteStatus(0L); // 执行状态:0-无状态
businessDocumentOrderDO.setExecuteStatus(0L);
businessDocumentOrderDO.setReservationOrderId(reservationOrder.getId());
businessDocumentOrderDO.setReservationOrderNumber(reservationOrder.getGoodsNumber());
BeanUtils.copyProperties(reservationOrder, businessDocumentOrderDO);
businessDocumentOrderDO.setGoodsName(reservationOrder.getGoodsName());
businessDocumentOrderDO.setGoodsTypeId(reservationOrder.getGoodsTypeId());
businessDocumentOrderDO.setWeightMin(reservationOrder.getWeightMin());
businessDocumentOrderDO.setWeightMax(reservationOrder.getWeightMax());
businessDocumentOrderDO.setGoodsUntis(reservationOrder.getGoodsUntis());
businessDocumentOrderDO.setGoodsUntisId(reservationOrder.getGoodsUntisId());
businessDocumentOrderDO.setLoadingName(reservationOrder.getLoadingName());
businessDocumentOrderDO.setLoadingAreaId(reservationOrder.getLoadingAreaId());
businessDocumentOrderDO.setLoadingAddress(reservationOrder.getLoadingAddress());
businessDocumentOrderDO.setLoadingLongitude(reservationOrder.getLoadingLongitude());
businessDocumentOrderDO.setLoadingLatitude(reservationOrder.getLoadingLatitude());
businessDocumentOrderDO.setLoadingPhone(reservationOrder.getLoadingPhone());
businessDocumentOrderDO.setLoadingDate(reservationOrder.getLoadingDate());
businessDocumentOrderDO.setUnloadName(reservationOrder.getUnloadName());
businessDocumentOrderDO.setUnloadAreaId(reservationOrder.getUnloadAreaId());
businessDocumentOrderDO.setUnloadAddress(reservationOrder.getUnloadAddress());
businessDocumentOrderDO.setUnloadLongitude(reservationOrder.getUnloadLongitude());
businessDocumentOrderDO.setUnloadLatitude(reservationOrder.getUnloadLatitude());
businessDocumentOrderDO.setUnloadPhone(reservationOrder.getUnloadPhone());
businessDocumentOrderDO.setUnloadingData(reservationOrder.getUnloadingData());
businessDocumentOrderDO.setFreighterName(reservationOrder.getFreighterName());
businessDocumentOrderDO.setDischargerName(reservationOrder.getDischargerName());
businessDocumentOrderDO.setRemarks(reservationOrder.getRemarks());
businessDocumentOrderDO.setTransportationModeId(reservationOrder.getTransportationModeId() != null ?
reservationOrder.getTransportationModeId().longValue() : null);
businessDocumentOrderDO.setTransportationName(reservationOrder.getTransportationName());
businessDocumentOrderDO.setCarType(reservationOrder.getCarType());
businessDocumentOrderDO.setCarTypeName(reservationOrder.getCarTypeName());
businessDocumentOrderDO.setServiceRequireId(reservationOrder.getServiceRequireId());
businessDocumentOrderDO.setServiceRequire(reservationOrder.getServiceRequire());
businessDocumentOrderDO.setAppointShipperId(reservationOrder.getAppointShipperId());
businessDocumentOrderDO.setAppointShipper(reservationOrder.getAppointShipper());
businessDocumentOrderDO.setReceivableType(reservationOrder.getReceivableType() != null ?
reservationOrder.getReceivableType().longValue() : 2L);
businessDocumentOrderDO.setOrderShippingType(reservationOrder.getOrderShippingType() != null ?
reservationOrder.getOrderShippingType().longValue() : 1L);
businessDocumentOrderDO.setOrganizationId(reservationOrder.getOrganizationId());
businessDocumentOrderDO.setOrganizationName(reservationOrder.getOrganizationName());
businessDocumentOrderDO.setTopOrganizationId(reservationOrder.getTopOrganizationId());
businessDocumentOrderDO.setOrgId(reservationOrder.getOrgId());
businessDocumentOrderDO.setOrgName(reservationOrder.getOrgName());
businessDocumentOrderDO.setRealCreateBy(String.valueOf(loginUser.getUserid()));
businessDocumentOrderDO.setRealCreateName(loginUser.getUsername());
businessDocumentOrderDO.setCreateBy(loginUser.getUserid());
businessDocumentOrderDO.setCreateByName(loginUser.getUsername());
businessDocumentOrderDO.setCreateTime(new Date());
businessDocumentOrderDO.setUpdateTime(new Date());
businessDocumentOrderDO.setDocumentDate(new Date());
businessDocumentOrderDO.setPayerType(1L);
businessDocumentOrderDO.setLayDate(reservationOrder.getDepartureTime());
if (businessDocumentOrderDO.getOrderShippingType() == null) {
businessDocumentOrderDO.setOrderShippingType(1L); // 默认设置为1
@@ -1175,53 +1406,103 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
businessDocumentOrderDO.setInfoFeePayeeType(0L); // 默认设置为0
}
BusinessDocumentOrder businessDocumentOrder = new BusinessDocumentOrder();
BeanUtils.copyProperties(businessDocumentOrderDO, businessDocumentOrder);
businessDocumentOrder.setId(null); // 确保是新记录
businessDocumentOrder.setCreateBy(Long.valueOf(loginUser.getUserid()));
businessDocumentOrder.setCreateByName(loginUser.getUsername());
businessDocumentOrder.setCreateTime(new Date());
businessDocumentOrder.setUpdateTime(new Date());
businessDocumentOrder.setDelFlag(1);
boolean insertResult = businessDocumentOrderService.save(businessDocumentOrder);
// 组装货物信息 - 从 RESERVATION_CARGO_INFO 表查询
List<BusinessDocumentCargoMultiDTO> businessDocumentCargoMultiList = new ArrayList<>();
LambdaQueryWrapper<ReservationCargoInfo> cargoQueryWrapper = new LambdaQueryWrapper<>();
cargoQueryWrapper.eq(ReservationCargoInfo::getOrderId, reservationOrder.getId());
List<ReservationCargoInfo> reservationCargoList = reservationCargoInfoMapper.selectList(cargoQueryWrapper);
if (reservationCargoList.size() > 0) {
for (ReservationCargoInfo reservationCargo : reservationCargoList) {
BusinessDocumentCargoMultiDTO cargoDTO = new BusinessDocumentCargoMultiDTO();
cargoDTO.setCargoName(reservationCargo.getCargoName());
cargoDTO.setCargoNum(reservationCargo.getCargoNum() != null ? reservationCargo.getCargoNum() : BigDecimal.ZERO);
cargoDTO.setCargoWeight(reservationCargo.getCargoWeight() != null ? reservationCargo.getCargoWeight() : BigDecimal.ZERO);
cargoDTO.setCargoUnitName(reservationCargo.getCargoUnitName());
cargoDTO.setWeightUnit(reservationCargo.getCargoUnitName());
cargoDTO.setGoodsTypeId(reservationCargo.getGoodsTypeId());
cargoDTO.setGoodsType(reservationCargo.getGoodsType());
cargoDTO.setGoodsNameId(reservationCargo.getGoodsNameId());
cargoDTO.setGoodsName(reservationCargo.getGoodsName());
cargoDTO.setMaterialContent(reservationCargo.getCargoContent());
cargoDTO.setMachineCode(reservationCargo.getMachineCode());
businessDocumentCargoMultiList.add(cargoDTO);
}
}
businessDocumentOrderDO.setBusinessDocumentCargoMultiList(businessDocumentCargoMultiList);
// 组装装卸货地址信息 - 从 RESERVATION_ADDRESS_MULTI 表查询
List<BusinessDocumentAddressMultiDTO> loadingAddressList = new ArrayList<>();
List<BusinessDocumentAddressMultiDTO> unloadAddressList = new ArrayList<>();
// 查询装货地址 (layType = 1)
LambdaQueryWrapper<ReservationAddressMulti> loadingQueryWrapper = new LambdaQueryWrapper<>();
loadingQueryWrapper.eq(ReservationAddressMulti::getOrderId, reservationOrder.getId())
.eq(ReservationAddressMulti::getLayType, 1);
List<ReservationAddressMulti> loadingAddressList1 = reservationAddressMultiMapper.selectList(loadingQueryWrapper);
// @ApiModelProperty(value = "装货地址集合")
// private List<BusinessDocumentAddressMultiDTO> loadingAddressList;
// @ApiModelProperty(value = "卸货地址集合")
// private List<BusinessDocumentAddressMultiDTO> unloadAddressList;
if (loadingAddressList1.size() > 0) {
for (ReservationAddressMulti address : loadingAddressList1) {
BusinessDocumentAddressMultiDTO loadingAddress = new BusinessDocumentAddressMultiDTO();
loadingAddress.setAreaCode(address.getAreaCode());
loadingAddress.setAreaName(address.getAreaName());
loadingAddress.setAddress(address.getAddress());
loadingAddress.setLongitude(address.getLongitude());
loadingAddress.setLatitude(address.getLatitude());
loadingAddress.setContactName(address.getContactName());
loadingAddress.setContactPhone(address.getContactPhone());
loadingAddress.setLayDate(address.getLayDate());
loadingAddress.setLayTimeId(address.getLayTimeId());
loadingAddress.setLayType(Long.valueOf(address.getLayType()));
// loadingAddress.setSort(Long.valueOf(address.getSort()));
// loadingAddress.setShortName(address.getShortName());
loadingAddressList.add(loadingAddress);
}
}
// 查询卸货地址 (layType = 2)
LambdaQueryWrapper<ReservationAddressMulti> unloadQueryWrapper = new LambdaQueryWrapper<>();
unloadQueryWrapper.eq(ReservationAddressMulti::getOrderId, reservationOrder.getId())
.eq(ReservationAddressMulti::getLayType, 2);
List<ReservationAddressMulti> unloadAddressList1 = reservationAddressMultiMapper.selectList(unloadQueryWrapper);
if (unloadAddressList1.size() > 0) {
for (ReservationAddressMulti address : unloadAddressList1) {
BusinessDocumentAddressMultiDTO unloadAddress = new BusinessDocumentAddressMultiDTO();
unloadAddress.setAreaCode(address.getAreaCode());
unloadAddress.setAreaName(address.getAreaName());
unloadAddress.setAddress(address.getAddress());
unloadAddress.setLongitude(address.getLongitude());
unloadAddress.setLatitude(address.getLatitude());
unloadAddress.setContactName(address.getContactName());
unloadAddress.setContactPhone(address.getContactPhone());
unloadAddress.setLayDate(address.getLayDate());
unloadAddress.setLayTimeId(address.getLayTimeId());
unloadAddress.setLayType(Long.valueOf(address.getLayType()));
unloadAddress.setShortName(address.getShortName());
unloadAddressList.add(unloadAddress);
}
}
businessDocumentOrderDO.setLoadingAddressList(loadingAddressList);
businessDocumentOrderDO.setUnloadAddressList(unloadAddressList);
businessDocumentOrderDO.setOrderSource("0");
// 插入业务单
Boolean insertResult = businessDocumentOrderApplicationService.insert(businessDocumentOrderDO);
if (!insertResult) {
throw new ServiceException("创建业务单失败");
}
LambdaQueryWrapper<BusinessDocumentOrder> orderQueryWrapper = new LambdaQueryWrapper<>();
orderQueryWrapper.eq(BusinessDocumentOrder::getGoodsNumber, businessDocumentOrderDO.getGoodsNumber());
BusinessDocumentOrder createdOrder = businessDocumentOrderService.getOne(orderQueryWrapper);
if (createdOrder == null) {
throw new ServiceException("创建业务单后查询失败");
}
// 处理货物信息(从预约单获取)
// handleCargoInfoFromReservation(createdOrder.getId(), reservationOrder.getId());
// 处理地址信息(从预约单获取)
handleAddressInfoFromReservation(createdOrder.getId(), reservationOrder.getId());
// 更新预约单状态
reservationOrder.setOrderType(1); // 设置为业务单类型
reservationOrder.setBusinessOrderId(businessDocumentOrder.getId()); // 关联业务单ID
reservationOrder.setBusinessOrderNumber(businessDocumentOrder.getGoodsNumber()); // 关联业务单号
reservationOrder.setUpdateTime(new Date());
reservationOrder.setUpdateBy(String.valueOf(loginUser.getUserid()));
int updateResult = resevationOrderMapper.updateById(reservationOrder);
if (updateResult <= 0) {
throw new ServiceException("更新预约单状态失败");
}
BusinessDocumentOrderPO businessDocumentOrderPO = new BusinessDocumentOrderPO();
BeanUtils.copyProperties(businessDocumentOrder, businessDocumentOrderPO);
return businessDocumentOrderPO;
BusinessDocumentOrder businessDocumentOrder = businessDocumentOrderMapper.selectOne(new LambdaQueryWrapper<BusinessDocumentOrder>().eq(BusinessDocumentOrder::getGoodsNumber, goodsNumber));
reservationOrder.setBusinessOrderId(businessDocumentOrder.getId());
reservationOrder.setBusinessOrderNumber(businessDocumentOrderDO.getGoodsNumber());
reservationOrder.setOrderType(1);
resevationOrderMapper.updateById(reservationOrder);
return insertResult;
}
private void saveAddress2CargoInfo(String id, List<OmsCargoInfoDTO> cargoInfoList, List<OmsAddressMultiDTO> loadingAddressList, List<OmsAddressMultiDTO> unloadAddressList) {
@@ -1356,7 +1637,8 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
@Override
public Result<?> batchConfirmReservationOrder(List<String> goodsNumbers) {
public Result<?> batchConfirmReservationOrder(BusinessAuditDTO businessAuditDTO) {
List<String> goodsNumbers = businessAuditDTO.getGoodsNumber();
BatchConfirmResult result = new BatchConfirmResult();
result.setTotal(goodsNumbers.size());
result.setSuccessList(new ArrayList<>());
@@ -1365,8 +1647,17 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
// 同步处理,避免线程池问题
for (String goodsNumber : goodsNumbers) {
try {
BusinessDocumentOrderPO businessOrder = confirmReservationOrder(goodsNumber);
result.getSuccessList().add(businessOrder);
Boolean businessOrder = confirmReservationOrder(goodsNumber);
if (businessOrder) {
} else {
result.getFailList().add(new BatchConfirmResult.FailItem(goodsNumber, "确认失败"));
}
ReservationOrder reservationOrder = resevationOrderMapper.selectOne(new LambdaQueryWrapper<ReservationOrder>().eq(ReservationOrder::getGoodsNumber, goodsNumber));
reservationOrder.setSalesManager(businessAuditDTO.getSalesManager());
reservationOrder.setReviewOpinion(businessAuditDTO.getReviewOpinion());
reservationOrder.setSalesmanName(businessAuditDTO.getSalesmanName());
resevationOrderMapper.updateById(reservationOrder);
result.setSuccessCount(result.getSuccessCount() + 1);
} catch (Exception e) {
result.getFailList().add(new BatchConfirmResult.FailItem(goodsNumber, e.getMessage()));
@@ -1389,6 +1680,84 @@ public class OmsAddressMultiService implements IOmsAddressMultiService {
}
}
@Override
public Map<Integer, Long> countByOrderType() {
// 使用MyBatis Plus的LambdaQueryWrapper进行分组统计
Map<Integer, Long> countMap = new HashMap<>();
// 查询所有非删除的订单,按orderType值分别计数
for (int i = 0; i <= 5; i++) {
LambdaQueryWrapper<ReservationOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReservationOrder::getIsDelete, 0)
.eq(ReservationOrder::getOrderType, i);
long count = resevationOrderMapper.selectCount(queryWrapper);
countMap.put(i, count);
}
return countMap;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Integer cancelReserve(List<String> goodsNumbers) {
int count = 0;
for (String goodsNumber : goodsNumbers) {
LambdaQueryWrapper<ReservationOrder> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ReservationOrder::getGoodsNumber, goodsNumber);
ReservationOrder reservationOrder = resevationOrderMapper.selectOne(queryWrapper);
List<BusinessDocumentOrder> businessDocumentOrders = businessDocumentOrderMapper.selectList(new LambdaQueryWrapper<BusinessDocumentOrder>().eq(BusinessDocumentOrder::getGoodsNumber, goodsNumber));
if (businessDocumentOrders != null && businessDocumentOrders.size() > 0) {
BusinessDocumentOrder businessDocumentOrder = businessDocumentOrders.get(0);
Long orderStatus = businessDocumentOrder.getOrderStatus();
if (orderStatus ==0L || orderStatus == 1L) {
businessDocumentOrder.setOrderStatus(4L);
businessDocumentOrderMapper.updateById(businessDocumentOrder);
reservationOrder.setOrderType(5);
resevationOrderMapper.updateById(reservationOrder);
count++;
}else {
throw new ServiceException("订单进行中无法取消,请联系运营人员处理");
}
}else {
reservationOrder.setOrderType(5);
resevationOrderMapper.updateById(reservationOrder);
count++;
}
}
// 返回成功修改的条数
return count;
}
@Override
public OmsOrderDTO getResevationOrderInfo(String goodsNumber) {
OmsOrderDTO omsOrderDTO = new OmsOrderDTO();
ReservationOrder reservationOrder = resevationOrderMapper.selectOne(new LambdaQueryWrapper<ReservationOrder>().eq(ReservationOrder::getGoodsNumber, goodsNumber));
if (reservationOrder == null) {
throw new ServiceException("订单不存在");
}
BeanUtils.copyProperties(reservationOrder, omsOrderDTO);
Long id = reservationOrder.getId();
List<ReservationCargoInfo> reservationCargoInfos = reservationCargoInfoMapper.selectList(new LambdaQueryWrapper<ReservationCargoInfo>().eq(ReservationCargoInfo::getOrderId, id));
if (reservationCargoInfos != null && reservationCargoInfos.size() > 0) {
omsOrderDTO.setReservationCargoInfo(reservationCargoInfos);
}
ReservationAddressMulti loadingAddressMulti = reservationAddressMultiMapper.selectOne(new LambdaQueryWrapper<ReservationAddressMulti>().eq(ReservationAddressMulti::getOrderId, id).eq(ReservationAddressMulti::getLayType,1).eq(ReservationAddressMulti::getDelFlag, 1));
if (loadingAddressMulti != null) {
omsOrderDTO.setLoadingAddressMulti(loadingAddressMulti);
}
ReservationAddressMulti unloadAddressMulti = reservationAddressMultiMapper.selectOne(new LambdaQueryWrapper<ReservationAddressMulti>().eq(ReservationAddressMulti::getOrderId, id).eq(ReservationAddressMulti::getLayType,2).eq(ReservationAddressMulti::getDelFlag, 1));
if (unloadAddressMulti != null) {
omsOrderDTO.setUnloadAddressMulti(unloadAddressMulti);
}
return omsOrderDTO;
}
@Override
public Result<?> batchRejectReservationOrder(List<String> goodsNumbers) {
BatchConfirmResult result = new BatchConfirmResult();