合同提交erp功能编写

通过合同编号获取对应的结算条款数据feign接口修改为通过合同编号获取对应的合同信息
This commit is contained in:
guojunyun
2025-10-13 14:56:16 +08:00
parent b8be2bce92
commit 83a11132b7
17 changed files with 553 additions and 71 deletions

View File

@@ -2,7 +2,7 @@ package com.zt.plat.module.contractorder.api;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO;
import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO;
import com.zt.plat.module.contractorder.enums.ApiConstants;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -10,16 +10,15 @@ import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import java.util.List;
@FeignClient(name = ApiConstants.NAME)
@Tag(name = "RPC 服务 - 合同")
public interface ContractApi {
String PREFIX = ApiConstants.PREFIX + "/contract";
@GetMapping(PREFIX + "/formulas")
@Operation(summary = "通过合同编号获取对应的结算条款数据")
List<ContractFormulaRespDTO> getFormulas(@RequestParam("contractPaperNumber") String contractPaperNumber);
@GetMapping(PREFIX + "/get/by-paper-number")
@Operation(summary = "通过合同编号获取对应的合同信息")
ContractRespDTO getContractByPaperNumber(@RequestParam("contractPaperNumber") String contractPaperNumber);
@GetMapping(PREFIX + "/updateOrderStatus")
@Operation(summary = "更新订单状态")
CommonResult<Boolean> updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("status") String status);

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -7,7 +7,7 @@ import java.math.BigDecimal;
@Schema(description = "RPC 服务 - 基础系数配置 Response DTO")
@Data
public class ContractCoefficientRespDTO {
public class CoefficientRespDTO {
@Schema(description = "主键")
private Long id;

View File

@@ -0,0 +1,238 @@
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
@Schema(description = "管理后台 - 合同详情 Response VO")
@Data
public class ContractRespDTO {
@Schema(description = "主键")
private Long id;
@Schema(description = "模板实例主键")
private Long instanceId;
@Schema(description = "系统合同编号;自动生成,校验唯一")
private String systemContractNumber;
@Schema(description = "状态")
private String status;
@Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一")
private String contractName;
@Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一")
private String contractPaperNumber;
@Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应")
private String contractVirtual;
@Schema(description = "是否先款后货")
private String hasPayable;
@Schema(description = "收支性质;与ERP(SZXZ)对应")
private String direction;
@Schema(description = "合同类型")
private String contractType;
@Schema(description = "签署日期;与ERP(HTQDRQ)对应")
private LocalDateTime signDate;
@Schema(description = "开始日期;与ERP(HTQSRQ)对应")
private LocalDateTime startDate;
@Schema(description = "结束日期;与ERP(HTZZRQ)对应")
private LocalDateTime endDate;
@Schema(description = "签署地")
private String signPlace;
@Schema(description = "甲方公司编号;如果是采购合同查询组织机构自动带出且与ERP(HTQDZTBH)对应如果是销售合同手动选择且与ERP(WLDWBH)对应。")
private String purchaseCompanyNumber;
@Schema(description = "甲方公司名称")
private String purchaseCompanyName;
@Schema(description = "甲方地址")
private String purchaseAddress;
@Schema(description = "甲方法定代表人")
private String purchaseLeader;
@Schema(description = "乙方公司编号;如果是销售合同查询组织机构自动带出且与ERP(HTQDZTBH)对应如果是采购合同手动选择且与ERP(WLDWBH)对应。")
private String salesCompanyNumber;
@Schema(description = "乙方公司名称")
private String salesCompanyName;
@Schema(description = "乙方地址")
private String salesAddress;
@Schema(description = "乙方企业负责人")
private String salesPurchaseLeader;
@Schema(description = "币种;与ERP(BZBH)对应")
private String currency;
@Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
private BigDecimal cooAmount;
@Schema(description = "本币金额;与ERP(HTBWBZJE)对应")
private BigDecimal basicAmount;
@Schema(description = "是否有履约保证金;为是,则保证金必填。")
private String hasDeposit;
@Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额")
private BigDecimal cooAmountDeposit;
@Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应")
private BigDecimal basicAmountDeposit;
@Schema(description = "是否有预付款;与ERP(SFYYFK)对应")
private String hasPrepayment;
@Schema(description = "预付款比例;与ERP(YFKBL)对应")
private BigDecimal prepaymentRatio;
@Schema(description = "预付款金额;与ERP(YFKJE)对应")
private BigDecimal prepaymentAmount;
@Schema(description = "是否有质保金;与ERP(SFHZBJ)对应")
private String hasQualityAmount;
@Schema(description = "质保金比例;与ERP(ZBJBL)对应")
private BigDecimal qualityRatio;
@Schema(description = "质保金金额;与ERP(BZJJE)对应")
private BigDecimal qualityAmount;
@Schema(description = "补充协议类型;变更协议/增加条款")
private String replenishAgreementType;
@Schema(description = "备注;与ERP(BZXX)对应")
private String remark;
@Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息")
private String constructionTypeNumber;
@Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息")
private String constructionTypeName;
@Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息")
private String agent;
@Schema(description = "类别;与ERP(HTLB)对应,拓展信息")
private String category;
@Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息")
private BigDecimal changeCooAmount;
@Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息")
private BigDecimal changeBasicAmount;
@Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息")
private BigDecimal changeCooAmountDeposit;
@Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息")
private BigDecimal changeBasicAmountDeposit;
@Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息")
private String isFramework;
@Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息")
private String isDomestic;
@Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应拓展信息销售合同且类型为SAP02COSR必填")
private String architectureServicePlace;
@Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应拓展信息销售合同且类型为SAP02COSR必填")
private BigDecimal payeeConditionAmount;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "步骤")
private Integer step;
@Schema(description = "ERP请求状态")
private String erpStatus;
@Schema(description = "ERP请求失败原因")
private String cause;
@Schema(description = "流程实例编号")
private String processInstanceId;
@Schema(description = "审批意见")
private String reviewOpinion;
@Schema(description = "任务节点主键")
private String taskNodeId;
@Schema(description = "模板附件对象存储")
private String fileObject;
@Schema(description = "其它附件对象存储")
private String fileObjectOther;
@Schema(description = "交货地点")
private String deliveryAddress;
@Schema(description = "交货方式(字典:FRCST_ASN)")
private String deliveryWay;
@Schema(description = "甲方联系人")
private String purchaseHuman;
@Schema(description = "甲方电话")
private String purchaseTel;
@Schema(description = "甲方邮箱")
private String purchaseEmail;
@Schema(description = "甲方传真")
private String purchaseFax;
@Schema(description = "甲方联系地址")
private String purchaseContactAddress;
@Schema(description = "乙方联系人")
private String salesHuman;
@Schema(description = "乙方电话")
private String salesTel;
@Schema(description = "乙方邮箱")
private String salesEmail;
@Schema(description = "乙方传真")
private String salesFax;
@Schema(description = "乙方联系地址")
private String salesContactAddress;
// 物料信息
private List<DetailRespDTO> detail;
// 合同动态表单
// private List<TemplateInstanceDataRespDTO> dynamicsFields;
// 合同动态条款
// private List<TemplateInstanceItemRespDTO> dynamicsItems;
// 价款结算条款
private List<FormulaRespDTO> formulas;
// 参数降级规则
private List<DemoteRespDTO> demotes;
// 品位不计价规则
private List<NotRespDTO> nots;
}

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
@Schema(description = "RPC 服务 - 调整价配置 Response DTO")
@Data
public class ContractDeductRespDTO {
public class DeductRespDTO {
@Schema(description = "主键")
private Long id;

View File

@@ -0,0 +1,51 @@
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 参数降级规则 Response VO")
@Data
public class DemoteRespDTO {
@Schema(description = "主键")
private Long id;
@Schema(description = "合同主键")
private Long contractId;
@Schema(description = "金属元素编码")
private String elementNumber;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称")
private String elementName;
@Schema(description = "上限")
private BigDecimal gradeUp;
@Schema(description = "区间方式(字典STLM_RNG_WY)")
private String rangeWay;
@Schema(description = "下限")
private BigDecimal gradeDown;
@Schema(description = "降级后物料名称")
private String materialName;
@Schema(description = "降级后物料编码")
private String materialNumber;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "合同名称")
private String contractName;
@Schema(description = "合同编码")
private String contractPaperNumber;
}

View File

@@ -0,0 +1,41 @@
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
@Schema(description = "管理后台 - 合同明细 Response VO")
@Data
public class DetailRespDTO {
@Schema(description = "主键")
private Long id;
@Schema(description = "物料名称")
private String materialName;
@Schema(description = "物料编码")
private String materialNumber;
@Schema(description = "数量")
private BigDecimal quantity;
@Schema(description = "计量单位")
private String unit;
@Schema(description = "含税单价")
private BigDecimal inTaxUnitPrice;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称")
private String elementName;
@Schema(description = "金属元素编码")
private String elementNumber;
// 交货计划
private List<PlanRespDTO> plans;
}

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -7,7 +7,7 @@ import java.util.List;
@Schema(description = "RPC 服务 - 价款结算条款 Response DTO")
@Data
public class ContractFormulaRespDTO {
public class FormulaRespDTO {
@Schema(description = "主键")
private Long id;
@@ -46,11 +46,11 @@ public class ContractFormulaRespDTO {
private String settlementType;
// 基础系数配置
private List<ContractCoefficientRespDTO> coefficients;
private List<CoefficientRespDTO> coefficients;
// 品位等级价配置
private List<ContractGradeRespDTO> grades;
private List<GradeRespDTO> grades;
// 调整价配置
private List<ContractDeductRespDTO> deducts;
private List<DeductRespDTO> deducts;
// 市场价配置
private List<ContractPriceRespDTO> prices;
private List<PriceRespDTO> prices;
}

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
@Schema(description = "RPC 服务 - 品位等级价配置 Response DTO")
@Data
public class ContractGradeRespDTO {
public class GradeRespDTO {
@Schema(description = "主键")
private Long id;

View File

@@ -0,0 +1,51 @@
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Schema(description = "管理后台 - 品位不计价规则 Response VO")
@Data
public class NotRespDTO {
@Schema(description = "主键")
private Long id;
@Schema(description = "合同主键")
private Long contractId;
@Schema(description = "金属元素编码")
private String elementNumber;
@Schema(description = "金属元素缩写")
private String elementAbbreviation;
@Schema(description = "金属元素名称")
private String elementName;
@Schema(description = "上限")
private BigDecimal gradeUp;
@Schema(description = "下限")
private BigDecimal gradeDown;
@Schema(description = "区间方式(字典STLM_RNG_WY)")
private String rangeWay;
@Schema(description = "创建时间")
private LocalDateTime createTime;
@Schema(description = "物料名称")
private String materialName;
@Schema(description = "物料编码")
private String materialNumber;
@Schema(description = "合同名称")
private String contractName;
@Schema(description = "合同编码")
private String contractPaperNumber;
}

View File

@@ -0,0 +1,28 @@
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 交货计划 Response VO")
@Data
public class PlanRespDTO {
@Schema(description = "主键")
private Long id;
@Schema(description = "交货年份")
private Long contractDeliveryYear;
@Schema(description = "交货月份")
private Long contractPlanDeliveryMonth;
@Schema(description = "计划交货数量")
private BigDecimal contractPlanDeliveryQuantity;
@Schema(description = "交货开始日期")
private String contractDeliveryStartDate;
@Schema(description = "交货结束日期")
private String contractDeliveryEndDate;
}

View File

@@ -1,4 +1,4 @@
package com.zt.plat.module.contractorder.api.dto;
package com.zt.plat.module.contractorder.api.dto.contract;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@@ -8,7 +8,7 @@ import java.time.LocalDateTime;
@Schema(description = "RPC 服务 - 市场价配置 Response DTO")
@Data
public class ContractPriceRespDTO {
public class PriceRespDTO {
@Schema(description = "主键")
private Long id;

View File

@@ -5,38 +5,31 @@ package com.zt.plat.module.contractorder.enums.contract;
*/
public enum DictEnum {
/** 提交ERP合同状态 */
SUBMIT_ERP_CTRT_STS_EF("正在执行","EF","其它所有状态"),
SUBMIT_ERP_CTRT_STS_BFZT("部分暂停","BFZT",null),
SUBMIT_ERP_CTRT_STS_QBZT("全部暂停","QBZT",null),
SUBMIT_ERP_CTRT_STS_HHZZ("合同中止","HHZZ",null),
SUBMIT_ERP_CTRT_STS_CA("作废","CA","对应合同中的“已作废”"),
SUBMIT_ERP_CTRT_STS_HTZZ("合同终止","HTZZ",null),
SUBMIT_ERP_CTRT_STS_ZXWB("执行完毕","ZXWB","对应合同中的“已完结”"),
/** ERP收支方向 */
// 支出
ERP_RCV_DLVY_EXPENSES("支出","2","对应采购"),
// 收入
ERP_RCV_DLVY_INCOME("收入","1","对应销售"),
/** ERP是否 */
// 是
ERP_CTRT_YN_YES("","1",null),
// 否
ERP_CTRT_YN_NO("","0",null),
/** 合同状态 */
// 草稿
BSE_CTRT_STS_DRAFT("草稿","DRAFT","可以删除"),
// 正在审核
BSE_CTRT_STS_UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"),
// 已驳回
BSE_CTRT_STS_REJECTED("已驳回","REJECTED","可以删除"),
// 待推送
BSE_CTRT_STS_WAIT_PUSH("待推送","WAIT_PUSH",null),
// 推送失败
BSE_CTRT_STS_PUSH_ERROR("推送失败","PUSH_ERROR",null),
// 执行中
BSE_CTRT_STS_IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"),
// 已删除
BSE_CTRT_STS_DELETED("已删除","DELETED","不允许任何操作"),
// 已归档
BSE_CTRT_STS_ARCHIVED("已归档","ARCHIVED","不允许任何操作"),
// 已完结
BSE_CTRT_STS_TERMINATED("已完结","TERMINATED","只允许归档"),
// 待审核
BSE_CTRT_STS_WAIT_AUDIT("待审核","WAIT_AUDIT",null),
// 已作废
BSE_CTRT_STS_VOID("已作废","VOID",null);

View File

@@ -1,7 +1,7 @@
package com.zt.plat.module.contractorder.api;
import com.zt.plat.framework.common.pojo.CommonResult;
import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO;
import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO;
import com.zt.plat.module.contractorder.service.contract.ContractService;
import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService;
import jakarta.annotation.Resource;
@@ -9,8 +9,6 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import static com.zt.plat.framework.common.pojo.CommonResult.success;
@RestController
@@ -24,7 +22,7 @@ public class ContractApiImpl implements ContractApi {
private PurchaseOrderService purchaseOrderService;
@Override
public List<ContractFormulaRespDTO> getFormulas(String contractPaperNumber) {
public ContractRespDTO getContractByPaperNumber(String contractPaperNumber) {
return contractService.getFormulasByPaperNumber(contractPaperNumber);
}

View File

@@ -1,7 +1,7 @@
package com.zt.plat.module.contractorder.service.contract;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.module.contractorder.api.dto.ContractFormulaRespDTO;
import com.zt.plat.module.contractorder.api.dto.contract.ContractRespDTO;
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO;
import jakarta.validation.Valid;
@@ -88,12 +88,12 @@ public interface ContractService {
List<FormulaRespVO> getFormulas(FormulasQueryReqVO queryReqVO);
/**
* 通过合同编号获取对应的结算条款数据
* 通过合同编号获取对应的合同信息
*
* @param contractPaperNumber 合同编号
* @return 结算条款数据
*/
List<ContractFormulaRespDTO> getFormulasByPaperNumber(String contractPaperNumber);
ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber);
/**
* 提交ERP

View File

@@ -17,7 +17,7 @@ import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi;
import com.zt.plat.module.bpm.api.task.BpmTaskApi;
import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO;
import com.zt.plat.module.bpm.api.task.dto.BpmTaskRespDTO;
import com.zt.plat.module.contractorder.api.dto.*;
import com.zt.plat.module.contractorder.api.dto.contract.*;
import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*;
import com.zt.plat.module.contractorder.dal.dataobject.contract.*;
import com.zt.plat.module.contractorder.dal.mysql.contract.*;
@@ -26,8 +26,10 @@ import com.zt.plat.module.contractorder.enums.DateConstants;
import com.zt.plat.module.contractorder.enums.ProcessConstants;
import com.zt.plat.module.contractorder.enums.TableFieldConstants;
import com.zt.plat.module.contractorder.enums.contract.DictEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
import com.zt.plat.module.erp.service.erp.ErpCompanyService;
import com.zt.plat.module.erp.service.erp.ErpContractService;
import com.zt.plat.module.system.api.user.AdminUserApi;
import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO;
import jakarta.annotation.Resource;
@@ -90,6 +92,8 @@ public class ContractServiceImpl implements ContractService {
private ContractDemoteMapper contractDemoteMapper;
@Resource
private ErpCompanyService erpCompanyService;
@Resource
private ErpContractService erpContractService;
@Override
public PageResult<ContractMainDO> getContractPage(ContractPageReqVO pageReqVO) {
@@ -736,7 +740,7 @@ public class ContractServiceImpl implements ContractService {
}
@Override
public List<ContractFormulaRespDTO> getFormulasByPaperNumber(String contractPaperNumber) {
public ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber) {
// 通过合同编号查询合同信息
ContractMainDO contractMainDO = contractMainMapper
@@ -750,43 +754,76 @@ public class ContractServiceImpl implements ContractService {
// 合同ID
Long contractId = contractMainDO.getId();
// 返回结果
ContractRespDTO respDTO = new ContractRespDTO();
BeanUtils.copyProperties(contractMainDO, respDTO);
// 查询并设置合同明细
List<ContractDetailDO> detailDOS = contractDetailMapper
.selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId());
if (detailDOS != null && !detailDOS.isEmpty()) {
respDTO.setDetail(BeanUtils.toBean(detailDOS, DetailRespDTO.class));
respDTO.getDetail().forEach(detail -> {
// 查询并设置交货计划
List<ContractPlanDO> planDOS = contractPlanMapper
.selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId());
if (planDOS != null && !planDOS.isEmpty()) {
detail.setPlans(BeanUtils.toBean(planDOS, PlanRespDTO.class));
}
});
}
// 查询并设置价款结算条款
List<ContractFormulaRespDTO> formulas = new ArrayList<>();
List<ContractFormulaDO> formulaDOS = contractFormulaMapper
.selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractId);
if (formulaDOS != null && !formulaDOS.isEmpty()) {
formulas = BeanUtils.toBean(formulaDOS, ContractFormulaRespDTO.class);
respDTO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespDTO.class));
formulas.forEach(formula -> {
respDTO.getFormulas().forEach(formula -> {
// 查询并设置基础系数配置
List<ContractCoefficientDO> coefficientDOS = contractCoefficientMapper
.selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId());
if (coefficientDOS != null && !coefficientDOS.isEmpty()) {
formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractCoefficientRespDTO.class));
formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespDTO.class));
}
// 查询并设置品位等级价配置
List<ContractGradeDO> gradeDOS = contractGradeMapper
.selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId());
if (gradeDOS != null && !gradeDOS.isEmpty()) {
formula.setGrades(BeanUtils.toBean(gradeDOS, ContractGradeRespDTO.class));
formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespDTO.class));
}
// 查询并设置调整价配置
List<ContractDeductDO> deductDOS = contractDeductMapper
.selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId());
if (deductDOS != null && !deductDOS.isEmpty()) {
formula.setDeducts(BeanUtils.toBean(deductDOS, ContractDeductRespDTO.class));
formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespDTO.class));
}
// 查询并设置市场价配置
List<ContractPriceDO> priceDOS = contractPriceMapper
.selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId());
if (priceDOS != null && !priceDOS.isEmpty()) {
formula.setPrices(BeanUtils.toBean(priceDOS, ContractPriceRespDTO.class));
formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespDTO.class));
}
});
}
return formulas;
// 查询并设置参数降级规则
List<ContractDemoteDO> demoteDOS = contractDemoteMapper
.selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId());
if (demoteDOS != null && !demoteDOS.isEmpty()) {
respDTO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespDTO.class));
}
// 查询并设置品位不计价规则
List<ContractNotDO> notDOS = contractNotMapper
.selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId());
if (notDOS != null && !notDOS.isEmpty()) {
respDTO.setNots(BeanUtils.toBean(notDOS, NotRespDTO.class));
}
return respDTO;
}
@Override
@@ -804,12 +841,39 @@ public class ContractServiceImpl implements ContractService {
ErpContractDO erpContractDO = new ErpContractDO();
// 合同主信息表主键:BSE_CTRT_MAIN
erpContractDO.setContractMainId(id);
// 操作标识:OPTN_ID TODO
/*
1、先调用009ERP接口查询合同信息
2、如果009接口返回值中“合同编号”字段存在值并且与传入的相同则OPTN_ID值为“1”
3、如果009接口返回值中“合同编号”字段不存在值根据合同主键查询映射表中是否存在没有删除的数据如果有值为“1”如果没有值为“0”
*/
// 操作标识:OPTN_ID
// 1、先调用009ERP接口查询合同信息
ErpContractPageReqVO pageReqVO = new ErpContractPageReqVO();
// BUKRS 合同签订主体公司代码 收支方向判断如果为“支出”传“ERP甲方公司编码”反之传“ERP乙方公司编码”
// PARTNER 对方客商编号 收支方向判断如果为“支出”传“ERP乙方公司编码”反之传“ERP甲方公司编码”
// INEDR 1-借(销售合同)2-贷(采购合同) 收支方向判断如果为“支出”传“2”反之传“1”
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("2");
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
pageReqVO.setContractSignNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
pageReqVO.setContractCategory("1");
}
// ZHTBH 合同编号 合同编号:CTRT_PPR_NUM
pageReqVO.setContractTypeNumber(contractMainDO.getContractPaperNumber());
// ZHTMC 合同名称 合同名称:CTRT_NAME
pageReqVO.setContractName(contractMainDO.getContractName());
PageResult<ErpContractDO> erpContractPage = erpContractService.getErpContractPage(pageReqVO);
if (erpContractPage.getTotal() > 0) {
// 2、如果009接口返回值中“合同编号”字段存在值并且与传入的相同则OPTN_ID值为“1”
erpContractDO.setOperationId("1");
} else {
// 3、如果009接口返回值中“合同编号”字段不存在值根据合同主键查询映射表中是否存在没有删除的数据如果有值为“1”如果没有值为“0”
/*ErpContractDO erpContract = erpContractService.getErpContractByMainId(id);
if (erpContract != null) {
erpContractDO.setOperationId("1");
} else {
erpContractDO.setOperationId("0");
}*/
}
// erpContractDO.setOperationId();
// 合同编号:CTRT_PPR_NUM
erpContractDO.setContractPaperNumber(contractMainDO.getContractPaperNumber());
// 合同名称:CTRT_NAME
@@ -823,15 +887,25 @@ public class ContractServiceImpl implements ContractService {
// 是否虚拟合同:IS_VRTL_CTRT
erpContractDO.setIsVirtualContract(contractMainDO.getContractVirtual());
// 客商编号:SPLR_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司编码”反之为“ERP甲方公司编码”
// erpContractDO.setSupplierNumber();
// 客商名称:SPLR_NAME 根据合同主表的收支方向判断如果为“支出”值为“ERP乙方公司名称”反之为“ERP甲方公司名称”
// erpContractDO.setSupplierName();
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractDO.setSupplierNumber(contractMainDO.getSalesCompanyNumber());
erpContractDO.setSupplierName(contractMainDO.getSalesCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractDO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber());
erpContractDO.setSupplierName(contractMainDO.getPurchaseCompanyName());
}
// 代理方:AGT
erpContractDO.setAgent(contractMainDO.getAgent());
// 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司编码”反之为“ERP乙方公司编码”
// erpContractDO.setContractImplementNumber();
// 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断如果为“支出”值为“ERP甲方公司名称”反之为“ERP乙方公司名称”
// erpContractDO.setContractSignNumber();
if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) {
erpContractDO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber());
erpContractDO.setContractSignNumber(contractMainDO.getPurchaseCompanyName());
} else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) {
erpContractDO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber());
erpContractDO.setContractSignNumber(contractMainDO.getSalesCompanyName());
}
// 合同签订日期:SGN_DT
if (contractMainDO.getSignDate() != null) {
erpContractDO.setSignDate(contractMainDO.getSignDate().toLocalDate());
@@ -855,9 +929,9 @@ public class ContractServiceImpl implements ContractService {
// 变更后合同总金额(本位币-含税):CHG_BSC_AMT
erpContractDO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount());
// 合同状态编号:STS_NUM 参照060接口
// erpContractDO.setStatusNumber();
erpContractDO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode());
// 合同状态名称:STS_NAME 参照060接口
// erpContractDO.setStatusName();
erpContractDO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel());
// 是否有预付款:IS_PPYM
erpContractDO.setIsPrepayment(contractMainDO.getHasPrepayment());
// 预付款比例:PPYM_RTIO

View File

@@ -53,6 +53,14 @@ public interface ErpContractService {
*/
ErpContractDO getErpContract(Long id);
/**
* 获得ERP合同映射通过合同主信息主键
*
* @param contractMainId 合同主信息主键
* @return ERP合同映射
*/
ErpContractDO getErpContractByMainId(Long contractMainId);
/**
* 获得ERP合同映射分页
*

View File

@@ -6,30 +6,26 @@ import com.alibaba.fastjson.JSONObject;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zt.plat.framework.common.pojo.PageResult;
import com.zt.plat.framework.common.util.object.BeanUtils;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveOrderDO;
import com.zt.plat.module.erp.utils.ErpConfig;
import com.zt.plat.module.erp.utils.MyRedisConfig;
import com.zt.plat.module.erp.enums.OftenEnum;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractPageReqVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractRespVO;
import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO;
import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO;
import com.zt.plat.module.erp.dal.mysql.erp.ErpContractMapper;
import com.zt.plat.module.erp.enums.OftenEnum;
import com.zt.plat.module.erp.utils.ErpConfig;
import com.zt.plat.module.erp.utils.MyRedisConfig;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception;
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS;
import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS;
import static dm.jdbc.util.DriverUtil.log;
@@ -102,6 +98,11 @@ public class ErpContractServiceImpl implements ErpContractService {
return erpContractMapper.selectById(id);
}
@Override
public ErpContractDO getErpContractByMainId(Long contractMainId) {
return erpContractMapper.selectOne("CTRT_MAIN_ID", contractMainId);
}
@Override
public PageResult<ErpContractDO> getErpContractPage(ErpContractPageReqVO pageReqVO) {
OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息;