Merge branch 'refs/heads/dev' into test

This commit is contained in:
liss
2025-10-28 16:53:37 +08:00
26 changed files with 766 additions and 1534 deletions

View File

@@ -260,7 +260,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService {
code = TmplStsEnum.STOPPED.getCode();
} else if (reqVO.getType().equals("enable")) {
// 启用
code = TmplStsEnum.START.getCode();
code = TmplStsEnum.DRAFT.getCode();
}
if (code.isEmpty()) {
throw exception(ILLEGAL_OPERATION_TYPE);

View File

@@ -30,11 +30,17 @@
left join SPLY_ERP_CPN c on r.ERP_NUM = c.NUM
where d.DELETED = 0
and d.IS_COMPANY = 1
<if test="erpNumber != null">
and c.NUM = #{erpNumber}
</if>
<if test="number != null">
and d.CODE = #{number}
</if>
<if test="name != null">
and d.NAME = #{name}
and d.NAME like concat('%', #{name}, '%')
</if>
<if test="erpName != null">
and c.NAME = #{erpName}
and c.NAME like concat('%', #{erpName}, '%')
</if>
<if test="manager != null">
and d.LEADER_USER_ID = #{manager}

View File

@@ -2,16 +2,14 @@ package com.zt.plat.module.contractorder.api;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO;
import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO;
import com.zt.plat.module.contractorder.api.vo.contract.ContractSaveReqVO;
import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO;
import com.zt.plat.module.contractorder.api.vo.contract.international.ContractRequest;
import com.zt.plat.module.contractorder.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Valid;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -36,15 +34,11 @@ public interface ContractApi {
@Operation(summary = "通过订单编号获取订单信息", description = "通过订单编号获取订单信息")
CommonResult<List<PurchaseOrderWithDetailsDTO>> getOrderByOrderNo(@RequestBody List<String> orderNoS);
@PostMapping(PREFIX + "/create")
@Operation(summary = "创建合同")
CommonResult<Boolean> create(@Valid @RequestBody ContractSaveReqVO reqVO);
@PostMapping(PREFIX + "/order-by-order-id")
@Operation(summary = "通过订单id获取订单信息", description = "通过订单编号获取订单信息")
CommonResult<List<PurchaseOrderWithDetailsDTO>> getOrderByOrderIds(@RequestBody List<Long> ids);
@PostMapping(PREFIX + "/send")
@PostMapping(PREFIX + "/push")
@Operation(summary = "国贸2.0系统创建合同调用")
CommonResult<Boolean> push(@Valid @RequestBody ContractRequest reqVO);
CommonResult<Boolean> push(@Valid @RequestBody ContractRequest reqVO) throws Exception;
}

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.order;
import lombok.Data;
@@ -189,5 +189,12 @@ public class PurchaseOrderWithDetailsDTO {
* 订单类型
*/
private String splyBsnTp;
private List<PrchOrdDtlDTO> orderDetails;
/**
* 采购订单明细
*/
private List<PrchOrdDtlDTO> prchOrdDtlDTOS;
/**
* 消费订单明细
*/
private List<SalesOrdDtlDTO> salesOrdDtlDTOS;
}

View File

@@ -0,0 +1,137 @@
package com.zt.plat.module.contractorder.api.dto.order;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class SalesOrdDtlDTO {
/**
* 主键
*/
private Long id;
/**
* 订单主键
*/
private Long orderId;
/**
* 行项目;推送ERP(必须)
*/
private Long lineNumber;
/**
* 物料名称
*/
private String materialName;
/**
* 物料编码;推送ERP(必须)
*/
private String materialNumber;
/**
* 工厂名称
*/
private String factoryName;
/**
* 工厂编码;推送ERP(必须)
*/
private String factoryNumber;
/**
* 库位名称
*/
private String warehouseName;
/**
* 库位编码;推送ERP(必须)
*/
private String warehouseNumber;
/**
* 计量单位;推送ERP(必须)
*/
private String unit;
/**
* 开票类型;推送ERP(必须)
*/
private String invoiceType;
/**
* 暂估数量;推送ERP(必须)
*/
private BigDecimal quantity;
/**
* 稅分类(字典:SALE_TAX);推送ERP(必须)
*/
private String taxAcctasscat;
/**
* 项目类别;推送ERP
*/
private String projectCategory;
/**
* 装运地点;推送ERP
*/
private String shippingPlace;
/**
* 物料科目分配组;推送ERP必须
*/
private String metalAcctasscatGroup;
/**
* 小协议号
*/
private String agreementNumber;
/**
* 总价
*/
private BigDecimal gross;
/**
* 金属元素缩写
*/
private String elementAbbreviation;
/**
* 金属元素名称
*/
private String elementName;
/**
* 金属元素编码
*/
private String elementNumber;
/**
* 是否启用;处理明细中多个相同物料,只能允许一种物料启用
*/
private String isEnable;
/**
* 价格条件详情;推送ERP(必须):JSON
*/
private String priceConditionDetail;
/**
* 来料加工原料详情;推送ERP:订单类型(JSON)
*/
private String originDetail;
/**
* 税率
*/
private BigDecimal taxRte;
}

View File

@@ -6,7 +6,6 @@ import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@@ -34,7 +33,7 @@ public class ContractPageReqVO extends PageParam {
@Schema(description = "签署日期;与ERP(HTQDRQ)对应")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] signDate;
private String[] signDate;
@Schema(description = "本币金额;与ERP(HTBWBZJE)对应")
private BigDecimal basicAmount;

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,12 +8,20 @@ import lombok.Data;
*/
@Data
public class Account {
@Schema(description = "收付款账号行号")
private String accountSourceId; // 收付款账号行号
@Schema(description = "收付款账号编号")
private String accountSourceCode; // 收付款账号编号
@Schema(description = "类别")
private String accountType; // 类别
@Schema(description = "名称")
private String accountName; // 名称
@Schema(description = "开户银行")
private String bankAccountName; // 开户银行
@Schema(description = "银行账号")
private String bankAccountNo; // 银行账号
@Schema(description = "纳税人识别号")
private String identificationNumber; // 纳税人识别号
@Schema(description = "地址、电话")
private String addressPhoneTel; // 地址、电话
}

View File

@@ -1,10 +1,9 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.sql.Date;
import java.util.List;
/**
@@ -14,78 +13,144 @@ import java.util.List;
public class ContractRequest {
// 基础信息
@Schema(description = "操作标志")
private String operateFlag; // 操作标志
@Schema(description = "账套代码")
private String bookId; // 账套代码
@Schema(description = "组织ID")
private String orgId; // 组织ID
@Schema(description = "合同唯一键")
private String contractId; // 合同唯一键
@Schema(description = "合同操作类型 (新增, 变更, 修正)")
private String operateType; // 合同操作类型 (新增, 变更, 修正)
@Schema(description = "合同编号")
private String contractCode; // 合同编号
@Schema(description = "业务合同编号")
private String contractBusinessNo; // 业务合同编号
@Schema(description = "对方合同号")
private String contractExternalNo; // 对方合同号
@Schema(description = "系统合同版本号")
private BigDecimal contractVersion; // 系统合同版本号
@Schema(description = "合同状态代码 (值集: 40-签约)")
private String contractStatus; // 合同状态代码 (值集: 40-签约)
@Schema(description = "合同名称")
private String contractName; // 合同名称
@Schema(description = "合同类型 (货运;货代;仓储;保险)")
private String contractType; // 合同类型 (货运;货代;仓储;保险)
@Schema(description = "是否非标准合同文本")
private String textType; // 是否非标准合同文本
@DateTimeFormat(pattern = "yyyyMMdd")
private Date contractStartDate; // 合同有效期起 (格式: yyyyMMdd)
@DateTimeFormat(pattern = "yyyyMMdd")
private Date contractEndDate; // 合同有效期止 (格式: yyyyMMdd)
@Schema(description = "合同有效期起 (格式: yyyyMMdd)")
private String contractStartDate; // 合同有效期起 (格式: yyyyMMdd)
@Schema(description = "合同有效期止 (格式: yyyyMMdd)")
private String contractEndDate; // 合同有效期止 (格式: yyyyMMdd)
@Schema(description = "是否固定单价 (0-浮动, 1-固定)")
private String priceType; // 是否固定单价 (0-浮动, 1-固定)
@Schema(description = "合同币种")
private String currencyCode; // 合同币种
@Schema(description = "结算方式")
private String settleMethod; // 结算方式
@Schema(description = "对方合同号")
private String firstContractCode; // 对方合同号
@Schema(description = "预估含税总金额")
private BigDecimal estimateAmountTotal; // 预估含税总金额
@Schema(description = "结算依据 (10-交货量, 20-卸车量)")
private String settleGist; // 结算依据 (10-交货量, 20-卸车量)
@Schema(description = "税率")
private BigDecimal priceTaxRate; // 税率
@Schema(description = "运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)")
private String transType; // 运输方式 (10-铁路或汽运, 20-水路运输, 30-铁路运输, 40-汽车运输, 50-航空运输)
@Schema(description = "包装方式")
private String packMethod; // 包装方式
@Schema(description = "在途损耗")
private BigDecimal intransitLoss; // 在途损耗
@Schema(description = "提货地")
private String pickupLocation; // 提货地
@Schema(description = "仓库数")
private BigDecimal warehouseNum; // 仓库数
@Schema(description = "按码单入库磅差比")
private BigDecimal weightDisparity; // 按码单入库磅差比
@Schema(description = "投保标的")
private String insuredSubjectMatter; // 投保标的
@Schema(description = "预计年保险总额")
private BigDecimal estimateCoverageAmount; // 预计年保险总额
@Schema(description = "预计年保险费")
private BigDecimal estimatePremium; // 预计年保险费
@Schema(description = "保险费率")
private BigDecimal premiumRate; // 保险费率
@Schema(description = "备注信息")
private String remark; // 备注信息
@Schema(description = "经办人工号")
private String createdUser; // 经办人工号
@Schema(description = "经办人姓名")
private String createdUserName; // 经办人姓名
@Schema(description = "拟签递交人工号")
private String approveSubmitCode; // 拟签递交人工号
@Schema(description = "拟签递交人姓名")
private String approveSubmitName; // 拟签递交人姓名
@DateTimeFormat(pattern = "yyyyMMdd")
private Date approveSubmitDate; // 拟签呈批日期
@Schema(description = "拟签呈批日期")
private String approveSubmitDate; // 拟签呈批日期
@Schema(description = "拟签通过人工号")
private String approvePassCode; // 拟签通过人工号
@Schema(description = "拟签通过人姓名")
private String approvePassName; // 拟签通过人姓名
@DateTimeFormat(pattern = "yyyyMMdd")
private Date approvePassDate; // 拟签通过日期
@Schema(description = "拟签通过日期")
private String approvePassDate; // 拟签通过日期
@Schema(description = "签约地 (40-签约必填)")
private String signSite; // 签约地 (40-签约必填)
@DateTimeFormat(pattern = "yyyyMMdd")
private Date signDate; // 签约日期 (40-签约必填, 格式: yyyyMMdd)
@Schema(description = "签约日期 (40-签约必填, 格式: yyyyMMdd)")
private String signDate; // 签约日期 (40-签约必填, 格式: yyyyMMdd)
@Schema(description = "对方签约人 (40-签约必填)")
private String signFirstPerson; // 对方签约人 (40-签约必填)
@Schema(description = "我方签约人工号 (40-签约必填)")
private String signSecondPersonCode; // 我方签约人工号 (40-签约必填)
@Schema(description = "我方签约人")
private String signSecondPersonName; // 我方签约人
@Schema(description = "推荐签约人工号 (40-签约必填, Y/N)")
private String onceAuthorityFlag; // 推荐签约人工号 (40-签约必填, Y/N)
@Schema(description = "推荐签约人工号")
private String signOnceAccredit; // 推荐签约人工号
@Schema(description = "备用字段1")
private String extCol1; // 备用字段1
@Schema(description = "备用字段2")
private String extCol2; // 备用字段2
@Schema(description = "备用字段3")
private String extCol3; // 备用字段3
@Schema(description = "备用字段4")
private String extCol4; // 备用字段4
@Schema(description = "备用字段5")
private String extCol5; // 备用字段5
@Schema(description = "备用字段6")
private String extCol6; // 备用字段6
@Schema(description = "备用字段7")
private String extCol7; // 备用字段7
@Schema(description = "备用字段8")
private String extCol8; // 备用字段8
@Schema(description = "备用字段9")
private String extCol9; // 备用字段9
@Schema(description = "备用字段10")
private String extCol10; // 备用字段10
@Schema(description = "附件清单列表")
private List<String> attachList; // 附件清单列表
@Schema(description = "是否内部企业")
private String isInternal; // 是否内部企业
@Schema(description = "是否框架合同")
private String isFramework; // 是否框架合同
// 嵌套列表
@Schema(description = "客商信息")
private List<Partner> partnerList; // 客商信息
@Schema(description = "收发港/站点")
private List<GoodsSite> goodsSiteList; // 收发港/站点
@Schema(description = "货物装卸要求")
private List<LoadingRequirement> loadingRequirementsList; // 货物装卸要求
@Schema(description = "收付款账号")
private List<Account> accountList; // 收付款账号
@Schema(description = "费用明细")
private List<Freight> freightList; // 费用明细
@Schema(description = "服务费用项目")
private List<ServiceFee> serviceFeeList; // 服务费用项目
@Schema(description = "仓库明细")
private List<Storge> storgeList; // 仓库明细
@Schema(description = "接货地址")
private List<ReceivingAddr> receivingAddrList; // 接货地址
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@@ -8,26 +9,48 @@ import java.math.BigDecimal;
*/
@Data
public class Freight {
@Schema(description = "费用明细行号")
private String freightSourceId; // 费用明细行号
@Schema(description = "费用明细编号")
private String freightSourceCode; // 费用明细编号
@Schema(description = "发货地编号")
private String beginSiteCode; // 发货地编号
@Schema(description = "发货地名称")
private String beginSiteName; // 发货地名称
@Schema(description = "详细地址")
private String beginSiteAddress; // 详细地址
@Schema(description = "收货地编码")
private String endSiteCode; // 收货地编码
@Schema(description = "收货地名称")
private String endSiteName; // 收货地名称
@Schema(description = "详细地址")
private String endSiteAddress; // 详细地址
@Schema(description = "运输方式 (10-汽运;20-船运;30-水汽联运)")
private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运)
@Schema(description = "费用类型 (包干费、汽运费、港口费...)")
private String feeTypeCode; // 费用类型 (包干费、汽运费、港口费...)
@Schema(description = "费用名称")
private String feeTypeName; // 费用名称
@Schema(description = "是否乙方提货")
private String isPartybPickup; // 是否乙方提货
@Schema(description = "乙方提货单价")
private BigDecimal partybPickupPrice; // 乙方提货单价
@Schema(description = "费用大类")
private String feeCategoryL; // 费用大类
@Schema(description = "费用小类")
private String feeCategoryS; // 费用小类
@Schema(description = "标的仓")
private String goodsStorage; // 标的仓
@Schema(description = "标的物")
private String categoryName; // 标的物
@Schema(description = "免堆期")
private BigDecimal noHeapDays; // 免堆期
@Schema(description = "计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)")
private String quantityUnitCode; // 计费单位 (01-元/吨; 02-元/40GP; 03-元/20GP; 04-元/车)
@Schema(description = "单价")
private BigDecimal priceWithtax; // 单价
@Schema(description = "税率(%)")
private BigDecimal priceTaxRate; // 税率(%)
@Schema(description = "费用承担")
private String costBearing; // 费用承担
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,18 +8,32 @@ import lombok.Data;
*/
@Data
public class GoodsSite {
@Schema(description = "收发港站点行号")
private String goodsSiteSourceId; // 收发港站点行号
@Schema(description = "收发港站点编号")
private String goodsSiteSourceCode; // 收发港站点编号
@Schema(description = "标的物分类")
private String subMattercategoryLevel; // 标的物分类
@Schema(description = "标的物编码")
private String subMattercategoryCode; // 标的物编码
@Schema(description = "标的物名称")
private String subMatterCategoryName; // 标的物名称
@Schema(description = "地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)")
private String beginSiteType; // 地点类型 (QY-区域; GK-港口; MT-码头; CK-仓库)
@Schema(description = "发货地编号")
private String beginSiteCode; // 发货地编号
@Schema(description = "发货地名称")
private String beginSiteName; // 发货地名称
@Schema(description = "详细地址")
private String beginSiteAddress; // 详细地址
@Schema(description = "地点类型")
private String endSiteType; // 地点类型
@Schema(description = "收货地编号")
private String endSiteCode; // 收货地编号
@Schema(description = "收货地名称")
private String endSiteName; // 收货地名称
@Schema(description = "详细地址")
private String endSiteAddress; // 详细地址
@Schema(description = "运输方式 (10-汽运;20-船运;30-水汽联运)")
private String contractTypeDispatch; // 运输方式 (10-汽运;20-船运;30-水汽联运)
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,12 +8,20 @@ import lombok.Data;
*/
@Data
public class LoadingRequirement {
@Schema(description = "货物装卸行号")
private String loadingReqSourceId; // 货物装卸行号
@Schema(description = "货物装卸编号")
private String loadingReqSourceCode; // 货物装卸编号
@Schema(description = "提货地责任方")
private String deliveredAtPlace; // 提货地责任方
@Schema(description = "提货地费用承担方")
private String deliveredAtFeeparty; // 提货地费用承担方
@Schema(description = "终到地责任方")
private String destinationResponsibleParty; // 终到地责任方
@Schema(description = "终到地费用承担方")
private String intermediateStationParty; // 终到地费用承担方
@Schema(description = "中间站责任方")
private String destinationResponsibleFeeparty; // 中间站责任方
@Schema(description = "中间站费用承担方")
private String intermediateResponsibleFeeparty; // 中间站费用承担方
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,15 +8,26 @@ import lombok.Data;
*/
@Data
public class Partner {
@Schema(description = "客商信息行号")
private String partnerSourceId; // 客商信息行号
@Schema(description = "客商信息编码")
private String partnerSourceCode; // 客商信息编码
@Schema(description = "供应商名称")
private String partnerName; // 供应商名称
@Schema(description = "供应商代码")
private String partnerCode; // 供应商代码
@Schema(description = "对方法定代表人")
private String legalRepresentative; // 对方法定代表人
@Schema(description = "币种")
private String partnerCurrency; // 币种
@Schema(description = "对方联系人")
private String contactPerson; // 对方联系人
@Schema(description = "对方联系人联系方式")
private String contactInformation; // 对方联系人联系方式
@Schema(description = "是否内部交易")
private String internalTransaction; // 是否内部交易
@Schema(description = "客商类型")
private String partnerType; // 客商类型
@Schema(description = "境内/外")
private String domesticOrOverseas; // 境内/外
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,17 +8,30 @@ import lombok.Data;
*/
@Data
public class ReceivingAddr {
@Schema(description = "接货地址行号")
private String recivingAddrSourceId; // 接货地址行号
@Schema(description = "接货地址编号")
private String recivingAddrSourceCode; // 接货地址编号
@Schema(description = "标的物分类")
private String categoryLevel; // 标的物分类
@Schema(description = "标的物编码")
private String ccCategoryCode; // 标的物编码
@Schema(description = "标的物名称")
private String categoryName; // 标的物名称
@Schema(description = "接货编码")
private String siteCode; // 接货编码
@Schema(description = "接货名称")
private String siteName; // 接货名称
@Schema(description = "地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)")
private String siteType; // 地址类型 (QY-区域; GK-港口; MT-码头; CK-仓库)
@Schema(description = "详细地址")
private String siteAddress; // 详细地址
@Schema(description = "专用线")
private String consigneePrivatewire; // 专用线
@Schema(description = "收货人")
private String consignerContact; // 收货人
@Schema(description = "联系人")
private String contactPerson; // 联系人
@Schema(description = "联系电话")
private String contactPhone; // 联系电话
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,8 +8,12 @@ import lombok.Data;
*/
@Data
public class ServiceFee {
@Schema(description = "服务费用项目行号")
private String serviceFeeSourceId; // 服务费用项目行号
@Schema(description = "服务费用项目编号")
private String serviceFeeSourceCode; // 服务费用项目编号
@Schema(description = "服务项目名称")
private String serviceFeeName; // 服务项目名称
@Schema(description = "计费类别")
private String expenseType; // 计费类别
}

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.api.vo.contract.international;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
/*
@@ -7,9 +8,14 @@ import lombok.Data;
*/
@Data
public class Storge {
@Schema(description = "合同明细行号")
private String storgeSourceId; // 合同明细行号
@Schema(description = "合同明细行编号")
private String storgeSourceCode; // 合同明细行编号
@Schema(description = "仓库编号")
private String warehouseCode; // 仓库编号
@Schema(description = "仓库名称")
private String warehouseName; // 仓库名称
@Schema(description = "详细地址")
private String warehouseAddress; // 详细地址
}

View File

@@ -77,7 +77,7 @@ public class PrchOrdDtlDetailsRespVO {
* 税码(字典: PRCH_TAX);推送ERP
*/
private BigDecimal taxNum;
private String taxNum;
/**
* 是否基于GR的发票校验;推送ERP
*/

View File

@@ -1,5 +1,6 @@
package com.zt.plat.module.contractorder.controller.admin.salesorder;
import cn.hutool.extra.spring.SpringUtil;
import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog;
import com.zt.plat.framework.business.interceptor.BusinessControllerMarker;
import com.zt.plat.framework.common.pojo.CommonResult;
@@ -8,7 +9,9 @@ import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.framework.excel.core.util.ExcelUtils;
import com.zt.plat.module.contractorder.api.ContractApi;
import com.zt.plat.module.contractorder.api.ContractApiImpl;
import com.zt.plat.module.contractorder.api.dto.order.PurchaseOrderWithDetailsDTO;
import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO;
import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO;
@@ -26,12 +29,14 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import org.redisson.api.RObject;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.List;
import java.util.Objects;
import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@@ -75,7 +80,7 @@ public class SalesOrderController implements BusinessControllerMarker {
@DeleteMapping("/delete-list")
@Parameter(name = "ids", description = "编号", required = true)
@Operation(summary = "批量删除销售订单")
@PreAuthorize("@ss.hasPermission('base:sales-order:delete')")
@PreAuthorize("@ss.hasPermission('base:sales-order:delete')")
public CommonResult<Boolean> deleteSalesOrderList(@RequestBody BatchDeleteReqVO req) {
salesOrderService.deleteSalesOrderListByIds(req.getIds());
return success(true);
@@ -85,10 +90,10 @@ public class SalesOrderController implements BusinessControllerMarker {
@Operation(summary = "获得销售订单")
@Parameter(name = "id", description = "id是订单主键splyBsnTp是订单类型销售或者是消费", required = true, example = "1024")
@PreAuthorize("@ss.hasPermission('base:sales-order:query')")
public CommonResult<SalesOrderRespVO> getSalesOrder(@RequestParam("id") Long id,@RequestParam(value = "splyBsnTp",required = false) String splyBsnTp) {
public CommonResult<SalesOrderRespVO> getSalesOrder(@RequestParam("id") Long id, @RequestParam(value = "splyBsnTp", required = false) String splyBsnTp) {
SalesOrderDO purchaseOrder = salesOrderService.getSalesOrder(id, splyBsnTp);
SalesOrderRespVO salesOrderRespVO = BeanUtils.toBean(purchaseOrder, SalesOrderRespVO.class);
if (salesOrderRespVO == null){
if (salesOrderRespVO == null) {
return success(null);
}
salesOrderService.setSalesOrderDetail(salesOrderRespVO);
@@ -100,8 +105,8 @@ public class SalesOrderController implements BusinessControllerMarker {
@PreAuthorize("@ss.hasPermission('base:sales-order:query')")
public CommonResult<PageResult<SalesOrderRespVO>> getSalesOrderPage(@Valid SalesOrderPageReqVO pageReqVO) {
PageResult<SalesOrderDO> pageResult = salesOrderService.getSalesOrderPage(pageReqVO);
PageResult<SalesOrderRespVO> salesOrderRespVOPageResult = BeanUtils.toBean(pageResult, SalesOrderRespVO.class);
if (salesOrderRespVOPageResult.getList() != null){
PageResult<SalesOrderRespVO> salesOrderRespVOPageResult = BeanUtils.toBean(pageResult, SalesOrderRespVO.class);
if (salesOrderRespVOPageResult.getList() != null) {
salesOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> salesOrderService.setSalesOrderDetail(purchaseOrderRespVO));
}
@@ -113,25 +118,25 @@ public class SalesOrderController implements BusinessControllerMarker {
@PreAuthorize("@ss.hasPermission('base:sales-order:export')")
@ApiAccessLog(operateType = EXPORT)
public void exportSalesOrderExcel(@Valid SalesOrderPageReqVO pageReqVO,
HttpServletResponse response) throws IOException {
HttpServletResponse response) throws IOException {
pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE);
List<SalesOrderDO> list = salesOrderService.getSalesOrderPage(pageReqVO).getList();
// 导出 Excel
ExcelUtils.write(response, "销售订单.xls", "数据", PurchaseOrderRespVO.class,
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
BeanUtils.toBean(list, PurchaseOrderRespVO.class));
}
//推送erp091
@PostMapping("/push-erp091")
@Operation(summary = "推送erp091")
public CommonResult<Boolean> pushErp091(@RequestParam("id")String id ) {
public CommonResult<Boolean> pushErp091(@RequestParam("id") String id) {
return success(salesOrderService.pushErp091(id));
}
//提交审批
@PostMapping("/submit-order")
@Operation(summary = "提交审批")
public CommonResult<String> submitOrder(@RequestParam("id")String id ) {
public CommonResult<String> submitOrder(@RequestParam("id") String id) {
return success(salesOrderService.submitOrder(id));
}
@@ -141,6 +146,7 @@ public class SalesOrderController implements BusinessControllerMarker {
public CommonResult<Boolean> orderPassReject(@RequestBody SalesOrderReviewReqVO reqVO) {
return success(salesOrderService.orderPassReject(reqVO));
}
//关联订单
@PostMapping("/link-order")
@Operation(summary = "关联订单")
@@ -152,7 +158,7 @@ public class SalesOrderController implements BusinessControllerMarker {
@PostMapping("/order-by-order-id-and-type")
@Operation(summary = "根据订单id和方式获取上或下游订单")
public CommonResult<List<DownOrUpOrderRespVO>> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) {
return success( salesOrderService.getOrderByOrderIdAndType(reqVO));
return success(salesOrderService.getOrderByOrderIdAndType(reqVO));
}
@@ -168,5 +174,4 @@ public class SalesOrderController implements BusinessControllerMarker {
salesOrderService.updateOrderStatusByIdOrOrderNo(req);
return success(true);
}
}

View File

@@ -124,6 +124,25 @@ public interface PurchaseOrderService {
* @return 结果
*/
Boolean linkOrder(@Valid LinkOrderReqVO LinkOrderReqVO);
/**
* 获取订单详情
*
* @param ids 订单id
* @return 订单详情
*/
List<PurchaseOrderDetailsRespVO> getOrderByIds(List<Long> ids);
/**
* 获取订单详情
*
* @param orderNos 订单编号
* @return 订单详情
*/
List<PurchaseOrderDO> getOrderByNos(List<String> orderNos);
/**
* 获取订单详情
*
* @param ids 订单id
* @return 订单详情
*/
List<PurchaseOrderDO> getOrdersByIds(List<String> ids);
}

View File

@@ -677,4 +677,14 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
});
return purchaseOrderDetailsRespVOS;
}
@Override
public List<PurchaseOrderDO> getOrderByNos(List<String> orderNos) {
return purchaseOrderMapper.selectList(PurchaseOrderDO::getSystemOrderNumber, orderNos);
}
@Override
public List<PurchaseOrderDO> getOrdersByIds(List<String> ids) {
return purchaseOrderMapper.selectByIds(ids);
}
}

View File

@@ -8,6 +8,8 @@ import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO;
import com.zt.plat.module.erp.service.erp.ErpProductiveVersionService;
import com.zt.plat.module.erp.utils.ErpConfig;
import jakarta.annotation.Resource;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -25,6 +27,7 @@ import static com.zt.plat.framework.common.pojo.CommonResult.success;
*/
@RestController
@Validated
@Component
public class ErpExternalApiImpl implements ErpExternalApi {
@Resource

View File

@@ -58,4 +58,20 @@ public class ErpMaterialPageReqVO extends PageParam {
@Schema(description = "类型")
private String type;
@Schema(description = "金属元素缩写")
private String abbreviation;
@Schema(description = "金属元素名称", example = "赵六")
private String name;
@Schema(description = "金属元素编码")
private String coding;
@Schema(description = "品位单位")
private String gradeUnit;
@Schema(description = "小数位数")
private Long decimalValue;
}

View File

@@ -77,6 +77,26 @@ public class ErpMaterialRespVO {
@ExcelProperty("类型")
private String type;
@Schema(description = "金属元素缩写")
@ExcelProperty("金属元素缩写")
private String abbreviation;
@Schema(description = "金属元素名称", example = "赵六")
@ExcelProperty("金属元素名称")
private String name;
@Schema(description = "金属元素编码")
@ExcelProperty("金属元素编码")
private String coding;
@Schema(description = "品位单位")
@ExcelProperty("品位单位")
private String gradeUnit;
@Schema(description = "小数位数")
@ExcelProperty("小数位数")
private Long decimalValue;
private List<MaterialOtherDTO> materialOtherDTOS;
}

View File

@@ -69,4 +69,19 @@ public class ErpMaterialSaveReqVO {
@Schema(description = "类型")
private String type;
@Schema(description = "金属元素缩写")
private String abbreviation;
@Schema(description = "金属元素名称", example = "赵六")
private String name;
@Schema(description = "金属元素编码")
private String coding;
@Schema(description = "品位单位")
private String gradeUnit;
@Schema(description = "小数位数")
private Long decimalValue;
}

View File

@@ -100,5 +100,30 @@ public class ErpMaterialDO extends BusinessBaseDO {
@TableField("TP")
private String type;
/**
* 金属元素缩写
*/
@TableField("ABBR")
private String abbreviation;
/**
* 金属元素名称
*/
@TableField("NAME")
private String name;
/**
* 金属元素编码
*/
@TableField("CDG")
private String coding;
/**
* 品位单位
*/
@TableField("GRD_UNT")
private String gradeUnit;
/**
* 小数位数
*/
@TableField("DEC")
private Long decimalValue;
}