diff --git a/pom.xml b/pom.xml index 3ca9834..705a25b 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.41 + 3.0.42 17 ${java.version} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java new file mode 100644 index 0000000..e43bc89 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.base.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.web.bind.annotation.GetMapping; + +import java.util.List; + +@FeignClient(name = ApiConstants.NAME) +@Tag(name = "RPC 服务 - base") +public interface BaseApi { + + String PREFIX = ApiConstants.PREFIX + "/base"; + + @GetMapping(PREFIX + "/getNoPage") + @Operation(summary = "数据查询") + List getNoPage(@Valid AccountRespDto respVO); +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java new file mode 100644 index 0000000..00c43af --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountRespDto.java @@ -0,0 +1,35 @@ +package com.zt.plat.module.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "RPC 服务 DTO") +@Data +public class AccountRespDto { + private Long id; + + private String type; + + private String accountName; + + private String bankAccount; + + private String accountNumber; + + private String taxNumber; + + private LocalDateTime createTime; + + private String isEnable; + + private String customerNumber; + + private String customerName; + + private String address; + + private String phone; + +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java new file mode 100644 index 0000000..7fe892b --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ApiConstants.java @@ -0,0 +1,24 @@ +package com.zt.plat.module.base.enums; + +import com.zt.plat.framework.common.enums.RpcConstants; + +/** + * API 相关的枚举 + * + * @author ZT + */ +public class ApiConstants { + + /** + * 服务名 + * + * 注意,需要保证和 spring.application.name 保持一致 + */ + public static final String NAME = "base-server"; + + public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/base"; + + public static final String VERSION = "1.0.0"; + + public static final String TABLE_FIELD_SPLY_ERP_CPN_NUM = "NUM"; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java new file mode 100644 index 0000000..b3cf9d8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java @@ -0,0 +1,31 @@ +package com.zt.plat.module.base.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountRespDto; +import com.zt.plat.module.base.dal.dataobject.base.AccountDO; +import com.zt.plat.module.base.service.base.AccountService; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +/** + * ERP Api 实现类 + * + * @author ZT + * @author jason + */ +@RestController +@Validated +public class BaseApiImpl implements BaseApi { + + @Resource + private AccountService accountService; + + @Override + public List getNoPage(AccountRespDto respVO) { + return accountService.getAccountNoPage(respVO); + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java index efe89ce..93a5de8 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/AccountMapper.java @@ -3,10 +3,14 @@ package com.zt.plat.module.base.dal.mysql.base; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; +import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.dal.dataobject.base.AccountDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 账户条款 Mapper * @@ -31,4 +35,18 @@ public interface AccountMapper extends BaseMapperX { .orderByDesc(AccountDO::getId)); } + default List selectNoPage(AccountRespDto reqVO){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(AccountDO::getType, reqVO.getType()) + .likeIfPresent(AccountDO::getAccountName, reqVO.getAccountName()) + .likeIfPresent(AccountDO::getAddress, reqVO.getAddress()) + .likeIfPresent(AccountDO::getPhone, reqVO.getPhone()) + .eqIfPresent(AccountDO::getBankAccount, reqVO.getBankAccount()) + .eqIfPresent(AccountDO::getCustomerName, reqVO.getCustomerName()) + .eqIfPresent(AccountDO::getCustomerNumber, reqVO.getCustomerNumber()) + .eqIfPresent(AccountDO::getIsEnable, reqVO.getIsEnable()) + .eqIfPresent(AccountDO::getAccountNumber, reqVO.getAccountNumber()) + .eqIfPresent(AccountDO::getTaxNumber, reqVO.getTaxNumber()) + .orderByDesc(AccountDO::getId)); + } } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java index c3d7a40..c5be973 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/CompanyRelativityMapper.java @@ -7,6 +7,7 @@ import com.zt.plat.module.base.controller.admin.base.vo.CompanyRelativityPageReq import com.zt.plat.module.base.dal.dataobject.base.CompanyRelaDeptDO; import com.zt.plat.module.base.dal.dataobject.base.CompanyRelativityDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -27,4 +28,6 @@ public interface CompanyRelativityMapper extends BaseMapperX getPageByReq(CompanyRelativityPageReqVO pageReqVO); + + void removeByIds(@Param("ids")List ids); } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java index b45cc72..2ab8b02 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountService.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.service.base; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountSaveReqVO; @@ -67,4 +68,6 @@ public interface AccountService { * @param saveReqVOS 账户条款 */ void enableAccountList(List saveReqVOS); + + List getAccountNoPage(AccountRespDto respVO); } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java index b24d576..0860557 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/AccountServiceImpl.java @@ -3,6 +3,7 @@ package com.zt.plat.module.base.service.base; import cn.hutool.core.collection.CollUtil; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountRespVO; import com.zt.plat.module.base.controller.admin.base.vo.AccountSaveReqVO; @@ -96,4 +97,9 @@ public class AccountServiceImpl implements AccountService { } } + @Override + public List getAccountNoPage(AccountRespDto respVO) { + List entityList = accountMapper.selectNoPage(respVO); + return BeanUtils.toBean(entityList, AccountRespDto.class); + } } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java index 25c05d3..95efc20 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/CompanyRelativityServiceImpl.java @@ -64,7 +64,7 @@ public class CompanyRelativityServiceImpl implements CompanyRelativityService { // 校验存在 validateCompanyRelativityExists(ids); // 删除 - companyRelativityMapper.deleteByIds(ids); + companyRelativityMapper.removeByIds(ids); } private void validateCompanyRelativityExists(List ids) { diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml index 90fdc68..b1a1c06 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/CompanyRelativityMapper.xml @@ -43,4 +43,11 @@ and d.DEPT_SOURCE = #{departmentSource} + + + delete from SPLY_CPN_REL where ID in + + #{item} + + \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java index c41c670..1a83532 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ErrorCodeConstants.java @@ -23,4 +23,5 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_STATUS_NOT_APPROVAL = new ErrorCode(1_027_000_008, "{}状态合同不允许审核"); ErrorCode CONTRACT_ERP_COMPANY_PLEASE_BIND = new ErrorCode(1_027_000_009, "请先绑定{}ERP公司信息"); ErrorCode CONTRACT_STATUS_NOT_DELETE = new ErrorCode(1_027_000_010, "{}状态合同不允许删除"); + ErrorCode CONTRACT_ERP_RCV_DLVY_NOT_EXISTS = new ErrorCode(1_027_000_010, "不存在的收支类型或收支类型为空"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java index 3c2dc38..dbb03e3 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/TableFieldConstants.java @@ -20,6 +20,7 @@ public class TableFieldConstants { public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM = "CTRT_PPR_NUM"; public static final String BSE_CTRT_MAIN_CTRT_PPR_NUM_LABEL = "合同编号"; // 甲方公司编号 + public static final String BSE_CTRT_MAIN_PRCH_CPN_NUM = "PRCH_CPN_NUM"; public static final String BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL = "甲方公司编号"; // 甲方公司名称 public static final String BSE_CTRT_MAIN_PRCH_CPN_NAME_LABEL = "甲方公司名称"; @@ -28,6 +29,7 @@ public class TableFieldConstants { // 甲方法定代表人 public static final String BSE_CTRT_MAIN_PRCH_LDR_LABEL = "甲方法定代表人"; // 乙方公司编号 + public static final String BSE_CTRT_MAIN_SALE_CPN_NUM = "SALE_CPN_NUM_LABEL"; public static final String BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL = "乙方公司编号"; // 乙方公司名称 public static final String BSE_CTRT_MAIN_SALE_CPN_NAME_LABEL = "乙方公司名称"; @@ -135,4 +137,10 @@ public class TableFieldConstants { /* 实例条款值表 */ // 关联实例主键 public static final String BSE_TMPL_INSC_ITM_INSC_ID = "INSC_ID"; + + /* 业务关联表 */ + // 上游主键 + public static final String BSE_SYS_REL_UP_ID = "UP_ID"; + // 下游主键 + public static final String BSE_SYS_REL_DOWN_ID = "DOWN_ID"; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java index 274dc75..d2aa970 100644 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -5,6 +5,9 @@ package com.zt.plat.module.contractorder.enums.contract; */ public enum DictEnum { + /** 业务关联类型 */ + BSE_SYS_REL_TP_ORDER("订单","ORDER",null), + BSE_SYS_REL_TP_CONTRACT("合同","CONTRACT",null), /** 提交ERP合同状态 */ SUBMIT_ERP_CTRT_STS_EF("正在执行","EF","其它所有状态"), SUBMIT_ERP_CTRT_STS_BFZT("部分暂停","BFZT",null), diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java index 214a8a8..2509b20 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/ContractController.java @@ -100,28 +100,28 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/download") - @Operation(summary = "下载文件") + @Operation(summary = "下载文件 TODO") @PreAuthorize("@ss.hasPermission('base:contract:download')") public void download() { } // TODO @PostMapping("/preview") - @Operation(summary = "预览文件") + @Operation(summary = "预览文件 TODO") @PreAuthorize("@ss.hasPermission('base:contract:preview')") public void preview() { } // TODO @PostMapping("/complete") - @Operation(summary = "完结") + @Operation(summary = "完结 TODO") @PreAuthorize("@ss.hasPermission('base:contract:complete')") public void complete() { } // TODO @PostMapping("/archive") - @Operation(summary = "归档") + @Operation(summary = "归档 TODO") @PreAuthorize("@ss.hasPermission('base:contract:archive')") public void archive() { } @@ -135,7 +135,7 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/approval") - @Operation(summary = "合同审批") + @Operation(summary = "合同审批 TODO") @PreAuthorize("@ss.hasPermission('base:contract:approval')") public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { return success(contractService.approval(reqVO)); @@ -143,7 +143,7 @@ public class ContractController implements BusinessControllerMarker { // TODO @PostMapping("/view/approval") - @Operation(summary = "查看审批") + @Operation(summary = "查看审批 TODO") @PreAuthorize("@ss.hasPermission('base:contract:approval')") public void viewApproval() { } @@ -154,4 +154,39 @@ public class ContractController implements BusinessControllerMarker { public CommonResult> submitErp(@RequestBody List ids) { return success(contractService.submitErp(ids)); } + + @GetMapping("/list/up-not-relation") + @Operation(summary = "获得上游未关联合同列表") + @PreAuthorize("@ss.hasPermission('base:contract:relation')") + public CommonResult> getListUpNotRelation(@RequestParam("id") Long id) { + return success(contractService.getListUpNotRelation(id)); + } + + @GetMapping("/list/down-not-relation") + @Operation(summary = "获得下游未关联合同列表") + @PreAuthorize("@ss.hasPermission('base:contract:relation')") + public CommonResult> getListDownNotRelation(@RequestParam("id") Long id) { + return success(contractService.getListDownNotRelation(id)); + } + + @GetMapping("/get/up-relation") + @Operation(summary = "获得上游关联的合同数据") + @PreAuthorize("@ss.hasPermission('base:contract:relation')") + public CommonResult getUpRelation(@RequestParam("id") Long id) { + return success(contractService.getUpRelation(id)); + } + + @GetMapping("/get/down-relation") + @Operation(summary = "获得下游关联的合同数据") + @PreAuthorize("@ss.hasPermission('base:contract:relation')") + public CommonResult getDownRelation(@RequestParam("id") Long id) { + return success(contractService.getDownRelation(id)); + } + + @PostMapping("/relation") + @Operation(summary = "关联合同") + @PreAuthorize("@ss.hasPermission('base:contract:relation')") + public CommonResult relation(@RequestBody RelationReqVo reqVo) { + return success(contractService.relation(reqVo)); + } } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java index 75f8b08..0555c4b 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import cn.hutool.json.JSONArray; import com.alibaba.excel.annotation.ExcelProperty; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataSaveReqVO; import io.swagger.v3.oas.annotations.media.Schema; @@ -34,7 +35,7 @@ public class ContractSaveReqVO { private String fileObject; @Schema(description = "其它附件对象存储") - private String fileObjectOther; + private JSONArray fileObjectOther; // 合同基本信息 @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。", example = "甲方公司编号") diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationReqVo.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationReqVo.java new file mode 100644 index 0000000..2781618 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationReqVo.java @@ -0,0 +1,18 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Schema(description = "管理后台 - 合同关联请求对象 Request VO") +@Data +public class RelationReqVo { + + @Schema(description = "上游主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "上游主键不能为空") + private Long upId; + + @Schema(description = "下游主键", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "下游主键不能为空") + private Long downId; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java new file mode 100644 index 0000000..0891367 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/SystemRelativityDO.java @@ -0,0 +1,50 @@ +package com.zt.plat.module.contractorder.dal.dataobject.contract; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +/** + * 业务关联 DO + * + * @author 后台管理-1 + */ +@TableName("bse_sys_rel") +@KeySequence("bse_sys_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class SystemRelativityDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 上游主键 + */ + @TableField("UP_ID") + private Long upId; + /** + * 下游主键 + */ + @TableField("DOWN_ID") + private Long downId; + /** + * 方式系统;内关联/系统外关联 + */ + @TableField("WY") + private String way; + /** + * 类型;合同/订单 + */ + @TableField("STS") + private String status; +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java new file mode 100644 index 0000000..c124c2e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/SystemRelativityMapper.java @@ -0,0 +1,14 @@ +package com.zt.plat.module.contractorder.dal.mysql.contract; + +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 业务关联 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface SystemRelativityMapper extends BaseMapperX { +} \ No newline at end of file diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java index 2c3b57c..bae6e20 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractService.java @@ -119,4 +119,44 @@ public interface ContractService { * @return 合同信息 */ ContractRespVO getBySystemContractNumber(String systemContractNumber); + + /** + * 获得上游未关联合同列表 + * + * @param id 合同ID + * @return 上游未关联的合同列表 + */ + List getListUpNotRelation(Long id); + + /** + * 获得下游未关联合同列表 + * + * @param id 合同ID + * @return 下游未关联的合同列表 + */ + List getListDownNotRelation(Long id); + + /** + * 获得上游关联的合同数据 + * + * @param id 合同ID + * @return 关联的上游合同数据 + */ + ContractRespVO getUpRelation(Long id); + + /** + * 获得下游关联的合同数据 + * + * @param id 合同ID + * @return 关联的下游合同数据 + */ + ContractRespVO getDownRelation(Long id); + + /** + * 关联合同 + * + * @param reqVo 上下游合同ID + * @return 关联结果 + */ + Boolean relation(RelationReqVo reqVo); } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java index ffdfd65..a363f61 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/contract/ContractServiceImpl.java @@ -42,6 +42,7 @@ import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; import java.util.stream.Collectors; @@ -93,6 +94,8 @@ public class ContractServiceImpl implements ContractService { private ErpCompanyService erpCompanyService; @Resource private ErpContractService erpContractService; + @Resource + private SystemRelativityMapper systemRelativityMapper; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -462,6 +465,194 @@ public class ContractServiceImpl implements ContractService { return respVO; } + @Override + public List getListUpNotRelation(Long id) { + + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 收支性质 + String direction = contractMainDO.getDirection(); + // 甲方公司编号 + String purchaseCompanyNumber = contractMainDO.getPurchaseCompanyNumber(); + // 乙方公司编号 + String salesCompanyNumber = contractMainDO.getSalesCompanyNumber(); + + // 已关联的上游合同id集合 + List systemRelativityDOS = systemRelativityMapper.selectList(); + LinkedHashSet relationIds = new LinkedHashSet<>(); + if (systemRelativityDOS!= null && !systemRelativityDOS.isEmpty()) { + systemRelativityDOS.forEach(systemRelativityDO -> { + relationIds.add(systemRelativityDO.getUpId()); + }); + } + + // 返回结果集 + List result = new ArrayList<>(); + if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(direction)) { // 收入 + // 如果“收支性质”字段为收入,用“甲方公司编号”字段筛选“合同主信息”表中字段等于“乙方公司编号”的数据 + if (StringUtils.isEmpty(purchaseCompanyNumber)) { + // 甲方公司编号不存在 + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL); + } + // 查询条件 + LambdaQueryWrapperX conditon = new LambdaQueryWrapperX<>(); + conditon.eq(ContractMainDO::getSalesCompanyNumber, purchaseCompanyNumber); + if (!relationIds.isEmpty()) { + conditon.notIn(ContractMainDO::getId, relationIds); + } + + // 查询 + List contractMainDOS = contractMainMapper.selectList(conditon); + result = BeanUtils.toBean(contractMainDOS, ContractRespVO.class); + } else if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(direction)){ // 支出 + // 如果“收支性质”字段为支出,用“乙方公司编号”字段筛选“合同主信息”表中字段等于“甲方公司编号”的数据 + if (StringUtils.isEmpty(salesCompanyNumber)) { + // 乙方公司编号不存在 + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL); + } + + // 查询条件 + LambdaQueryWrapperX conditon = new LambdaQueryWrapperX<>(); + conditon.eq(ContractMainDO::getPurchaseCompanyNumber, salesCompanyNumber); + if (!relationIds.isEmpty()) { + conditon.notIn(ContractMainDO::getId, relationIds); + } + + // 查询 + List contractMainDOS = contractMainMapper.selectList(conditon); + result = BeanUtils.toBean(contractMainDOS, ContractRespVO.class); + } else { + // 不存在的收支类型或收支类型为空 + throw exception(CONTRACT_ERP_RCV_DLVY_NOT_EXISTS); + } + + return result; + } + + @Override + public List getListDownNotRelation(Long id) { + + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 收支性质 + String direction = contractMainDO.getDirection(); + // 甲方公司编号 + String purchaseCompanyNumber = contractMainDO.getPurchaseCompanyNumber(); + // 乙方公司编号 + String salesCompanyNumber = contractMainDO.getSalesCompanyNumber(); + + // 已关联的上游合同id集合 + List systemRelativityDOS = systemRelativityMapper.selectList(); + LinkedHashSet relationIds = new LinkedHashSet<>(); + if (systemRelativityDOS!= null && !systemRelativityDOS.isEmpty()) { + systemRelativityDOS.forEach(systemRelativityDO -> { + relationIds.add(systemRelativityDO.getDownId()); + }); + } + + // 返回结果集 + List result = new ArrayList<>(); + if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(direction)) { // 收入 + // 如果“收支性质”字段为收入,用“甲方公司编号”字段筛选“合同主信息”表中字段等于“乙方公司编号”的数据 + if (StringUtils.isEmpty(purchaseCompanyNumber)) { + // 甲方公司编号不存在 + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL); + } + // 查询条件 + LambdaQueryWrapperX conditon = new LambdaQueryWrapperX<>(); + conditon.eq(ContractMainDO::getSalesCompanyNumber, purchaseCompanyNumber); + if (!relationIds.isEmpty()) { + conditon.notIn(ContractMainDO::getId, relationIds); + } + + // 查询 + List contractMainDOS = contractMainMapper.selectList(conditon); + result = BeanUtils.toBean(contractMainDOS, ContractRespVO.class); + } else if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(direction)){ // 支出 + // 如果“收支性质”字段为支出,用“乙方公司编号”字段筛选“合同主信息”表中字段等于“甲方公司编号”的数据 + if (StringUtils.isEmpty(salesCompanyNumber)) { + // 乙方公司编号不存在 + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL); + } + + // 查询条件 + LambdaQueryWrapperX conditon = new LambdaQueryWrapperX<>(); + conditon.eq(ContractMainDO::getPurchaseCompanyNumber, salesCompanyNumber); + if (!relationIds.isEmpty()) { + conditon.notIn(ContractMainDO::getId, relationIds); + } + + // 查询 + List contractMainDOS = contractMainMapper.selectList(conditon); + result = BeanUtils.toBean(contractMainDOS, ContractRespVO.class); + } else { + // 不存在的收支类型或收支类型为空 + throw exception(CONTRACT_ERP_RCV_DLVY_NOT_EXISTS); + } + + return result; + } + + @Override + public ContractRespVO getUpRelation(Long id) { + + // 查询合同信息 + if (contractMainMapper.selectById(id) == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 查询关联表 + SystemRelativityDO systemRelativityDO = systemRelativityMapper.selectOne(TableFieldConstants.BSE_SYS_REL_DOWN_ID, id); + if (systemRelativityDO == null) { + return null; + } + + // 上游合同ID + Long upId = systemRelativityDO.getUpId(); + + // 获取上游合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(upId); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + return BeanUtils.toBean(contractMainDO, ContractRespVO.class); + } + + @Override + public ContractRespVO getDownRelation(Long id) { + + // 查询合同信息 + if (contractMainMapper.selectById(id) == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 查询关联表 + SystemRelativityDO systemRelativityDO = systemRelativityMapper.selectOne(TableFieldConstants.BSE_SYS_REL_UP_ID, id); + if (systemRelativityDO == null) { + return null; + } + + // 下游合同ID + Long upId = systemRelativityDO.getUpId(); + + // 获取下游合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(upId); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + return BeanUtils.toBean(contractMainDO, ContractRespVO.class); + } + @Transactional @Override public Boolean update(ContractSaveReqVO reqVO) { @@ -859,26 +1050,6 @@ public class ContractServiceImpl implements ContractService { return ""; } - /** - * 获取合同ID集合 - * - * @param contractName 合同名称 - * @param contractPaperNumber 合同编号 - * @return 合同ID集合 - */ - private List getContractIds(String contractName, String contractPaperNumber) { - List contractIds = new ArrayList<>(); - List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() - .likeIfPresent(ContractMainDO::getContractName, contractName) - .likeIfPresent(ContractMainDO::getContractPaperNumber, contractPaperNumber)); - if (CollectionUtils.isNotEmpty(contractMainDOS)) { - contractIds = contractMainDOS.stream() - .map(contractMainDO -> contractMainDO.getId()) - .collect(Collectors.toList()); - } - return contractIds; - } - @Override public List getNots(NotsQueryReqVO queryReqVO) { // 查合同ID集合 @@ -1061,22 +1232,22 @@ public class ContractServiceImpl implements ContractService { // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setSupplierNumber(contractMainDO.getSalesCompanyNumber()); - erpContractVO.setSupplierName(contractMainDO.getSalesCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getErpSalesCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setSupplierNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractVO.setSupplierName(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setSupplierNumber(contractMainDO.getErpPurchaseCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getErpPurchaseCompanyName()); } // 代理方:AGT erpContractVO.setAgent(contractMainDO.getAgent()); // 合同实施主体编号:CTRT_IMPL_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司编码”,反之为“ERP乙方公司编码” // 合同签订主体编号:CTRT_SGN_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP甲方公司名称”,反之为“ERP乙方公司名称” if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setContractImplementNumber(contractMainDO.getPurchaseCompanyNumber()); - erpContractVO.setContractSignNumber(contractMainDO.getPurchaseCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getErpPurchaseCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpPurchaseCompanyName()); } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { - erpContractVO.setContractImplementNumber(contractMainDO.getSalesCompanyNumber()); - erpContractVO.setContractSignNumber(contractMainDO.getSalesCompanyName()); + erpContractVO.setContractImplementNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpSalesCompanyName()); } // 合同签订日期:SGN_DT if (contractMainDO.getSignDate() != null) { @@ -1171,6 +1342,16 @@ public class ContractServiceImpl implements ContractService { return result; } + @Override + public Boolean relation(RelationReqVo reqVo) { + SystemRelativityDO saveDO = new SystemRelativityDO(); + saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_CONTRACT.getCode()); + saveDO.setUpId(reqVo.getUpId()); + saveDO.setDownId(reqVo.getDownId()); + int insert = systemRelativityMapper.insert(saveDO); + return insert > 0; + } + /** * 校验合同内容 * @@ -1393,4 +1574,24 @@ public class ContractServiceImpl implements ContractService { } return numPrefix + "-" + num; } + + /** + * 获取合同ID集合 + * + * @param contractName 合同名称 + * @param contractPaperNumber 合同编号 + * @return 合同ID集合 + */ + private List getContractIds(String contractName, String contractPaperNumber) { + List contractIds = new ArrayList<>(); + List contractMainDOS = contractMainMapper.selectList(new LambdaQueryWrapperX() + .likeIfPresent(ContractMainDO::getContractName, contractName) + .likeIfPresent(ContractMainDO::getContractPaperNumber, contractPaperNumber)); + if (CollectionUtils.isNotEmpty(contractMainDOS)) { + contractIds = contractMainDOS.stream() + .map(contractMainDO -> contractMainDO.getId()) + .collect(Collectors.toList()); + } + return contractIds; + } } diff --git a/zt-module-erp/zt-module-erp-server/pom.xml b/zt-module-erp/zt-module-erp-server/pom.xml index 0b13158..a758cf6 100644 --- a/zt-module-erp/zt-module-erp-server/pom.xml +++ b/zt-module-erp/zt-module-erp-server/pom.xml @@ -42,6 +42,12 @@ ${revision} + + com.zt.plat + zt-module-base-api + ${revision} + + com.zt.plat diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java index acb5473..91ddd40 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpCompanyController.java @@ -125,4 +125,12 @@ public class ErpCompanyController { return success(TEST); } + @PostMapping("/test2") + @Operation(summary = "获取base的账户条款") + @PreAuthorize("@ss.hasPermission('sply:erp-company:get')") + public CommonResult test2() { + String TEST = erpCompanyService.test2(); + return success(TEST); + } + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java index c69ba0a..b79382b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyService.java @@ -74,4 +74,6 @@ public interface ErpCompanyService { void test(); String test1(); + + String test2(); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java index cc4993d..c01fb1c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCompanyServiceImpl.java @@ -7,6 +7,8 @@ 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.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountRespDto; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanyRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCompanySaveReqVO; @@ -57,6 +59,8 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { private String erpAddress; @Value("${erp.sapsys}") private String sapsys; + @Resource + private BaseApi baseApi; @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { @@ -289,4 +293,12 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { return url + requestEntity; } } + + @Override + public String test2() { + AccountRespDto respVO = new AccountRespDto(); + respVO.setCustomerNumber("50000760"); + List dtos = baseApi.getNoPage(respVO); + return dtos.toString(); + } } \ No newline at end of file