diff --git a/base-server/src/main/resources/application-dev.yml b/base-server/src/main/resources/application-dev.yml index 5203b43..9a9d579 100644 --- a/base-server/src/main/resources/application-dev.yml +++ b/base-server/src/main/resources/application-dev.yml @@ -105,7 +105,3 @@ justauth: prefix: 'social_auth_state:' # 缓存前缀,目前只对 Redis 缓存生效,默认 JUSTAUTH::STATE:: timeout: 24h # 超时时长,目前只对 Redis 缓存生效,默认 3 分钟 -erp: - address: hana-dev.yncic.com - sapsys: ZTDEV203 - diff --git a/base-server/src/main/resources/application.yml b/base-server/src/main/resources/application.yml index adccaac..7eb362a 100644 --- a/base-server/src/main/resources/application.yml +++ b/base-server/src/main/resources/application.yml @@ -114,8 +114,8 @@ zt: - ${spring.boot.admin.context-path}/** # 不处理 Spring Boot Admin 的请求 - ${management.endpoints.web.base-path}/** # 不处理 Actuator 的请求 swagger: - title: 管理后台 - description: 提供管理员管理的所有功能 + title: Base 模块 + description: 提供基础管理模块的所有功能 version: ${zt.info.version} tenant: # 多租户相关配置项 enable: true diff --git a/deployment.yaml b/deployment.yaml index 59cad93..1da2c08 100644 --- a/deployment.yaml +++ b/deployment.yaml @@ -61,7 +61,13 @@ spec: selector: app: base-server ports: - - protocol: TCP + - name: http + protocol: TCP port: 48100 targetPort: 48100 nodePort: 30097 + - name: xxl-job + protocol: TCP + port: 9999 + targetPort: 9999 + nodePort: 30197 diff --git a/pom.xml b/pom.xml index 0dc64ad..39e73ac 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ https://github.com/YunaiV/ruoyi-vue-pro - 3.0.39 + 3.0.42 17 ${java.version} @@ -212,6 +212,12 @@ liss + + qsj + + qsj + + 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..95f2e30 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/BaseApi.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.api; + +import com.zt.plat.module.api.dto.AccountDTO; +import com.zt.plat.module.api.dto.MaterialOtherDTO; +import com.zt.plat.module.base.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +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 + "/getAccountNoPage") + @Operation(summary = "账户条款数据不分页查询") + List getAccountNoPage(AccountDTO respVO); + + @GetMapping(PREFIX + "/getMaterialOtherNoPage") + @Operation(summary = "物料拓展关系数据不分页查询") + List getMaterialOtherNoPage(MaterialOtherDTO respVO); +} diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.java new file mode 100644 index 0000000..b013489 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/AccountDTO.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 AccountDTO { + 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/api/dto/MaterialOtherDTO.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/MaterialOtherDTO.java new file mode 100644 index 0000000..6e7e024 --- /dev/null +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/api/dto/MaterialOtherDTO.java @@ -0,0 +1,53 @@ +package com.zt.plat.module.api.dto; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 物料拓展数据分页 Request VO") +@Data +public class MaterialOtherDTO extends PageParam { + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + private String materialName; + + @Schema(description = "ERP物料编码") + private String erpMaterialNumber; + + @Schema(description = "ERP物料名称", example = "李四") + private String erpMaterialName; + + @Schema(description = "ERP物料计量单位") + private String unit; + + @Schema(description = "金属元素缩写") + private String abbreviation; + + @Schema(description = "金属元素名称", example = "赵六") + private String name; + + @Schema(description = "金属元素编码") + private String coding; + + @Schema(description = "品位单位") + private String gradeUnit; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "小数位数") + private Long decimalValue; + + @Schema(description = "是否启用") + private String isEnable; + +} \ No newline at end of file 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-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java index 98e530d..c36bd6e 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/base/enums/ErrorCodeConstants.java @@ -4,9 +4,7 @@ import com.zt.plat.framework.common.exception.ErrorCode; /** * base 错误码枚举类 - * * base 系统,使用 1-xxx-xxx-xxx 段 - * * @author ZT */ public interface ErrorCodeConstants { @@ -21,5 +19,14 @@ public interface ErrorCodeConstants { ErrorCode COMPANY_RELATIVITY_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); ErrorCode WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); ErrorCode FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); + ErrorCode TAX_NOT_EXISTS = new ErrorCode(1_001_000_001, "示例不存在"); + + + ErrorCode BUSINESS_RULE_NOT_EXISTS = new ErrorCode(1_027_100_001, "规则模型不存在"); + ErrorCode BUSINESS_ALGORITHM_NOT_EXISTS = new ErrorCode(1_027_100_002, "算法模型不存在"); + ErrorCode BUSINESS_DIMENSION_NOT_EXISTS = new ErrorCode(1_027_200_001, "经营指标维度不存在"); + ErrorCode BUSINESS_INDICATOR_NOT_EXISTS = new ErrorCode(1_027_200_002, "经营指标不存在"); + ErrorCode BUSINESS_DICTIONARY_TYPE_NOT_EXISTS = new ErrorCode(1_027_200_003, "业务字典类型不存在"); + ErrorCode BUSINESS_DEPARTMENT_INDICATOR_NOT_EXISTS = new ErrorCode(1_027_200_004, "部门持有指标不存在"); } diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/DeleteStatusEnum.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/DeleteStatusEnum.java index 9ad986a..0bbd92f 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/DeleteStatusEnum.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/DeleteStatusEnum.java @@ -7,7 +7,8 @@ public enum DeleteStatusEnum { STATUS_DRF(TmplStsEnum.DRAFT.getCode(), new HashSet<>() {{add(TmplStsEnum.DRAFT.getCode());}}), STATUS_PUB(TmplStsEnum.PUBLISHED.getCode(), new HashSet<>()), - STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>()); + STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>(){{add(TmplStsEnum.STOPPED.getCode());}}), + STATUS_START(TmplStsEnum.START.getCode(), new HashSet<>()); private final String code; diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java index 6b9efff..c2d0a63 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/ErrorCodeConstants.java @@ -5,10 +5,12 @@ import com.zt.plat.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { // ========== 示例模块 1-001-000-000 ========== + //模块 base 错误码区间[1-027-000-000 ~1-028-000-000) ErrorCode TMPL_TP_NOT_EXISTS = new ErrorCode(1_027_000_500, "模板分类不存在"); ErrorCode TMPL_FLD_NOT_EXISTS = new ErrorCode(1_027_000_501, "模板字段不存在"); ErrorCode TMPL_FLD_CODE_EXISTS = new ErrorCode(1_027_000_502, "字段编码已存在"); ErrorCode TMPL_ITM_NOT_EXISTS = new ErrorCode(1_027_000_503, "模板条款不存在"); + ErrorCode TMPL_ITM_NAME_EXISTS = new ErrorCode(1_027_000_503, "模板条款名字已存在"); ErrorCode TEMPLATE_INSTANCE_NOT_EXISTS = new ErrorCode(1_027_000_504, "模板实例不存在"); ErrorCode TMPL_TP_SATUS_ERROR = new ErrorCode(1_027_000_506, "状态变更失败"); ErrorCode TMPL_TP_DEl_ERROR = new ErrorCode(1_027_000_507, "模版分类删除失败"); @@ -23,6 +25,13 @@ public interface ErrorCodeConstants { ErrorCode NOT_FOUND_CLASS= new ErrorCode(1_027_000_516, "找不到对应的类"); ErrorCode UTIL_NOT_INIT= new ErrorCode(1_027_000_517, "工具类为未初始化"); ErrorCode TMPL_INS_FLD_CODE_EXISTS = new ErrorCode(1_027_000_518, "字段已存在"); + ErrorCode TMPL_ITM_EXISTS = new ErrorCode(1_027_000_519, "模板条款已存在"); + ErrorCode TMPL_INSC_BSN_REL_NOT_EXISTS = new ErrorCode(1_027_000_539, "模板实例与业务中间不存在"); + ErrorCode TEMPLATE_INSTANCE_FILE_NOT_EXISTS = new ErrorCode(1_027_000_520, "模板实例文件不存在"); + ErrorCode FILE_PULL_EER = new ErrorCode(1_027_000_521, "文件获取失败"); + ErrorCode FILE_UPLOAD_EER = new ErrorCode(1_027_000_523, "文件上传失败"); + ErrorCode TMPL_INSC_ITM_BSN_NOT_EXISTS = new ErrorCode(1_027_000_524, "业务实例条款不存在"); + ErrorCode TMPL_INSC_DAT_BSN_NOT_EXISTS = new ErrorCode(1_027_000_530, "业务实例字段不存在"); //Illegal operation type } diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/PublishStatusEnum.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/PublishStatusEnum.java index 42532de..338e970 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/PublishStatusEnum.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/PublishStatusEnum.java @@ -10,7 +10,8 @@ public enum PublishStatusEnum { STATUS_DRF(TmplStsEnum.DRAFT.getCode(), new HashSet<>() {{add(TmplStsEnum.DRAFT.getCode());}}), STATUS_PUB(TmplStsEnum.PUBLISHED.getCode(), new HashSet<>()), - STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>() ); + STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>() ), + STATUS_START(TmplStsEnum.START.getCode(), new HashSet<>() {{add(TmplStsEnum.START.getCode());}}); private final String code; diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/TmplStsEnum.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/TmplStsEnum.java index 04d6407..3f9ce64 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/TmplStsEnum.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/TmplStsEnum.java @@ -9,7 +9,8 @@ public enum TmplStsEnum { // 已发布状态 PUBLISHED("PUB", "已发布"), // 已停用状态 - STOPPED("STOP", "已停用"); + STOPPED("STOP", "已停用"), + START("START", "已启用"); // 获取状态编码 private final String code; diff --git a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/UpdateStatusEnum.java b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/UpdateStatusEnum.java index 2e34ef0..c2cd5bb 100644 --- a/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/UpdateStatusEnum.java +++ b/zt-module-base/zt-module-base-api/src/main/java/com/zt/plat/module/tmpltp/enums/UpdateStatusEnum.java @@ -10,10 +10,11 @@ public enum UpdateStatusEnum { add(TmplStsEnum.STOPPED.getCode()); }}), STATUS_PUB(TmplStsEnum.PUBLISHED.getCode(), new HashSet<>()), - STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>(){{ + STATUS_STOP(TmplStsEnum.STOPPED.getCode(), new HashSet<>() {{ add(TmplStsEnum.DRAFT.getCode()); add(TmplStsEnum.STOPPED.getCode()); - }}); + }}), + STATUS_START(TmplStsEnum.START.getCode(), new HashSet<>()); private final String code; diff --git a/zt-module-base/zt-module-base-server/pom.xml b/zt-module-base/zt-module-base-server/pom.xml index 44d9d4e..acd97ea 100644 --- a/zt-module-base/zt-module-base-server/pom.xml +++ b/zt-module-base/zt-module-base-server/pom.xml @@ -42,6 +42,12 @@ ${revision} + + com.zt.plat + zt-module-erp-api + ${revision} + + com.zt.plat 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..62591c3 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/api/BaseApiImpl.java @@ -0,0 +1,39 @@ +package com.zt.plat.module.base.api; + +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountDTO; +import com.zt.plat.module.api.dto.MaterialOtherDTO; +import com.zt.plat.module.base.service.base.AccountService; +import com.zt.plat.module.base.service.base.MaterialOtherService; +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; + + @Resource + private MaterialOtherService materialOtherService; + + @Override + public List getAccountNoPage(AccountDTO respVO) { + return accountService.getAccountNoPage(respVO); + } + + @Override + public List getMaterialOtherNoPage(MaterialOtherDTO respVO) { + return materialOtherService.getMaterialOtherNoPage(respVO); + } +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/MaterialInfomationController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/MaterialInfomationController.java index d45b7a5..12abb3d 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/MaterialInfomationController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/MaterialInfomationController.java @@ -101,4 +101,12 @@ public class MaterialInfomationController { BeanUtils.toBean(list, MaterialInfomationRespVO.class)); } + @GetMapping("/getOneTest") + @Operation(summary = "测试获取生产版本") + @PreAuthorize("@ss.hasPermission('base:material-infomation:query')") + public CommonResult getTest() { + String getOneTest = materialInfomationService.getOneTest(); + return success(getOneTest); + } + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/TaxController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/TaxController.java new file mode 100644 index 0000000..0e8ff36 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/TaxController.java @@ -0,0 +1,105 @@ +package com.zt.plat.module.base.controller.admin.base; + +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; +import com.zt.plat.framework.common.pojo.PageParam; +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.base.controller.admin.base.vo.TaxPageReqVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxRespVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.base.TaxDO; +import com.zt.plat.module.base.service.base.TaxService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +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 static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +@Tag(name = "管理后台 - 税码信息") +@RestController +@RequestMapping("/base/tax") +@Validated +public class TaxController implements BusinessControllerMarker { + + + @Resource + private TaxService taxService; + + @PostMapping("/create") + @Operation(summary = "创建税码信息") + @PreAuthorize("@ss.hasPermission('base:tax:create')") + public CommonResult createTax(@Valid @RequestBody TaxSaveReqVO createReqVO) { + return success(taxService.createTax(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新税码信息") + @PreAuthorize("@ss.hasPermission('base:tax:update')") + public CommonResult updateTax(@Valid @RequestBody TaxSaveReqVO updateReqVO) { + taxService.updateTax(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除税码信息") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:tax:delete')") + public CommonResult deleteTax(@RequestParam("id") Long id) { + taxService.deleteTax(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除税码信息") + @PreAuthorize("@ss.hasPermission('base:tax:delete')") + public CommonResult deleteTaxList(@RequestBody BatchDeleteReqVO req) { + taxService.deleteTaxListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得税码信息") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:tax:query')") + public CommonResult getTax(@RequestParam("id") Long id) { + TaxDO tax = taxService.getTax(id); + return success(BeanUtils.toBean(tax, TaxRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得税码信息分页") + @PreAuthorize("@ss.hasPermission('base:tax:query')") + public CommonResult> getTaxPage(@Valid TaxPageReqVO pageReqVO) { + PageResult pageResult = taxService.getTaxPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TaxRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出税码信息 Excel") + @PreAuthorize("@ss.hasPermission('base:tax:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTaxExcel(@Valid TaxPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = taxService.getTaxPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "税码信息.xls", "数据", TaxRespVO.class, + BeanUtils.toBean(list, TaxRespVO.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/controller/admin/base/vo/AccountPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountPageReqVO.java index bea67e2..3ac1d8b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountPageReqVO.java @@ -1,7 +1,9 @@ package com.zt.plat.module.base.controller.admin.base.vo; +import com.alibaba.excel.annotation.ExcelProperty; import com.zt.plat.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; @@ -41,4 +43,10 @@ public class AccountPageReqVO extends PageParam { @Schema(description = "客商公司名称") private String customerName; + @Schema(description = "地址") + private String address; + + @Schema(description = "电话") + private String phone; + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountRespVO.java index 2a18a62..67640d1 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountRespVO.java @@ -52,4 +52,12 @@ public class AccountRespVO { @ExcelProperty("客商公司名称") private String customerName; + @Schema(description = "地址") + @ExcelProperty("地址") + private String address; + + @Schema(description = "电话") + @ExcelProperty("电话") + private String phone; + } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountSaveReqVO.java index c0065ed..f1ab15c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/AccountSaveReqVO.java @@ -33,7 +33,6 @@ public class AccountSaveReqVO { private String taxNumber; @Schema(description = "是否启用") - @ExcelProperty("是否启用") private String isEnable; @Schema(description = "客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED) @@ -43,4 +42,10 @@ public class AccountSaveReqVO { @Schema(description = "客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED) @NotEmpty(message = "客商公司名称不能为空") private String customerName; + + @Schema(description = "地址") + private String address; + + @Schema(description = "电话") + private String phone; } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/CompanyRelativityPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/CompanyRelativityPageReqVO.java index c652096..e7fe4d2 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/CompanyRelativityPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/CompanyRelativityPageReqVO.java @@ -32,7 +32,7 @@ public class CompanyRelativityPageReqVO extends PageParam { @Schema(description = "负责人") private String manager; - @Schema(description = "部门来源") + @Schema(description = "部门来源(字典编码:sply_cpn_rel_sts)(1:外部部门;2:同步部门;)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") private String departmentSource; } \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryPageReqVO.java index b1ec876..b775e07 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryPageReqVO.java @@ -16,6 +16,15 @@ public class FactoryPageReqVO extends PageParam { @Schema(description = "公司编码") private String companyNumber; + @Schema(description = "公司名称") + private String cpnName; + + @Schema(description = "ERP公司名称", example = "张三") + private String erpCompanyName; + + @Schema(description = "ERP公司编码") + private String erpCompanyNumber; + @Schema(description = "工厂名称", example = "赵六") private String name; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryRespVO.java index 4777ca6..1412d51 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactoryRespVO.java @@ -20,6 +20,18 @@ public class FactoryRespVO { @ExcelProperty("公司编码") private String companyNumber; + @Schema(description = "公司名称") + @ExcelProperty("公司名称") + private String cpnName; + + @Schema(description = "ERP公司名称", example = "张三") + @ExcelProperty("ERP公司名称") + private String erpCompanyName; + + @Schema(description = "ERP公司编码") + @ExcelProperty("ERP公司编码") + private String erpCompanyNumber; + @Schema(description = "工厂名称", example = "赵六") @ExcelProperty("工厂名称") private String name; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactorySaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactorySaveReqVO.java index df8598f..a5feb30 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactorySaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/FactorySaveReqVO.java @@ -13,6 +13,15 @@ public class FactorySaveReqVO { @Schema(description = "公司编码") private String companyNumber; + @Schema(description = "公司名称") + private String cpnName; + + @Schema(description = "ERP公司名称", example = "张三") + private String erpCompanyName; + + @Schema(description = "ERP公司编码") + private String erpCompanyNumber; + @Schema(description = "工厂名称", example = "赵六") private String name; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java index 73e49a5..a2c4584 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherPageReqVO.java @@ -45,7 +45,7 @@ public class MaterialOtherPageReqVO extends PageParam { private LocalDateTime[] createTime; @Schema(description = "小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") private String isEnable; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java index ec43586..1903f28 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherRespVO.java @@ -58,7 +58,7 @@ public class MaterialOtherRespVO { @Schema(description = "小数位数") @ExcelProperty("小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") @ExcelProperty("是否启用") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java index 3c86e30..938f5ea 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/MaterialOtherSaveReqVO.java @@ -38,7 +38,7 @@ public class MaterialOtherSaveReqVO { private String gradeUnit; @Schema(description = "小数位数") - private Long decimal; + private Long decimalValue; @Schema(description = "是否启用") private String isEnable; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxPageReqVO.java new file mode 100644 index 0000000..49acb7c --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxPageReqVO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.controller.admin.base.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +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; + +@Schema(description = "管理后台 - 税码信息分页 Request VO") +@Data +public class TaxPageReqVO extends PageParam { + + @Schema(description = "类型(字典: SPLY_BSN_TP)", example = "2") + private String type; + + @Schema(description = "类别") + private String category; + + @Schema(description = "税码") + private String taxCoding; + + @Schema(description = "税码描述") + private String remark; + + @Schema(description = "税率") + private BigDecimal tax; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "是否启用") + private String isEnable; + + @Schema(description = "公司编码") + private String customerNumber; + + @Schema(description = "公司名称", example = "王五") + private String customerName; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxRespVO.java new file mode 100644 index 0000000..dfc4b67 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxRespVO.java @@ -0,0 +1,56 @@ +package com.zt.plat.module.base.controller.admin.base.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 税码信息 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TaxRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26656") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "类型(字典: SPLY_BSN_TP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("类型(字典: SPLY_BSN_TP)") + private String type; + + @Schema(description = "类别", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类别") + private String category; + + @Schema(description = "税码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("税码") + private String taxCoding; + + @Schema(description = "税码描述") + @ExcelProperty("税码描述") + private String remark; + + @Schema(description = "税率") + @ExcelProperty("税率") + private BigDecimal tax; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "是否启用") + @ExcelProperty("是否启用") + private String isEnable; + + @Schema(description = "公司编码") + @ExcelProperty("公司编码") + private String customerNumber; + + @Schema(description = "公司名称", example = "王五") + @ExcelProperty("公司名称") + private String customerName; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxSaveReqVO.java new file mode 100644 index 0000000..3d3ba94 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/TaxSaveReqVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.base.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 税码信息新增/修改 Request VO") +@Data +public class TaxSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26656") + private Long id; + + @Schema(description = "类型(字典: SPLY_BSN_TP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "类型(字典: SPLY_BSN_TP)不能为空") + private String type; + + @Schema(description = "类别", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类别不能为空") + private String category; + + @Schema(description = "税码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "税码不能为空") + private String taxCoding; + + @Schema(description = "税码描述") + private String remark; + + @Schema(description = "税率") + private BigDecimal tax; + + @Schema(description = "是否启用") + private String isEnable; + + @Schema(description = "公司编码") + private String customerNumber; + + @Schema(description = "公司名称", example = "王五") + private String customerName; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehousePageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehousePageReqVO.java index 2d3d802..b7fea5c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehousePageReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehousePageReqVO.java @@ -22,6 +22,13 @@ public class WarehousePageReqVO extends PageParam { @Schema(description = "仓库编码") private String coding; + @Schema(description = "公司编码") + private String cpnName; + @Schema(description = "erp工厂名称") + private String erpFactoryName; + @Schema(description = "erp工厂编码") + private String erpFactoryNumber; + @Schema(description = "创建时间") @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) private LocalDateTime[] createTime; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseRespVO.java index bf2852b..d12fd74 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseRespVO.java @@ -20,6 +20,13 @@ public class WarehouseRespVO { @ExcelProperty("工厂编码") private String factoryNumber; + @Schema(description = "公司编码") + private String cpnName; + @Schema(description = "erp工厂名称") + private String erpFactoryName; + @Schema(description = "erp工厂编码") + private String erpFactoryNumber; + @Schema(description = "仓库名称", example = "李四") @ExcelProperty("仓库名称") private String name; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseSaveReqVO.java index 482b0b9..439ff67 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/base/vo/WarehouseSaveReqVO.java @@ -13,6 +13,13 @@ public class WarehouseSaveReqVO { @Schema(description = "工厂编码") private String factoryNumber; + @Schema(description = "公司编码") + private String cpnName; + @Schema(description = "erp工厂名称") + private String erpFactoryName; + @Schema(description = "erp工厂编码") + private String erpFactoryNumber; + @Schema(description = "仓库名称", example = "李四") private String name; diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/BusinessAlgorithmController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/BusinessAlgorithmController.java new file mode 100644 index 0000000..bcf4127 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/BusinessAlgorithmController.java @@ -0,0 +1,106 @@ +package com.zt.plat.module.base.controller.admin.businessalgorithm; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessalgorithm.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessalgorithm.BusinessAlgorithmDO; +import com.zt.plat.module.base.service.businessalgorithm.BusinessAlgorithmService; + +@Tag(name = "管理后台 - 业务算法") +@RestController +@RequestMapping("/base/business-algorithm") +@Validated +public class BusinessAlgorithmController implements BusinessControllerMarker { + + + @Resource + private BusinessAlgorithmService businessAlgorithmService; + + @PostMapping("/create") + @Operation(summary = "创建业务算法") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:create')") + public CommonResult createBusinessAlgorithm(@Valid @RequestBody BusinessAlgorithmSaveReqVO createReqVO) { + return success(businessAlgorithmService.createBusinessAlgorithm(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新业务算法") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:update')") + public CommonResult updateBusinessAlgorithm(@Valid @RequestBody BusinessAlgorithmSaveReqVO updateReqVO) { + businessAlgorithmService.updateBusinessAlgorithm(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除业务算法") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-algorithm:delete')") + public CommonResult deleteBusinessAlgorithm(@RequestParam("id") Long id) { + businessAlgorithmService.deleteBusinessAlgorithm(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除业务算法") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:delete')") + public CommonResult deleteBusinessAlgorithmList(@RequestBody BatchDeleteReqVO req) { + businessAlgorithmService.deleteBusinessAlgorithmListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得业务算法") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:query')") + public CommonResult getBusinessAlgorithm(@RequestParam("id") Long id) { + BusinessAlgorithmDO businessAlgorithm = businessAlgorithmService.getBusinessAlgorithm(id); + return success(BeanUtils.toBean(businessAlgorithm, BusinessAlgorithmRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得业务算法分页") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:query')") + public CommonResult> getBusinessAlgorithmPage(@Valid BusinessAlgorithmPageReqVO pageReqVO) { + PageResult pageResult = businessAlgorithmService.getBusinessAlgorithmPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BusinessAlgorithmRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出业务算法 Excel") + @PreAuthorize("@ss.hasPermission('base:business-algorithm:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessAlgorithmExcel(@Valid BusinessAlgorithmPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessAlgorithmService.getBusinessAlgorithmPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "业务算法.xls", "数据", BusinessAlgorithmRespVO.class, + BeanUtils.toBean(list, BusinessAlgorithmRespVO.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/controller/admin/businessalgorithm/vo/BusinessAlgorithmPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmPageReqVO.java new file mode 100644 index 0000000..16ed9f4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmPageReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.base.controller.admin.businessalgorithm.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 业务算法分页 Request VO") +@Data +public class BusinessAlgorithmPageReqVO extends PageParam { + + @Schema(description = "类型") + private String typeValue; + + @Schema(description = "状态") + private String statusValue; + + @Schema(description = "算法编码") + private String code; + + @Schema(description = "算法名称", example = "王五") + private String name; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmRespVO.java new file mode 100644 index 0000000..04fa450 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmRespVO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.controller.admin.businessalgorithm.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 业务算法 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessAlgorithmRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24454") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类型") + private String typeValue; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态") + private String statusValue; + + @Schema(description = "算法编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("算法编码") + private String code; + + @Schema(description = "算法名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("算法名称") + private String name; + + @Schema(description = "算法描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("算法描述") + private String description; + + @Schema(description = "算法代码") + @ExcelProperty("算法代码") + private String coding; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmSaveReqVO.java new file mode 100644 index 0000000..4f9863e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessalgorithm/vo/BusinessAlgorithmSaveReqVO.java @@ -0,0 +1,37 @@ +package com.zt.plat.module.base.controller.admin.businessalgorithm.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 业务算法新增/修改 Request VO") +@Data +public class BusinessAlgorithmSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24454") + private Long id; + + @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类型不能为空") + private String typeValue; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "状态不能为空") + private String statusValue; + + @Schema(description = "算法编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "算法编码不能为空") + private String code; + + @Schema(description = "算法名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "算法名称不能为空") + private String name; + + @Schema(description = "算法描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "算法描述不能为空") + private String description; + + @Schema(description = "算法代码") + private String coding; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/BusinessDepartmentIndicatorController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/BusinessDepartmentIndicatorController.java new file mode 100644 index 0000000..ff8185a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/BusinessDepartmentIndicatorController.java @@ -0,0 +1,107 @@ +package com.zt.plat.module.base.controller.admin.businessdepartmentindicator; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdepartmentindicator.BusinessDepartmentIndicatorDO; +import com.zt.plat.module.base.service.businessdepartmentindicator.BusinessDepartmentIndicatorService; + +@Tag(name = "管理后台 - 部门持有指标") +@RestController +@RequestMapping("/base/business-department-indicator") +@Validated +public class BusinessDepartmentIndicatorController implements BusinessControllerMarker { + + + @Resource + private BusinessDepartmentIndicatorService businessDepartmentIndicatorService; + + @PostMapping("/create") + @Operation(summary = "创建部门持有指标") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:create')") + public CommonResult createBusinessDepartmentIndicator(@Valid @RequestBody BusinessDepartmentIndicatorSaveReqVO createReqVO) { + return success(businessDepartmentIndicatorService.createBusinessDepartmentIndicator(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新部门持有指标") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:update')") + public CommonResult updateBusinessDepartmentIndicator(@Valid @RequestBody BusinessDepartmentIndicatorSaveReqVO updateReqVO) { + businessDepartmentIndicatorService.updateBusinessDepartmentIndicator(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除部门持有指标") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:delete')") + public CommonResult deleteBusinessDepartmentIndicator(@RequestParam("id") Long id) { + businessDepartmentIndicatorService.deleteBusinessDepartmentIndicator(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除部门持有指标") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:delete')") + public CommonResult deleteBusinessDepartmentIndicatorList(@RequestBody BatchDeleteReqVO req) { + businessDepartmentIndicatorService.deleteBusinessDepartmentIndicatorListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得部门持有指标") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:query')") + public CommonResult getBusinessDepartmentIndicator(@RequestParam("id") Long id) { + BusinessDepartmentIndicatorDO businessDepartmentIndicator = businessDepartmentIndicatorService.getBusinessDepartmentIndicator(id); + return success(BeanUtils.toBean(businessDepartmentIndicator, BusinessDepartmentIndicatorRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得部门持有指标分页") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:query')") + public CommonResult> getBusinessDepartmentIndicatorPage(@Valid BusinessDepartmentIndicatorPageReqVO pageReqVO) { + PageResult pageResult = businessDepartmentIndicatorService.getBusinessDepartmentIndicatorPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BusinessDepartmentIndicatorRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出部门持有指标 Excel") + @PreAuthorize("@ss.hasPermission('base:business-department-indicator:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessDepartmentIndicatorExcel(@Valid BusinessDepartmentIndicatorPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessDepartmentIndicatorService.getBusinessDepartmentIndicatorPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "部门持有指标.xls", "数据", BusinessDepartmentIndicatorRespVO.class, + BeanUtils.toBean(list, BusinessDepartmentIndicatorRespVO.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/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorPageReqVO.java new file mode 100644 index 0000000..4c3693b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorPageReqVO.java @@ -0,0 +1,17 @@ +package com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 部门持有指标分页 Request VO") +@Data +public class BusinessDepartmentIndicatorPageReqVO extends PageParam { + + @Schema(description = "指标ID", example = "11268") + private Long indicatorId; + + @Schema(description = "是否关键指标") + private Integer isKey; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorRespVO.java new file mode 100644 index 0000000..5f517dc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorRespVO.java @@ -0,0 +1,59 @@ +package com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDateTime; + +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 部门持有指标 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessDepartmentIndicatorRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32066") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "指标ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11268") + @ExcelProperty("指标ID") + private Long indicatorId; + + @Schema(description = "计量单位ID", example = "16200") + @ExcelProperty("计量单位ID") + private Long unitId; + + @Schema(description = "规则ID", example = "11174") + @ExcelProperty("规则ID") + private Long ruleId; + + @Schema(description = "算法ID", example = "20986") + @ExcelProperty("算法ID") + private Long algorithmId; + + @Schema(description = "实体ID", example = "2678") + @ExcelProperty("实体ID") + private Long entityId; + + @Schema(description = "值") + @ExcelProperty("值") + private String value; + + @Schema(description = "是否关键指标") + @ExcelProperty("是否关键指标") + private Integer isKey; + + @Schema(description = "排序号") + @ExcelProperty("排序号") + private Long sort; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorSaveReqVO.java new file mode 100644 index 0000000..8598898 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdepartmentindicator/vo/BusinessDepartmentIndicatorSaveReqVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 部门持有指标新增/修改 Request VO") +@Data +public class BusinessDepartmentIndicatorSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32066") + private Long id; + + @Schema(description = "指标ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11268") + @NotNull(message = "指标ID不能为空") + private Long indicatorId; + + @Schema(description = "计量单位ID", example = "16200") + private Long unitId; + + @Schema(description = "规则ID", example = "11174") + private Long ruleId; + + @Schema(description = "算法ID", example = "20986") + private Long algorithmId; + + @Schema(description = "实体ID", example = "2678") + private Long entityId; + + @Schema(description = "值") + private String value; + + @Schema(description = "是否关键指标") + private Integer isKey; + + @Schema(description = "排序号") + private Long sort; + + @Schema(description = "备注", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "备注不能为空") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/BusinessDictionaryTypeController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/BusinessDictionaryTypeController.java new file mode 100644 index 0000000..bb57c1d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/BusinessDictionaryTypeController.java @@ -0,0 +1,119 @@ +package com.zt.plat.module.base.controller.admin.businessdictionarytype; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessdictionarytype.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryTypeDO; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryDataDO; +import com.zt.plat.module.base.service.businessdictionarytype.BusinessDictionaryTypeService; + +@Tag(name = "管理后台 - 业务字典类型") +@RestController +@RequestMapping("/base/business-dictionary-type") +@Validated +public class BusinessDictionaryTypeController implements BusinessControllerMarker { + + + @Resource + private BusinessDictionaryTypeService businessDictionaryTypeService; + + @PostMapping("/create") + @Operation(summary = "创建业务字典类型") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:create')") + public CommonResult createBusinessDictionaryType(@Valid @RequestBody BusinessDictionaryTypeSaveReqVO createReqVO) { + return success(businessDictionaryTypeService.createBusinessDictionaryType(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新业务字典类型") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:update')") + public CommonResult updateBusinessDictionaryType(@Valid @RequestBody BusinessDictionaryTypeSaveReqVO updateReqVO) { + businessDictionaryTypeService.updateBusinessDictionaryType(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除业务字典类型") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:delete')") + public CommonResult deleteBusinessDictionaryType(@RequestParam("id") Long id) { + businessDictionaryTypeService.deleteBusinessDictionaryType(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除业务字典类型") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:delete')") + public CommonResult deleteBusinessDictionaryTypeList(@RequestBody BatchDeleteReqVO req) { + businessDictionaryTypeService.deleteBusinessDictionaryTypeListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得业务字典类型") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:query')") + public CommonResult getBusinessDictionaryType(@RequestParam("id") Long id) { + BusinessDictionaryTypeDO businessDictionaryType = businessDictionaryTypeService.getBusinessDictionaryType(id); + return success(BeanUtils.toBean(businessDictionaryType, BusinessDictionaryTypeRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得业务字典类型分页") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:query')") + public CommonResult> getBusinessDictionaryTypePage(@Valid BusinessDictionaryTypePageReqVO pageReqVO) { + PageResult pageResult = businessDictionaryTypeService.getBusinessDictionaryTypePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BusinessDictionaryTypeRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出业务字典类型 Excel") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessDictionaryTypeExcel(@Valid BusinessDictionaryTypePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessDictionaryTypeService.getBusinessDictionaryTypePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "业务字典类型.xls", "数据", BusinessDictionaryTypeRespVO.class, + BeanUtils.toBean(list, BusinessDictionaryTypeRespVO.class)); + } + + // ==================== 子表(业务字典数据) ==================== + + @GetMapping("/business-dictionary-data/list-by-dictionary-type-id") + @Operation(summary = "获得业务字典数据列表") + @Parameter(name = "dictionaryTypeId", description = "字典类型") + @PreAuthorize("@ss.hasPermission('base:business-dictionary-type:query')") + public CommonResult> getBusinessDictionaryDataListByDictionaryTypeId(@RequestParam("dictionaryTypeId") Long dictionaryTypeId) { + return success(businessDictionaryTypeService.getBusinessDictionaryDataListByDictionaryTypeId(dictionaryTypeId)); + } + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypePageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypePageReqVO.java new file mode 100644 index 0000000..63fa72a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypePageReqVO.java @@ -0,0 +1,20 @@ +package com.zt.plat.module.base.controller.admin.businessdictionarytype.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 业务字典类型分页 Request VO") +@Data +public class BusinessDictionaryTypePageReqVO extends PageParam { + + @Schema(description = "字典名称", example = "王五") + private String name; + + @Schema(description = "字典类型", example = "1") + private String type; + + @Schema(description = "状态(0正常 1停用)", example = "2") + private Long status; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeRespVO.java new file mode 100644 index 0000000..e4ff58d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeRespVO.java @@ -0,0 +1,37 @@ +package com.zt.plat.module.base.controller.admin.businessdictionarytype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 业务字典类型 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessDictionaryTypeRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11771") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "字典名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("字典名称") + private String name; + + @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @ExcelProperty("字典类型") + private String type; + + @Schema(description = "状态(0正常 1停用)", example = "2") + @ExcelProperty("状态(0正常 1停用)") + private Long status; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeSaveReqVO.java new file mode 100644 index 0000000..84217f0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdictionarytype/vo/BusinessDictionaryTypeSaveReqVO.java @@ -0,0 +1,37 @@ +package com.zt.plat.module.base.controller.admin.businessdictionarytype.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.time.LocalDateTime; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryDataDO; + +@Schema(description = "管理后台 - 业务字典类型新增/修改 Request VO") +@Data +public class BusinessDictionaryTypeSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "11771") + private Long id; + + @Schema(description = "字典名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "字典名称不能为空") + private String name; + + @Schema(description = "字典类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "字典类型不能为空") + private String type; + + @Schema(description = "状态(0正常 1停用)", example = "2") + private Long status; + + @Schema(description = "备注") + private String remark; + + @Schema(description = "删除时间") + private LocalDateTime delTime; + + @Schema(description = "业务字典数据列表") + private List businessDictionaryDatas; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/BusinessDimensionController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/BusinessDimensionController.java new file mode 100644 index 0000000..f7ef5f2 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/BusinessDimensionController.java @@ -0,0 +1,118 @@ +package com.zt.plat.module.base.controller.admin.businessdimension; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessdimension.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdimension.BusinessDimensionDO; +import com.zt.plat.module.base.service.businessdimension.BusinessDimensionService; + +@Tag(name = "管理后台 - 经营指标维度") +@RestController +@RequestMapping("/base/business-dimension") +@Validated +public class BusinessDimensionController implements BusinessControllerMarker { + + + @Resource + private BusinessDimensionService businessDimensionService; + + @PostMapping("/create") + @Operation(summary = "创建经营指标维度") + @PreAuthorize("@ss.hasPermission('base:business-dimension:create')") + public CommonResult createBusinessDimension(@Valid @RequestBody BusinessDimensionSaveReqVO createReqVO) { + return success(businessDimensionService.createBusinessDimension(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新经营指标维度") + @PreAuthorize("@ss.hasPermission('base:business-dimension:update')") + public CommonResult updateBusinessDimension(@Valid @RequestBody BusinessDimensionSaveReqVO updateReqVO) { + businessDimensionService.updateBusinessDimension(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除经营指标维度") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-dimension:delete')") + public CommonResult deleteBusinessDimension(@RequestParam("id") Long id) { + businessDimensionService.deleteBusinessDimension(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除经营指标维度") + @PreAuthorize("@ss.hasPermission('base:business-dimension:delete')") + public CommonResult deleteBusinessDimensionList(@RequestBody BatchDeleteReqVO req) { + businessDimensionService.deleteBusinessDimensionListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得经营指标维度") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-dimension:query')") + public CommonResult getBusinessDimension(@RequestParam("id") Long id) { + BusinessDimensionDO businessDimension = businessDimensionService.getBusinessDimension(id); + return success(BeanUtils.toBean(businessDimension, BusinessDimensionRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得经营指标维度分页") + @PreAuthorize("@ss.hasPermission('base:business-dimension:query')") + public CommonResult> getBusinessDimensionPage(@Valid BusinessDimensionPageReqVO pageReqVO) { + PageResult pageResult = businessDimensionService.getBusinessDimensionPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BusinessDimensionRespVO.class)); + } + + @GetMapping("/list-by-parent-id") + @Operation(summary = "获得经营指标维度列表通过父级ID") + @Parameter(name = "parentId", description = "父级ID", example = "0") + @PreAuthorize("@ss.hasPermission('base:business-dimension:query')") + public CommonResult> getBusinessDimensionListByParentId(@RequestParam(value = "parentId", required = false) Long parentId, + @RequestParam(value = "level", required = false) Integer level) { + List list = businessDimensionService.getBusinessDimensionListByParentId(parentId, level); + return success(BeanUtils.toBean(list, BusinessDimensionRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出经营指标维度 Excel") + @PreAuthorize("@ss.hasPermission('base:business-dimension:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessDimensionExcel(@Valid BusinessDimensionPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessDimensionService.getBusinessDimensionPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "经营指标维度.xls", "数据", BusinessDimensionRespVO.class, + BeanUtils.toBean(list, BusinessDimensionRespVO.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/controller/admin/businessdimension/vo/BusinessDimensionPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionPageReqVO.java new file mode 100644 index 0000000..45b7db1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionPageReqVO.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.base.controller.admin.businessdimension.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 经营指标维度分页 Request VO") +@Data +public class BusinessDimensionPageReqVO extends PageParam { + + @Schema(description = "维度类型") + private String typeValue; + + @Schema(description = "维度编码") + private String code; + + @Schema(description = "维度名称", example = "王五") + private String name; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionRespVO.java new file mode 100644 index 0000000..57b0b36 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionRespVO.java @@ -0,0 +1,44 @@ +package com.zt.plat.module.base.controller.admin.businessdimension.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; +import com.zt.plat.framework.excel.core.annotations.DictFormat; +import com.zt.plat.framework.excel.core.convert.DictConvert; + +@Schema(description = "管理后台 - 经营指标维度 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessDimensionRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5174") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "父级ID", example = "29218") + @ExcelProperty("父级ID") + private Long parentId; + + @Schema(description = "维度类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty(value = "维度类型", converter = DictConvert.class) + @DictFormat("demo_contract") // TODO 代码优化:建议设置到对应的 DictTypeConstants 枚举类中 + private String typeValue; + + @Schema(description = "维度编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("维度编码") + private String code; + + @Schema(description = "维度名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("维度名称") + private String name; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String remark; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionSaveReqVO.java new file mode 100644 index 0000000..52d9b41 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessdimension/vo/BusinessDimensionSaveReqVO.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.controller.admin.businessdimension.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 经营指标维度新增/修改 Request VO") +@Data +public class BusinessDimensionSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "5174") + private Long id; + + @Schema(description = "父级ID", example = "29218") + private Long parentId; + + @Schema(description = "维度类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "维度类型不能为空") + private String typeValue; + + @Schema(description = "维度编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "维度编码不能为空") + private String code; + + @Schema(description = "维度名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "维度名称不能为空") + private String name; + + @Schema(description = "备注") + private String remark; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/BusinessIndicatorController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/BusinessIndicatorController.java new file mode 100644 index 0000000..41febaf --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/BusinessIndicatorController.java @@ -0,0 +1,128 @@ +package com.zt.plat.module.base.controller.admin.businessindicator; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; +import com.zt.plat.framework.business.annotation.FileUploadController; +import com.zt.plat.framework.business.controller.AbstractFileUploadController; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessindicator.BusinessIndicatorDO; +import com.zt.plat.module.base.service.businessindicator.BusinessIndicatorService; + +@Tag(name = "管理后台 - 经营指标") +@RestController +@RequestMapping("/base/business-indicator") +@Validated +@FileUploadController(source = "base.businessindicator") +public class BusinessIndicatorController extends AbstractFileUploadController implements BusinessControllerMarker{ + + static { + FileUploadController annotation = BusinessIndicatorController.class.getAnnotation(FileUploadController.class); + if (annotation != null) { + setFileUploadInfo(annotation); + } + } + + @Resource + private BusinessIndicatorService businessIndicatorService; + + @PostMapping("/create") + @Operation(summary = "创建经营指标") + @PreAuthorize("@ss.hasPermission('base:business-indicator:create')") + public CommonResult createBusinessIndicator(@Valid @RequestBody BusinessIndicatorSaveReqVO createReqVO) { + return success(businessIndicatorService.createBusinessIndicator(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新经营指标") + @PreAuthorize("@ss.hasPermission('base:business-indicator:update')") + public CommonResult updateBusinessIndicator(@Valid @RequestBody BusinessIndicatorSaveReqVO updateReqVO) { + businessIndicatorService.updateBusinessIndicator(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除经营指标") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-indicator:delete')") + public CommonResult deleteBusinessIndicator(@RequestParam("id") Long id) { + businessIndicatorService.deleteBusinessIndicator(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除经营指标") + @PreAuthorize("@ss.hasPermission('base:business-indicator:delete')") + public CommonResult deleteBusinessIndicatorList(@RequestBody BatchDeleteReqVO req) { + businessIndicatorService.deleteBusinessIndicatorListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得经营指标") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-indicator:query')") + public CommonResult getBusinessIndicator(@RequestParam("id") Long id) { +// BusinessIndicatorDO businessIndicator = businessIndicatorService.getBusinessIndicator(id); +// 使用getBusinessIndicatorPageWithRelations方法 + BusinessIndicatorPageReqVO pageReqVO = new BusinessIndicatorPageReqVO(); + pageReqVO.setId(id); + BusinessIndicatorRespVO businessIndicator = businessIndicatorService.getBusinessIndicatorPageWithRelations(pageReqVO).getList().get(0); + return success(BeanUtils.toBean(businessIndicator, BusinessIndicatorRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得经营指标分页") + @PreAuthorize("@ss.hasPermission('base:business-indicator:query')") + public CommonResult> getBusinessIndicatorPage(@Valid BusinessIndicatorPageReqVO pageReqVO) { + PageResult pageResult = businessIndicatorService.getBusinessIndicatorPageWithRelations(pageReqVO); + return success(pageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出经营指标 Excel") + @PreAuthorize("@ss.hasPermission('base:business-indicator:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessIndicatorExcel(@Valid BusinessIndicatorPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessIndicatorService.getBusinessIndicatorPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "经营指标.xls", "数据", BusinessIndicatorRespVO.class, + BeanUtils.toBean(list, BusinessIndicatorRespVO.class)); + } + + @GetMapping("/list-by-parent-id") + @Operation(summary = "获得经营指标列表通过父级ID") + @Parameter(name = "parentId", description = "父级ID", example = "0") + @PreAuthorize("@ss.hasPermission('base:business-indicator:query')") + public CommonResult> getBusinessIndicatorListByParentId(@RequestParam(value = "parentId", required = false) Long parentId) { + List list = businessIndicatorService.getBusinessIndicatorListByParentId(parentId); + return success(BeanUtils.toBean(list, BusinessIndicatorRespVO.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/controller/admin/businessindicator/vo/BusinessIndicatorPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorPageReqVO.java new file mode 100644 index 0000000..c8aed6b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorPageReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.base.controller.admin.businessindicator.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 经营指标分页 Request VO") +@Data +public class BusinessIndicatorPageReqVO extends PageParam { + + @Schema(description = "指标编码") + private String code; + + @Schema(description = "指标名称", example = "芋艿") + private String name; + + @Schema(description = "指标ID") + private Long id; + + @Schema(description = "维度ID") + private Long dimensionId; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorRespVO.java new file mode 100644 index 0000000..023fa70 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorRespVO.java @@ -0,0 +1,93 @@ +package com.zt.plat.module.base.controller.admin.businessindicator.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 经营指标 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessIndicatorRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3512") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "父级ID", example = "12917") + @ExcelProperty("父级ID") + private Long parentId; + + @Schema(description = "指标编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("指标编码") + private String code; + + @Schema(description = "指标名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("指标名称") + private String name; + + @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("数据类型") + private String dataValue; + + @Schema(description = "计量单位量ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17208") + @ExcelProperty("计量单位量ID") + private Long quantityId; + + @Schema(description = "计量单位ID", example = "31355") + @ExcelProperty("计量单位ID") + private Long unitId; + + @Schema(description = "算法ID", example = "2240") + @ExcelProperty("算法ID") + private Long algorithmId; + + @Schema(description = "规则ID", example = "32155") + @ExcelProperty("规则ID") + private Long ruleId; + + @Schema(description = "维度ID", example = "7598") + @ExcelProperty("维度ID") + private Long dimensionId; + + @Schema(description = "周期类型值", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("周期类型值") + private String cycleValue; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态") + private String statusValue; + + @Schema(description = "是否可修改") + @ExcelProperty("是否可修改") + private Integer isModify; + + @Schema(description = "用户ID", example = "13550") + @ExcelProperty("用户ID") + private Long userId; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + // 新增关联名称字段 + @Schema(description = "算法模型名称") + private String algorithmName; + + @Schema(description = "算法类型值") + private String algorithmTypeValue; + + @Schema(description = "规则模型名称") + private String ruleName; + + @Schema(description = "规则类型值") + private String ruleTypeValue; + + @Schema(description = "负责人名称") + private String userName; + + @Schema(description = "指标描述") + private String description; + + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorSaveReqVO.java new file mode 100644 index 0000000..3affba4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessindicator/vo/BusinessIndicatorSaveReqVO.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.controller.admin.businessindicator.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 经营指标新增/修改 Request VO") +@Data +public class BusinessIndicatorSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "3512") + private Long id; + + @Schema(description = "父级ID", example = "12917") + private Long parentId; + + @Schema(description = "指标编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "指标编码不能为空") + private String code; + + @Schema(description = "指标名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "指标名称不能为空") + private String name; + + @Schema(description = "指标描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "指标描述不能为空") + private String description; + + @Schema(description = "数据类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "数据类型不能为空") + private String dataValue; + + @Schema(description = "计量单位量ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "17208") + private Long quantityId; + + @Schema(description = "计量单位ID", example = "31355") + private Long unitId; + + @Schema(description = "算法ID", example = "2240") + private Long algorithmId; + + @Schema(description = "规则ID", example = "32155") + private Long ruleId; + + @Schema(description = "维度ID", example = "7598") + private Long dimensionId; + + @Schema(description = "周期类型值", requiredMode = Schema.RequiredMode.REQUIRED) + private String cycleValue; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "状态不能为空") + private String statusValue; + + @Schema(description = "是否可修改") + private boolean isModify; + + @Schema(description = "负责人ID", example = "13550") + private Long userId; + + @Schema(description = "负责部门") + private String departmentId; +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/BusinessRuleController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/BusinessRuleController.java new file mode 100644 index 0000000..7b62990 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/BusinessRuleController.java @@ -0,0 +1,105 @@ +package com.zt.plat.module.base.controller.admin.businessrule; + +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.businessrule.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessrule.BusinessRuleDO; +import com.zt.plat.module.base.service.businessrule.BusinessRuleService; + +@Tag(name = "管理后台 - 业务规则") +@RestController +@RequestMapping("/base/business-rule") +@Validated +public class BusinessRuleController implements BusinessControllerMarker { + + + @Resource + private BusinessRuleService businessRuleService; + + @PostMapping("/create") + @Operation(summary = "创建业务规则") + @PreAuthorize("@ss.hasPermission('base:business-rule:create')") + public CommonResult createBusinessRule(@Valid @RequestBody BusinessRuleSaveReqVO createReqVO) { + return success(businessRuleService.createBusinessRule(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新业务规则") + @PreAuthorize("@ss.hasPermission('base:business-rule:update')") + public CommonResult updateBusinessRule(@Valid @RequestBody BusinessRuleSaveReqVO updateReqVO) { + businessRuleService.updateBusinessRule(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除业务规则") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:business-rule:delete')") + public CommonResult deleteBusinessRule(@RequestParam("id") Long id) { + businessRuleService.deleteBusinessRule(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除业务规则") + @PreAuthorize("@ss.hasPermission('base:business-rule:delete')") + public CommonResult deleteBusinessRuleList(@RequestBody BatchDeleteReqVO req) { + businessRuleService.deleteBusinessRuleListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得业务规则") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:business-rule:query')") + public CommonResult getBusinessRule(@RequestParam("id") Long id) { + BusinessRuleDO businessRule = businessRuleService.getBusinessRule(id); + return success(BeanUtils.toBean(businessRule, BusinessRuleRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得业务规则分页") + @PreAuthorize("@ss.hasPermission('base:business-rule:query')") + public CommonResult> getBusinessRulePage(@Valid BusinessRulePageReqVO pageReqVO) { + PageResult pageResult = businessRuleService.getBusinessRulePage(pageReqVO); + return success(BeanUtils.toBean(pageResult, BusinessRuleRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出业务规则 Excel") + @PreAuthorize("@ss.hasPermission('base:business-rule:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportBusinessRuleExcel(@Valid BusinessRulePageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = businessRuleService.getBusinessRulePage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "业务规则.xls", "数据", BusinessRuleRespVO.class, + BeanUtils.toBean(list, BusinessRuleRespVO.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/controller/admin/businessrule/vo/BusinessRulePageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRulePageReqVO.java new file mode 100644 index 0000000..6253332 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRulePageReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.base.controller.admin.businessrule.vo; + +import lombok.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; + +@Schema(description = "管理后台 - 业务规则分页 Request VO") +@Data +public class BusinessRulePageReqVO extends PageParam { + + @Schema(description = "状态") + private String statusValue; + + @Schema(description = "类型") + private String typeValue; + + @Schema(description = "规则编码") + private String code; + + @Schema(description = "规则名称", example = "李四") + private String name; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleRespVO.java new file mode 100644 index 0000000..e6409f4 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleRespVO.java @@ -0,0 +1,45 @@ +package com.zt.plat.module.base.controller.admin.businessrule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 业务规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class BusinessRuleRespVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32088") + @ExcelProperty("主键ID") + private Long id; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("状态") + private String statusValue; + + @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("类型") + private String typeValue; + + @Schema(description = "规则编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规则编码") + private String code; + + @Schema(description = "规则名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("规则名称") + private String name; + + @Schema(description = "规则描述", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("规则描述") + private String description; + + @Schema(description = "规则表达式") + @ExcelProperty("规则表达式") + private String expression; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleSaveReqVO.java new file mode 100644 index 0000000..1025c8e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/businessrule/vo/BusinessRuleSaveReqVO.java @@ -0,0 +1,37 @@ +package com.zt.plat.module.base.controller.admin.businessrule.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 业务规则新增/修改 Request VO") +@Data +public class BusinessRuleSaveReqVO { + + @Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "32088") + private Long id; + + @Schema(description = "状态", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "状态不能为空") + private String statusValue; + + @Schema(description = "类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "类型不能为空") + private String typeValue; + + @Schema(description = "规则编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "规则编码不能为空") + private String code; + + @Schema(description = "规则名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "规则名称不能为空") + private String name; + + @Schema(description = "规则描述", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "规则描述不能为空") + private String description; + + @Schema(description = "规则表达式") + private String expression; + +} \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java index b7bc88c..f04f860 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceController.java @@ -7,6 +7,7 @@ import com.zt.plat.module.base.service.tmpltp.TemplateInstanceService; import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; import jakarta.validation.constraints.NotEmpty; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -42,6 +43,7 @@ import org.springframework.web.multipart.MultipartFile; import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; +@Slf4j @Tag(name = "管理后台 - 模板实例") @RestController @RequestMapping("/base/template-instance") @@ -55,15 +57,16 @@ public class TemplateInstanceController extends AbstractFileUploadController { setFileUploadInfo(annotation); } } + @Resource private TemplateInstanceService templateInstanceService; //上传文件 - @PostMapping("/save-file") - @Operation(summary = "上传文件", description = "上传文件,传入文件对象和模版实例id") - public CommonResult> uploadFile(@NotEmpty(message = "文件不能为空") @RequestParam("file") MultipartFile file,@RequestParam("id") String id) { - return success(templateInstanceService.saveFile(file,id)); - } +// @PostMapping("/save-file") +// @Operation(summary = "上传文件", description = "上传文件,传入文件对象和模版实例id") +// public CommonResult> uploadFile(@NotEmpty(message = "文件不能为空") @RequestParam("file") MultipartFile file,@RequestParam("id") String id) { +// return success(templateInstanceService.saveFile(file,id)); +// } @PostMapping("/create") @Operation(summary = "创建模板实例") @@ -102,11 +105,16 @@ public class TemplateInstanceController extends AbstractFileUploadController { @Operation(summary = "获得模板实例") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('bse:template-instance:query')") - public CommonResult getTemplateInstance(@RequestParam("id") Long id) { - TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(id); + public CommonResult getTemplateInstance(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) { + TemplateInstanceDO templateInstance = templateInstanceService.getTemplateInstance(Long.valueOf(id)); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); - templateInstanceService.getDetailedInfo(templateInstanceRespVO); - return success(templateInstanceRespVO); + if (templateInstanceRespVO != null) { + templateInstanceService.getDetailedInfo(templateInstanceRespVO); + log.info("==================模板实例详情查询成功================="); + return success(templateInstanceRespVO); + } + + return success(null); } @GetMapping("/page") @@ -116,7 +124,9 @@ public class TemplateInstanceController extends AbstractFileUploadController { PageResult pageResult = templateInstanceService.getTemplateInstancePage(pageReqVO); PageResult templateInstanceRespVOPageResult = BeanUtils.toBean(pageResult, TemplateInstanceRespVO.class); templateInstanceRespVOPageResult.getList().forEach(templateInstanceRespVO -> { - templateInstanceService.getDetailedInfo(templateInstanceRespVO); + if (templateInstanceRespVO != null) { + templateInstanceService.getDetailedInfo(templateInstanceRespVO); + } }); return success(templateInstanceRespVOPageResult); } @@ -150,23 +160,28 @@ public class TemplateInstanceController extends AbstractFileUploadController { public CommonResult> listExcludingDisabled(@Valid TemplateInstancePageReqVO pageReqVO) { PageResult templateInstanceRespVOPageResult = BeanUtils.toBean(templateInstanceService.listExcludingDisabled(pageReqVO), TemplateInstanceRespVO.class); templateInstanceRespVOPageResult.getList().forEach( - templateInstanceRespVO -> - templateInstanceService.getDetailedInfo(templateInstanceRespVO)); + templateInstanceRespVO -> { + if (templateInstanceRespVO != null) { + templateInstanceService.getDetailedInfo(templateInstanceRespVO); + } + } + ); return success(templateInstanceRespVOPageResult); } //停用和启用接口 @PostMapping("/disable-enable") - @Operation(summary = "实例停用和启用接口",description = "实例停用和启用接口") + @Operation(summary = "实例停用和启用接口", description = "实例停用和启用接口") @PreAuthorize("@ss.hasPermission('bse:template-instance:disable-enable')") public CommonResult setDisableOrEnable(@Valid @RequestBody DisableEnableReqVO reqVO) { templateInstanceService.setDisableOrEnable(reqVO); return success(true); } + //根据id获取实例版本号 @GetMapping("/get-version") @Operation(summary = "根据id获取实例版本号") - public CommonResult> getVersion(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) { + public CommonResult> getVersion(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) { return success(templateInstanceService.getVersion(id)); } @@ -175,13 +190,20 @@ public class TemplateInstanceController extends AbstractFileUploadController { @Operation(summary = "创建版本") @PreAuthorize("@ss.hasPermission('bse:template-instance:create-version')") public CommonResult createVersion(@Valid @NotEmpty(message = "模版实例id不能为空") String id) { - return success(templateInstanceService.createVersion(id)); + return success(templateInstanceService.createVersion(id)); } //通过模版编码查看历史版本 @GetMapping("/list-by-template-cdg") - @Operation(summary = "通过模版编码(cdg)查看历史版本",description = "通过模版编码查看历史版本,已按照发布时间和创建时间降序排序") - public CommonResult> listByTemplateCode(@RequestParam("cdg") @Valid @NotEmpty(message = "模版编号不能为空") String templateCode) { + @Operation(summary = "通过模版编码(cdg)查看历史版本", description = "通过模版编码查看历史版本,已按照发布时间和创建时间降序排序") + public CommonResult> listByTemplateCode(@RequestParam("cdg") @Valid @NotEmpty(message = "模版编号不能为空") String templateCode) { return success(templateInstanceService.listByCdg(templateCode)); } + + //通过实例id获取字段和条款详情 + @GetMapping("/field-and-clause-detail") + @Operation(summary = "通过实例id获取字段和条款详情") + public CommonResult getFieldAndClauseDetail(@Valid @NotEmpty(message = "模版实例id不能为空") @RequestParam("id") String id) { + return success(templateInstanceService.getFieldAndClauseDetail(id)); + } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java index b4de6de..e5d4252 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TemplateInstanceDataController.java @@ -115,6 +115,4 @@ public class TemplateInstanceDataController implements BusinessControllerMarker ExcelUtils.write(response, "实例字段值.xls", "数据", TemplateInstanceDataRespVO.class, BeanUtils.toBean(list, TemplateInstanceDataRespVO.class)); } - - } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscBsnRelController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscBsnRelController.java new file mode 100644 index 0000000..be2d7d9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscBsnRelController.java @@ -0,0 +1,123 @@ +package com.zt.plat.module.base.controller.admin.templtp; + +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelPageReqVO; +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelRespVO; +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO; +import com.zt.plat.module.base.service.tmpltp.TmplInscBsnRelService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; + +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 模板实例与业务中间") +@RestController +@RequestMapping("/base/tmpl-insc-bsn-rel") +@Validated +public class TmplInscBsnRelController implements BusinessControllerMarker { + + + @Resource + private TmplInscBsnRelService tmplInscBsnRelService; + + @PostMapping("/create") + @Operation(summary = "创建模板实例与业务中间") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:create')") + public CommonResult createTmplInscBsnRel(@Valid @RequestBody TmplInscBsnRelSaveReqVO createReqVO) { + return success(tmplInscBsnRelService.createTmplInscBsnRel(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新模板实例与业务中间") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:update')") + public CommonResult updateTmplInscBsnRel(@Valid @RequestBody TmplInscBsnRelSaveReqVO updateReqVO) { + tmplInscBsnRelService.updateTmplInscBsnRel(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除模板实例与业务中间") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:delete')") + public CommonResult deleteTmplInscBsnRel(@RequestParam("id") Long id) { + tmplInscBsnRelService.deleteTmplInscBsnRel(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除模板实例与业务中间") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:delete')") + public CommonResult deleteTmplInscBsnRelList(@RequestBody BatchDeleteReqVO req) { + tmplInscBsnRelService.deleteTmplInscBsnRelListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得模板实例与业务中间") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:query')") + public CommonResult getTmplInscBsnRel(@RequestParam("id") Long id) { + TmplInscBsnRelDO tmplInscBsnRel = tmplInscBsnRelService.getTmplInscBsnRel(id); + TmplInscBsnRelRespVO tmplInscBsnRelRespVO = BeanUtils.toBean(tmplInscBsnRel, TmplInscBsnRelRespVO.class); + if (tmplInscBsnRelRespVO != null) { + tmplInscBsnRelService.getTmplInscBsnRelDetails(tmplInscBsnRelRespVO); + } + return success(tmplInscBsnRelRespVO); + } + + @GetMapping("/page") + @Operation(summary = "获得模板实例与业务中间分页") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:query')") + public CommonResult> getTmplInscBsnRelPage(@Valid TmplInscBsnRelPageReqVO pageReqVO) { + PageResult pageResult = tmplInscBsnRelService.getTmplInscBsnRelPage(pageReqVO); + PageResult tmplInscBsnRelRespVOPageResult = BeanUtils.toBean(pageResult, TmplInscBsnRelRespVO.class); + tmplInscBsnRelRespVOPageResult.getList().forEach(tmplInscBsnRelRespVO -> { + if (tmplInscBsnRelRespVO != null) { + tmplInscBsnRelService.getTmplInscBsnRelDetails(tmplInscBsnRelRespVO); + } + }); + return success(tmplInscBsnRelRespVOPageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出模板实例与业务中间 Excel") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-bsn-rel:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTmplInscBsnRelExcel(@Valid TmplInscBsnRelPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = tmplInscBsnRelService.getTmplInscBsnRelPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "模板实例与业务中间.xls", "数据", TmplInscBsnRelRespVO.class, + BeanUtils.toBean(list, TmplInscBsnRelRespVO.class)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscDatBsnController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscDatBsnController.java new file mode 100644 index 0000000..4233611 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscDatBsnController.java @@ -0,0 +1,109 @@ +package com.zt.plat.module.base.controller.admin.templtp; + +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscDatBsnDO; +import com.zt.plat.module.base.service.tmpltp.TmplInscDatBsnService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + + +@Tag(name = "管理后台 - 业务实例字段值") +@RestController +@RequestMapping("/base/tmpl-insc-dat-bsn") +@Validated +public class TmplInscDatBsnController implements BusinessControllerMarker { + + + @Resource + private TmplInscDatBsnService tmplInscDatBsnService; + + @PostMapping("/create") + @Operation(summary = "创建业务实例字段值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:create')") + public CommonResult createTmplInscDatBsn(@Valid @RequestBody TmplInscDatBsnSaveReqVO createReqVO) { + return success(tmplInscDatBsnService.createTmplInscDatBsn(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新业务实例字段值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:update')") + public CommonResult updateTmplInscDatBsn(@Valid @RequestBody TmplInscDatBsnSaveReqVO updateReqVO) { + tmplInscDatBsnService.updateTmplInscDatBsn(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除业务实例字段值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:delete')") + public CommonResult deleteTmplInscDatBsn(@RequestParam("id") String id) { + tmplInscDatBsnService.deleteTmplInscDatBsn(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除业务实例字段值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:delete')") + public CommonResult deleteTmplInscDatBsnList(@RequestBody BatchDeleteReqVO req) { + tmplInscDatBsnService.deleteTmplInscDatBsnListByIds(req.getIds().stream().map(String::valueOf).toList()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得业务实例字段值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:query')") + public CommonResult getTmplInscDatBsn(@RequestParam("id") String id) { + TmplInscDatBsnDO tmplInscDatBsn = tmplInscDatBsnService.getTmplInscDatBsn(id); + return success(BeanUtils.toBean(tmplInscDatBsn, TmplInscDatBsnRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得业务实例字段值分页") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:query')") + public CommonResult> getTmplInscDatBsnPage(@Valid TmplInscDatBsnPageReqVO pageReqVO) { + PageResult pageResult = tmplInscDatBsnService.getTmplInscDatBsnPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TmplInscDatBsnRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出业务实例字段值 Excel") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-dat-bsn:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTmplInscDatBsnExcel(@Valid TmplInscDatBsnPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = tmplInscDatBsnService.getTmplInscDatBsnPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "业务实例字段值.xls", "数据", TmplInscDatBsnRespVO.class, + BeanUtils.toBean(list, TmplInscDatBsnRespVO.class)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscItmBsnController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscItmBsnController.java new file mode 100644 index 0000000..8cbcf50 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplInscItmBsnController.java @@ -0,0 +1,108 @@ +package com.zt.plat.module.base.controller.admin.templtp; + +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscItmBsnDO; +import com.zt.plat.module.base.service.tmpltp.TmplInscItmBsnService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +@Tag(name = "管理后台 - 业务实例条款值") +@RestController +@RequestMapping("/base/tmpl-insc-itm-bsn") +@Validated +public class TmplInscItmBsnController implements BusinessControllerMarker { + + + @Resource + private TmplInscItmBsnService tmplInscItmBsnService; + + @PostMapping("/create") + @Operation(summary = "创建业务实例条款值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:create')") + public CommonResult createTmplInscItmBsn(@Valid @RequestBody TmplInscItmBsnSaveReqVO createReqVO) { + return success(tmplInscItmBsnService.createTmplInscItmBsn(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新业务实例条款值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:update')") + public CommonResult updateTmplInscItmBsn(@Valid @RequestBody TmplInscItmBsnSaveReqVO updateReqVO) { + tmplInscItmBsnService.updateTmplInscItmBsn(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除业务实例条款值") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:delete')") + public CommonResult deleteTmplInscItmBsn(@RequestParam("id") String id) { + tmplInscItmBsnService.deleteTmplInscItmBsn(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除业务实例条款值") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:delete')") + public CommonResult deleteTmplInscItmBsnList(@RequestBody BatchDeleteReqVO req) { + tmplInscItmBsnService.deleteTmplInscItmBsnListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得业务实例条款值") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:query')") + public CommonResult getTmplInscItmBsn(@RequestParam("id") String id) { + TmplInscItmBsnDO tmplInscItmBsn = tmplInscItmBsnService.getTmplInscItmBsn(id); + return success(BeanUtils.toBean(tmplInscItmBsn, TmplInscItmBsnRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得业务实例条款值分页") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:query')") + public CommonResult> getTmplInscItmBsnPage(@Valid TmplInscItmBsnPageReqVO pageReqVO) { + PageResult pageResult = tmplInscItmBsnService.getTmplInscItmBsnPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, TmplInscItmBsnRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出业务实例条款值 Excel") + @PreAuthorize("@ss.hasPermission('base:tmpl-insc-itm-bsn:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportTmplInscItmBsnExcel(@Valid TmplInscItmBsnPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = tmplInscItmBsnService.getTmplInscItmBsnPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "业务实例条款值.xls", "数据", TmplInscItmBsnRespVO.class, + BeanUtils.toBean(list, TmplInscItmBsnRespVO.class)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java index a9995f8..0474acb 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/TmplTpController.java @@ -4,6 +4,7 @@ package com.zt.plat.module.base.controller.admin.templtp; import com.zt.plat.module.base.controller.admin.templtp.vo.*; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplTpDO; import com.zt.plat.module.base.service.tmpltp.TmplTpService; +import jakarta.validation.constraints.NotEmpty; import org.springframework.web.bind.annotation.*; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -85,8 +86,8 @@ public class TmplTpController extends AbstractFileUploadController implements Bu @Operation(summary = "获得模板分类") @Parameter(name = "id", description = "编号", required = true, example = "1024") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") - public CommonResult getTmplTp(@RequestParam("id") Long id) { - TmplTpDO tmplTp = tmplTpService.getTmplTp(id); + public CommonResult getTmplTp(@Valid @NotEmpty(message = "编号不能为空") @RequestParam("id") String id) { + TmplTpDO tmplTp = tmplTpService.getTmplTp(Long.valueOf(id)); return success(BeanUtils.toBean(tmplTp, TmplTpRespVO.class)); } @@ -114,10 +115,10 @@ public class TmplTpController extends AbstractFileUploadController implements Bu @GetMapping("/field-and-clause") @Operation(summary = "获得字段和条款",description = "字段和条款回显,传入模版分类的id") @PreAuthorize("@ss.hasPermission('bse:tmpl-tp:query')") - public CommonResult> getFieldAndClause(@RequestParam("id") Long id) { + public CommonResult> getFieldAndClause(@Valid @NotEmpty(message = "编号不能为空")@RequestParam("id") String id) { Map map = new HashMap<>(); - map.put("field", tmplTpService.getField(id)); - map.put("clause", tmplTpService.getClause(id)); + map.put("field", tmplTpService.getField(Long.valueOf(id))); + map.put("clause", tmplTpService.getClause(Long.valueOf(id))); return success(map); } //获取分类树 diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/controller/OnlyOfficeCallbackController.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/controller/OnlyOfficeCallbackController.java index f33e0f2..8640827 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/controller/OnlyOfficeCallbackController.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/controller/OnlyOfficeCallbackController.java @@ -31,9 +31,24 @@ public class OnlyOfficeCallbackController { @PostMapping("/callback/{id}") @PermitAll @TenantIgnore - public ResponseEntity> handleCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id) { + public ResponseEntity> handleCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id,@RequestParam("fileName") String fileName) { // 处理回调逻辑 - callbackService.processCallback(callback,id); + callbackService.processCallback(callback,id,fileName); + // 返回必须的响应,否则OnlyOffice会显示错误 + Map response = new HashMap<>(); + response.put("error", 0); + return new ResponseEntity<>(response, HttpStatus.OK); + } + + /** + * 处理OnlyOffice文档编辑服务发送的回调 + */ + @PostMapping("/contract /callback/{id}") + @PermitAll + @TenantIgnore + public ResponseEntity> handleContractCallback(@RequestBody OnlyOfficeCallback callback, @PathVariable String id,@RequestParam("fileName") String fileName) { + // 处理回调逻辑 + callbackService.processContractCallback(callback,id,fileName); // 返回必须的响应,否则OnlyOffice会显示错误 Map response = new HashMap<>(); response.put("error", 0); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackService.java index 41e7afa..4abbe2d 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackService.java @@ -8,5 +8,12 @@ public interface OnlyOfficeCallbackService { * 处理OnlyOffice回调 * @param callback 回调数据 */ - void processCallback(OnlyOfficeCallback callback,String id); + void processCallback(OnlyOfficeCallback callback,String id,String fileName); + + + /** + * 处理OnlyOffice回调 + * @param callback 回调数据 + */ + void processContractCallback(OnlyOfficeCallback callback,String id,String fileName); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java index 1e9b04b..14d75f9 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/service/OnlyOfficeCallbackServiceImpl.java @@ -1,11 +1,15 @@ package com.zt.plat.module.base.controller.admin.templtp.onlyoffice.service; +import com.alibaba.fastjson2.JSONObject; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.base.controller.admin.templtp.onlyoffice.pojo.Action; import com.zt.plat.module.base.controller.admin.templtp.onlyoffice.pojo.History; import com.zt.plat.module.base.controller.admin.templtp.onlyoffice.pojo.OnlyOfficeCallback; +import com.zt.plat.module.base.service.tmpltp.TemplateInstanceService; import com.zt.plat.module.infra.api.file.FileApi; import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; +import com.zt.plat.module.system.api.dept.DeptApi; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -13,6 +17,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import static com.zt.plat.module.base.controller.admin.templtp.onlyoffice.util.UrlFileDownloader.downloadFileAsMultipart; @@ -21,55 +27,56 @@ import static com.zt.plat.module.base.controller.admin.templtp.onlyoffice.util.U @RequiredArgsConstructor @Slf4j public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService { - private final FileApi fileApi; + private final TemplateInstanceService templateInstanceService; + @Override - public void processCallback(OnlyOfficeCallback callback,String id) { - log.info("Received OnlyOffice callback for document: {}", callback.getKey()); - log.info("Callback status: {}", callback.getStatus()); + public void processCallback(OnlyOfficeCallback callback, String id,String fileName) { + log.info("收到OnlyOffice文档回调: {}", callback.getKey()); + log.info("回调状态: {}", callback.getStatus()); // 根据不同的状态处理回调 switch (callback.getStatus()) { case 1: - handleEditingStatus(callback,id); + handleEditingStatus(callback, id,fileName); break; case 2: - handleDocumentSaved(callback,id); + handleDocumentSaved(callback, id,fileName); break; case 3: - handleSaveError(callback,id); + handleSaveError(callback, id,fileName); break; case 4: - handleDocumentClosedWithoutChanges(callback,id); + handleDocumentClosedWithoutChanges(callback, id,fileName); break; case 6: - handleForcedSave(callback,id); + handleForcedSave(callback, id,fileName); break; case 7: - handleForcedSaveError(callback,id); + handleForcedSaveError(callback, id,fileName); break; default: - log.warn("Received unknown callback status: {}", callback.getStatus()); + log.warn("收到未知的回调状态: {}", callback.getStatus()); } } /** * 处理文档正在编辑的状态 */ - private void handleEditingStatus(OnlyOfficeCallback callback,String id) { - log.info("Document {} is being edited by users: {}", + private void handleEditingStatus(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 正在被以下用户编辑: {}", callback.getKey(), callback.getUsers()); // 处理用户操作(连接或断开连接) if (callback.getActions() != null) { for (Action action : callback.getActions()) { String actionType = switch (action.getType()) { - case 0 -> "disconnected from"; - case 1 -> "connected to"; - case 2 -> "clicked force save in"; - default -> "performed unknown action in"; + case 0 -> "断开了连接"; + case 1 -> "连接成功"; + case 2 -> "在中点击了强制保存"; + default -> "在中执行了未知操作"; }; - log.info("User {} {}", action.getUserId(), actionType); + log.info("用户 {} {}", action.getUserId(), actionType); } } } @@ -77,59 +84,59 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理文档已保存的状态 */ - private void handleDocumentSaved(OnlyOfficeCallback callback,String id) { - log.info("Document {} is ready to be saved", callback.getKey()); - saveDocument(callback,id); + private void handleDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 已准备好保存", callback.getKey()); + saveDocument(callback, id,fileName); // 处理历史记录 - // handleHistoryChanges(callback,id); + // handleHistoryChanges(callback,id); } /** * 处理保存错误的状态 */ - private void handleSaveError(OnlyOfficeCallback callback,String id) { - log.error("Error saving document {}", callback.getKey()); + private void handleSaveError(OnlyOfficeCallback callback, String id,String fileName) { + log.error("保存文档 {} 时出错", callback.getKey()); // 可以在这里添加错误处理逻辑,如发送通知等 } /** * 处理文档关闭且无更改的状态 */ - private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback,String id) { - log.info("Document {} closed without changes", callback.getKey()); + private void handleDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 已关闭,未做任何更改", callback.getKey()); // 可以在这里添加清理资源等逻辑 } /** * 处理强制保存的状态 */ - private void handleForcedSave(OnlyOfficeCallback callback,String id) { - log.info("Document {} forced save. Type: {}", + private void handleForcedSave(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 执行强制保存。类型: {}", callback.getKey(), callback.getForceSaveType()); - saveDocument(callback,id); + saveDocument(callback, id,fileName); // 处理历史记录 - handleHistoryChanges(callback,id); + handleHistoryChanges(callback, id); // 如果是表单提交,处理表单数据 if (callback.getForceSaveType() == 3 && callback.getFormsDataUrl() != null) { - handleFormSubmission(callback,id); + handleFormSubmission(callback, id); } } /** * 处理强制保存错误的状态 */ - private void handleForcedSaveError(OnlyOfficeCallback callback,String id) { - log.error("Error during forced save of document {}", callback.getKey()); + private void handleForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) { + log.error("文档 {} 强制保存时出错", callback.getKey()); // 可以在这里添加错误处理逻辑 } /** * 保存文档到存储 */ - private void saveDocument(OnlyOfficeCallback callback,String id) { + private void saveDocument(OnlyOfficeCallback callback, String id,String fileName) { if (callback.getUrl() == null) { log.error("文件路径为空"); return; @@ -139,19 +146,33 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService MultipartFile file = downloadFileAsMultipart(callback.getUrl()); // 1. 验证文件是否为空 - - // 2. 获取并验证文件名 - String fileName = file.getOriginalFilename(); - String directory = "模版实例"; FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); fileCreateReqDTO.setName(fileName); fileCreateReqDTO.setContent(file.getBytes()); fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型 fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录 - + if (file.getSize() <=0){ + log.error("文件大小为0"); + return; + } // 7. 调用文件服务创建文件 - CommonResult result = fileApi.createFile(fileCreateReqDTO); + CommonResult result = fileApi.createFileWithReturn(fileCreateReqDTO); + if (result.isSuccess()) { + // 创建文件成功,处理结果 + result.getData().setContent(null); + log.info("文件创建成功,文件ID:{}", result.getData()); + // 创建文件成功,处理结果 + FileRespDTO fileRespDTO = result.getData(); + Map fileInfo = new HashMap<>(); + fileInfo.put("id",String.valueOf(fileRespDTO.getId())); + fileInfo.put("name", fileRespDTO.getName()); + fileInfo.put("directory", fileRespDTO.getDirectory()); + templateInstanceService.updateTemplateInstanceFileUrlByInstanceId(id, JSONObject.toJSONString(fileInfo)); + } else { + // 创建文件失败,处理错误 + log.error("文件创建失败,错误信息:{}", result.getMsg()); + } log.info("文件创建结果:{}", result); } catch (IOException e) { throw new RuntimeException(e); @@ -162,17 +183,17 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理文档历史记录变更 */ - private void handleHistoryChanges(OnlyOfficeCallback callback,String id) { + private void handleHistoryChanges(OnlyOfficeCallback callback, String id) { History history = callback.getHistory(); if (history != null) { - log.info("Processing document history changes for {}", callback.getKey()); + log.info("正在处理文档 {} 的历史记录变更", callback.getKey()); // 这里可以实现处理历史记录的逻辑 // 例如:调用refreshHistory方法更新历史记录 } // 处理变更历史URL if (callback.getChangesUrl() != null) { - log.info("Changes URL for document {}: {}", callback.getKey(), callback.getChangesUrl()); + log.info("文档 {} 的变更历史URL: {}", callback.getKey(), callback.getChangesUrl()); // 这里可以实现保存变更历史的逻辑 // 例如:下载变更历史并使用setHistoryData方法存储 } @@ -181,11 +202,166 @@ public class OnlyOfficeCallbackServiceImpl implements OnlyOfficeCallbackService /** * 处理表单提交数据 */ - private void handleFormSubmission(OnlyOfficeCallback callback,String id) { - log.info("Processing form submission for document {}", callback.getKey()); + private void handleFormSubmission(OnlyOfficeCallback callback, String id) { + log.info("正在处理文档 {} 的表单提交", callback.getKey()); // 这里可以实现处理表单数据的逻辑 // 例如:从formsDataUrl下载并解析表单数据 } + + + + @Override + public void processContractCallback(OnlyOfficeCallback callback, String id, String fileName) { + log.info("收到OnlyOffice文档回调: {}", callback.getKey()); + log.info("回调状态: {}", callback.getStatus()); + + // 根据不同的状态处理回调 + switch (callback.getStatus()) { + case 1: + handleContractEditingStatus(callback, id,fileName); + break; + case 2: + handleContractDocumentSaved(callback, id,fileName); + break; + case 3: + handleContractSaveError(callback, id,fileName); + break; + case 4: + handleContractDocumentClosedWithoutChanges(callback, id,fileName); + break; + case 6: + handleContractForcedSave(callback, id,fileName); + break; + case 7: + handleContractForcedSaveError(callback, id,fileName); + break; + default: + log.warn("收到未知的回调状态: {}", callback.getStatus()); + } + } + + + /** + * 处理文档正在编辑的状态 + */ + private void handleContractEditingStatus(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 正在被以下用户编辑: {}", + callback.getKey(), callback.getUsers()); + + // 处理用户操作(连接或断开连接) + if (callback.getActions() != null) { + for (Action action : callback.getActions()) { + String actionType = switch (action.getType()) { + case 0 -> "断开了连接"; + case 1 -> "连接成功"; + case 2 -> "在中点击了强制保存"; + default -> "在中执行了未知操作"; + }; + log.info("用户 {} {}", action.getUserId(), actionType); + } + } + } + + /** + * 处理文档已保存的状态 + */ + private void handleContractDocumentSaved(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 已准备好保存", callback.getKey()); + saveContractDocument(callback, id,fileName); + + // 处理历史记录 + // handleHistoryChanges(callback,id); + } + + /** + * 处理保存错误的状态 + */ + private void handleContractSaveError(OnlyOfficeCallback callback, String id,String fileName) { + log.error("保存文档 {} 时出错", callback.getKey()); + // 可以在这里添加错误处理逻辑,如发送通知等 + } + + /** + * 处理文档关闭且无更改的状态 + */ + private void handleContractDocumentClosedWithoutChanges(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 已关闭,未做任何更改", callback.getKey()); + // 可以在这里添加清理资源等逻辑 + } + + /** + * 处理强制保存的状态 + */ + private void handleContractForcedSave(OnlyOfficeCallback callback, String id,String fileName) { + log.info("文档 {} 执行强制保存。类型: {}", + callback.getKey(), callback.getForceSaveType()); + saveContractDocument(callback, id,fileName); + + // 处理历史记录 + handleHistoryChanges(callback, id); + + // 如果是表单提交,处理表单数据 + if (callback.getForceSaveType() == 3 && callback.getFormsDataUrl() != null) { + handleFormSubmission(callback, id); + } + } + + + /** + * 处理强制保存错误的状态 + */ + private void handleContractForcedSaveError(OnlyOfficeCallback callback, String id,String fileName) { + log.error("文档 {} 强制保存时出错", callback.getKey()); + // 可以在这里添加错误处理逻辑 + } + + /** + * 保存文档到存储 + */ + private void saveContractDocument(OnlyOfficeCallback callback, String id,String fileName) { + if (callback.getUrl() == null) { + log.error("文件路径为空"); + return; + } + + try { + MultipartFile file = downloadFileAsMultipart(callback.getUrl()); + // 1. 验证文件是否为空 + + String directory = "模版实例"; + FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); + fileCreateReqDTO.setName(fileName); + fileCreateReqDTO.setContent(file.getBytes()); + fileCreateReqDTO.setType(file.getContentType()); // 使用真实的MIME类型 + fileCreateReqDTO.setDirectory(directory); // 设置文件存储目录 + if (file.getSize() <=0){ + log.error("文件大小为0"); + return; + } + // 7. 调用文件服务创建文件 + CommonResult result = fileApi.createFileWithReturn(fileCreateReqDTO); + if (result.isSuccess()) { + // 创建文件成功,处理结果 + result.getData().setContent(null); + log.info("文件创建成功,文件ID:{}", result.getData()); + // 创建文件成功,处理结果 + FileRespDTO fileRespDTO = result.getData(); + Map fileInfo = new HashMap<>(); + fileInfo.put("id",String.valueOf(fileRespDTO.getId())); + fileInfo.put("name", fileRespDTO.getName()); + fileInfo.put("directory", fileRespDTO.getDirectory()); + templateInstanceService.updateTemplateInstanceFileUrlByInstanceId(id, JSONObject.toJSONString(fileInfo)); + } else { + // 创建文件失败,处理错误 + log.error("文件创建失败,错误信息:{}", result.getMsg()); + } + log.info("文件创建结果:{}", result); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java index 50fba30..c6dece5 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/onlyoffice/util/UrlFileDownloader.java @@ -50,7 +50,9 @@ public class UrlFileDownloader { String contentType = connection.getContentType() == null ? "application/octet-stream" : connection.getContentType(); // 3. 读取文件字节内容 byte[] fileBytes = readFileBytes(connection.getInputStream()); - + if (fileBytes.length == 0){ + throw new IOException("文件内容为空"); + } // 4. 使用自定义MultipartFile实现类封装(不依赖Spring Test) return new CustomMultipartFile( "file", // 表单字段名(与上传接口的@RequestParam("file")对应) @@ -79,7 +81,7 @@ public class UrlFileDownloader { } /** - * 从URL和响应头中提取文件名 + * 从URL和响应头中提取文件名。 */ private static String getFileNameFromUrl(String fileUrl, URLConnection connection) { // 优先从响应头的Content-Disposition获取(如:attachment;filename="test.pdf") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/DisableEnableReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/DisableEnableReqVO.java index d8de1d5..270cf19 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/DisableEnableReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/DisableEnableReqVO.java @@ -9,7 +9,7 @@ import java.util.List; @Schema(description = "管理后台 - 实例启用与禁用 Request VO") @Data public class DisableEnableReqVO { - @Schema(description = "实例主键(id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @Schema(description = "实例主键(id)", requiredMode = Schema.RequiredMode.REQUIRED, example = "['1','2']") @NotEmpty(message = "实例主键不能为空") private List ids; @Schema(description = "操作类型;操作类型type,type的值启用为enable,禁用为disable", requiredMode = Schema.RequiredMode.REQUIRED, example = "enable") diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java new file mode 100644 index 0000000..ab8984a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/FieldAndClauseRespVO.java @@ -0,0 +1,16 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "管理后台 - 合同动态表单 响应 VO") +@Data +public class FieldAndClauseRespVO { + @Schema(description = "模板分类") + List tmplFldRespVOS; + @Schema(description = "条款") + List tmplItmRespVOS; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java index 728259f..2d1a589 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceDataSaveReqVO.java @@ -21,7 +21,7 @@ public class TemplateInstanceDataSaveReqVO { private String fldKy; @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "用户填写的值不能为空") +// @NotEmpty(message = "用户填写的值不能为空") private String fldVal; } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java index e2fcd1c..787cfcd 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceItemSaveReqVO.java @@ -21,7 +21,7 @@ public class TemplateInstanceItemSaveReqVO { private String itmId; @Schema(description = "用户填写的值", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "用户填写的值不能为空") +// @NotEmpty(message = "用户填写的值不能为空") private String val; } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java index 9cc4a28..1ef75e5 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TemplateInstanceRespVO.java @@ -1,5 +1,7 @@ package com.zt.plat.module.base.controller.admin.templtp.vo; +import com.zt.plat.module.system.api.dept.dto.DeptDetailRespDTO; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; import java.util.*; @@ -59,12 +61,23 @@ public class TemplateInstanceRespVO { @Schema(description = "发布时间", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("发布时间") private LocalDateTime publishTime; - - @Schema(description = "使用部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "") private List deptIds; @Schema(description = "实例字段;这个是实例字段绑定的字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "") private List templateInstanceDataRespVOS; @Schema(description = "实例条款;这个是实例条款绑定的条款;", requiredMode = Schema.RequiredMode.REQUIRED, example = "") private List instanceItemRespVOS; + + @Schema(description = "使用部门编", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private List DeptRespVOS; + + @Schema(description = "模版分类名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试分类名称") + @ExcelProperty("模版分类名称") + private String tpName; + + + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建人") + private String creator; + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelPageReqVO.java new file mode 100644 index 0000000..65907dd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelPageReqVO.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 模板实例与业务中间分页 Request VO") +@Data +public class TmplInscBsnRelPageReqVO extends PageParam { + + @Schema(description = "业务主键", example = "30969") + private Long bsnId; + + @Schema(description = "实例主键", example = "10551") + private String inscId; + + @Schema(description = "文件内容") + private String cntt; + + @Schema(description = "版本号,如v1.0") + private String ver; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelRespVO.java new file mode 100644 index 0000000..9ea29fc --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelRespVO.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 模板实例与业务中间 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplInscBsnRelRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14132") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "业务主键", example = "30969") + @ExcelProperty("业务主键") + private Long bsnId; + + @Schema(description = "实例主键", example = "10551") + @ExcelProperty("实例主键") + private String inscId; + + @Schema(description = "文件内容") + @ExcelProperty("文件内容") + private String cntt; + + @Schema(description = "版本号,如v1.0") + @ExcelProperty("版本号,如v1.0") + private String ver; + + @Schema(description = "创建时间") + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + + @Schema(description = "使用部门编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private List deptIds; + + + @Schema(description = "实例字段;这个是实例字段绑定的字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private List templateInstanceDataRespVOS; + + @Schema(description = "实例条款;这个是实例条款绑定的条款;", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private List instanceItemRespVOS; + + @Schema(description = "使用部门编", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + private List DeptRespVOS; + + @Schema(description = "模版实例名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "测试分类名称") + @ExcelProperty("模版实例名称") + private String inscName; + + @Schema(description = "业务实例字段", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("业务实例字段") + private List tmplInscDatBsnRespVOS; + + @Schema(description = "业务实例条款", requiredMode = Schema.RequiredMode.REQUIRED, example = "") + @ExcelProperty("业务实例条款") + private List tmplInscItmBsnRespVOS; + + @Schema(description = "创建人", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建人") + private String creator; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelSaveReqVO.java new file mode 100644 index 0000000..27df55d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscBsnRelSaveReqVO.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 模板实例与业务中间新增/修改 Request VO") +@Data +public class TmplInscBsnRelSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14132") + private Long id; + + @Schema(description = "业务主键", example = "30969") + private Long bsnId; + + @Schema(description = "实例主键", example = "10551") + private String inscId; + + @Schema(description = "文件内容") + private String cntt; + + @Schema(description = "版本号,如v1.0") + private String ver; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnPageReqVO.java new file mode 100644 index 0000000..33e8458 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnPageReqVO.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 业务实例字段值分页 Request VO") +@Data +public class TmplInscDatBsnPageReqVO extends PageParam { + + @Schema(description = "关联中间表业务主键", example = "4270") + private String bsnId; + + @Schema(description = "字段标识,关联字段库") + private String inscFldId; + + @Schema(description = "用户填写的值") + private String fldVal; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnRespVO.java new file mode 100644 index 0000000..d4687c7 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnRespVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 业务实例字段值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplInscDatBsnRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8260") + @ExcelProperty("主键") + private String id; + + @Schema(description = "关联中间表业务主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4270") + @ExcelProperty("关联中间表业务主键") + private String bsnId; + + @Schema(description = "字段标识,关联实例字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("字段主键,关联实例字段库") + private String inscFldId; + + @Schema(description = "用户填写的值") + @ExcelProperty("用户填写的值") + private String fldVal; + + + @Schema(description = "字段标识") + @ExcelProperty("字段标识") + private String fldKy; + + + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnSaveReqVO.java new file mode 100644 index 0000000..854e548 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscDatBsnSaveReqVO.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 业务实例字段值新增/修改 Request VO") +@Data +public class TmplInscDatBsnSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8260") + private String id; + + @Schema(description = "关联中间表业务主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "4270") + @NotEmpty(message = "关联中间表业务主键不能为空") + private String bsnId; + + @Schema(description = "字段标识,关联实例字段库", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "字段标识,关联实例字段库不能为空") + private String inscFldId; + + @Schema(description = "用户填写的值") + private String fldVal; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnPageReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnPageReqVO.java new file mode 100644 index 0000000..ace32ab --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnPageReqVO.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import org.springframework.format.annotation.DateTimeFormat; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 业务实例条款值分页 Request VO") +@Data +public class TmplInscItmBsnPageReqVO extends PageParam { + + @Schema(description = "关联中间表业务主键", example = "17128") + private String bsnId; + + @Schema(description = "实例条款主键,关联实例字段库", example = "15878") + private String instceItmId; + + @Schema(description = "用户填写的值") + private String val; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDate[] createTime; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnRespVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnRespVO.java new file mode 100644 index 0000000..0d509e8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnRespVO.java @@ -0,0 +1,42 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; + +import java.time.LocalDate; +import java.util.*; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 业务实例条款值 Response VO") +@Data +@ExcelIgnoreUnannotated +public class TmplInscItmBsnRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30559") + @ExcelProperty("主键") + private String id; + + @Schema(description = "关联中间表业务主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17128") + @ExcelProperty("关联中间表业务主键") + private String bsnId; + + @Schema(description = "实例条款主键,关联实例字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "15878") + @ExcelProperty("实例条款主键,关联字段库") + private String inscItmId; + + @Schema(description = "用户填写的值") + @ExcelProperty("用户填写的值") + private String val; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDate createTime; + + @Schema(description = "条款名", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("条款名") + private String itmName; + + @Schema(description = "条款主键", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("条款主键") + private String itmId; +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnSaveReqVO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnSaveReqVO.java new file mode 100644 index 0000000..dfafcb1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/controller/admin/templtp/vo/TmplInscItmBsnSaveReqVO.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.base.controller.admin.templtp.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; + +@Schema(description = "管理后台 - 业务实例条款值新增/修改 Request VO") +@Data +public class TmplInscItmBsnSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "30559") + private String id; + + @Schema(description = "关联中间表业务主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "17128") + @NotEmpty(message = "关联中间表业务主键不能为空") + private String bsnId; + + @Schema(description = "实例条款主键,关联实例字段库", requiredMode = Schema.RequiredMode.REQUIRED, example = "15878") + @NotEmpty(message = "实例条款主键,关联实例字段库不能为空") + private String instceItmId; + + @Schema(description = "用户填写的值") + private String val; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessalgorithm/BusinessAlgorithmMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessalgorithm/BusinessAlgorithmMapper.java new file mode 100644 index 0000000..8aa7ae3 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessalgorithm/BusinessAlgorithmMapper.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.dal.dao.businessalgorithm; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessalgorithm.BusinessAlgorithmDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessalgorithm.vo.*; + +/** + * 业务算法 Mapper + * + * @author yangxiaofeng + */ +@Mapper +public interface BusinessAlgorithmMapper extends BaseMapperX { + + default PageResult selectPage(BusinessAlgorithmPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BusinessAlgorithmDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(BusinessAlgorithmDO::getStatusValue, reqVO.getStatusValue()) + .eqIfPresent(BusinessAlgorithmDO::getCode, reqVO.getCode()) + .likeIfPresent(BusinessAlgorithmDO::getName, reqVO.getName()) + .orderByDesc(BusinessAlgorithmDO::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/dao/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.java new file mode 100644 index 0000000..464bbcb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.java @@ -0,0 +1,25 @@ +package com.zt.plat.module.base.dal.dao.businessdepartmentindicator; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessdepartmentindicator.BusinessDepartmentIndicatorDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo.*; + +/** + * 部门持有指标 Mapper + * + * @author YangXiaofeng + */ +@Mapper +public interface BusinessDepartmentIndicatorMapper extends BaseMapperX { + + default PageResult selectPage(BusinessDepartmentIndicatorPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BusinessDepartmentIndicatorDO::getIndicatorId, reqVO.getIndicatorId()) + .eqIfPresent(BusinessDepartmentIndicatorDO::getIsKey, reqVO.getIsKey()) + .orderByDesc(BusinessDepartmentIndicatorDO::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/dao/businessdictionarytype/BusinessDictionaryDataMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryDataMapper.java new file mode 100644 index 0000000..110badb --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryDataMapper.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.base.dal.dao.businessdictionarytype; + +import java.util.*; + +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryDataDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 业务字典数据 Mapper + * + * @author yangxiaofeng + */ +@Mapper +public interface BusinessDictionaryDataMapper extends BaseMapperX { + + default List selectListByDictionaryTypeId(Long dictionaryTypeId) { + return selectList(BusinessDictionaryDataDO::getDictionaryTypeId, dictionaryTypeId); + } + + default int deleteByDictionaryTypeId(Long dictionaryTypeId) { + return delete(BusinessDictionaryDataDO::getDictionaryTypeId, dictionaryTypeId); + } + + default int deleteByDictionaryTypeIds(List dictionaryTypeIds) { + return deleteBatch(BusinessDictionaryDataDO::getDictionaryTypeId, dictionaryTypeIds); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryTypeMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryTypeMapper.java new file mode 100644 index 0000000..c826db8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdictionarytype/BusinessDictionaryTypeMapper.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.base.dal.dao.businessdictionarytype; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryTypeDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessdictionarytype.vo.*; + +/** + * 业务字典类型 Mapper + * + * @author 后台管理 + */ +@Mapper +public interface BusinessDictionaryTypeMapper extends BaseMapperX { + + default PageResult selectPage(BusinessDictionaryTypePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(BusinessDictionaryTypeDO::getName, reqVO.getName()) + .likeIfPresent(BusinessDictionaryTypeDO::getType, reqVO.getType()) + .eqIfPresent(BusinessDictionaryTypeDO::getStatus, reqVO.getStatus()) + .orderByDesc(BusinessDictionaryTypeDO::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/dao/businessdimension/BusinessDimensionMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdimension/BusinessDimensionMapper.java new file mode 100644 index 0000000..ff240bd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessdimension/BusinessDimensionMapper.java @@ -0,0 +1,55 @@ +package com.zt.plat.module.base.dal.dao.businessdimension; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessdimension.BusinessDimensionDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessdimension.vo.*; + +/** + * 经营指标维度 Mapper + * + * @author 陈鹏 + */ +@Mapper +public interface BusinessDimensionMapper extends BaseMapperX { + + default PageResult selectPage(BusinessDimensionPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BusinessDimensionDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(BusinessDimensionDO::getCode, reqVO.getCode()) + .likeIfPresent(BusinessDimensionDO::getName, reqVO.getName()) + .betweenIfPresent(BusinessDimensionDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(BusinessDimensionDO::getId)); + } + + // 获取子节点, 递归查询 + default List selectListByParentId(Long parentId, Integer level) { + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX(); + + // 构建层次查询SQL + StringBuilder hierarchySql = new StringBuilder(); + hierarchySql.append("START WITH "); + + if (parentId == null) { + hierarchySql.append("PRN_ID IS NULL "); + } else { + hierarchySql.append("PRN_ID = ").append(parentId); + } + + if (level == null) + hierarchySql.append(" CONNECT BY PRIOR PRN_ID = ID "); + else if (level < 0) //对level取绝对值 + hierarchySql.append(" CONNECT BY PRIOR PRN_ID = ID AND LEVEL <= ").append(-level); + else + hierarchySql.append(" CONNECT BY PRIOR ID = PRN_ID AND LEVEL <= ").append(level); + hierarchySql.append(" ORDER SIBLINGS BY ID DESC"); + queryWrapper.last(hierarchySql.toString()); + + return selectList(queryWrapper); + } + +} \ 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/dao/businessindicator/BusinessIndicatorMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessindicator/BusinessIndicatorMapper.java new file mode 100644 index 0000000..c1c1ca6 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessindicator/BusinessIndicatorMapper.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.base.dal.dao.businessindicator; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessindicator.BusinessIndicatorDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessindicator.vo.*; + +/** + * 经营指标 Mapper + * + * @author chengpeng + */ +@Mapper +public interface BusinessIndicatorMapper extends BaseMapperX { + + default PageResult selectPage(BusinessIndicatorPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .likeIfPresent(BusinessIndicatorDO::getCode, reqVO.getCode()) + .likeIfPresent(BusinessIndicatorDO::getName, reqVO.getName()) + .eqIfPresent(BusinessIndicatorDO::getDimensionId, reqVO.getDimensionId()) + .eqIfPresent(BusinessIndicatorDO::getId, reqVO.getId()) + .orderByDesc(BusinessIndicatorDO::getId)); + } + + default List selectListByParentId(Long parentId) { + LambdaQueryWrapperX queryWrapper = new LambdaQueryWrapperX() + .orderByDesc(BusinessIndicatorDO::getId); + + // 如果parentId 是 null,查询根节点(parentId 为 null 的节点) + if (parentId == null) { + queryWrapper.isNull(BusinessIndicatorDO::getParentId); + } else { + queryWrapper.eq(BusinessIndicatorDO::getParentId, parentId); + } + + return selectList(queryWrapper); + } + +} \ 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/dao/businessrule/BusinessRuleMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessrule/BusinessRuleMapper.java new file mode 100644 index 0000000..c9f08d8 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dao/businessrule/BusinessRuleMapper.java @@ -0,0 +1,27 @@ +package com.zt.plat.module.base.dal.dao.businessrule; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.businessrule.BusinessRuleDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.businessrule.vo.*; + +/** + * 业务规则 Mapper + * + * @author yangxiaofeng + */ +@Mapper +public interface BusinessRuleMapper extends BaseMapperX { + + default PageResult selectPage(BusinessRulePageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(BusinessRuleDO::getStatusValue, reqVO.getStatusValue()) + .eqIfPresent(BusinessRuleDO::getTypeValue, reqVO.getTypeValue()) + .eqIfPresent(BusinessRuleDO::getCode, reqVO.getCode()) + .likeIfPresent(BusinessRuleDO::getName, reqVO.getName()) + .orderByDesc(BusinessRuleDO::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/dataobject/base/AccountDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/AccountDO.java index d52b76e..f6c5954 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/AccountDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/AccountDO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.base.dal.dataobject.base; import com.baomidou.mybatisplus.annotation.*; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; /** * 账户条款 DO @@ -102,4 +103,10 @@ public class AccountDO extends BusinessBaseDO { @TableField("UPDATER_NAME") private String updaterName; + @TableField("ADDRESS") + private String address; + + @TableField("PHONE") + private String phone; + } \ 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/dataobject/base/FactoryDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/FactoryDO.java index 8a82037..8dda521 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/FactoryDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/FactoryDO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.base.dal.dataobject.base; import com.baomidou.mybatisplus.annotation.*; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; /** * 工厂 DO @@ -33,6 +34,24 @@ public class FactoryDO extends BusinessBaseDO { */ @TableField("CPN_NUM") private String companyNumber; + + /** + * 公司名称 + */ + @TableField("CPN_NAME") + private String cpnName; + + /** + * ERP公司名称 + */ + @TableField("ERP_CPN_NAME") + private String erpCompanyName; + + /** + * ERP公司编码 + */ + @TableField("ERP_CPN_NUM") + private String erpCompanyNumber; /** * 工厂名称 */ diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java index 983b276..de1c34c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/MaterialOtherDO.java @@ -102,7 +102,7 @@ public class MaterialOtherDO extends BusinessBaseDO { * 小数位数 */ @TableField("DEC") - private Long decimal; + private Long decimalValue; /** * 创建人名称 */ diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/TaxDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/TaxDO.java new file mode 100644 index 0000000..2235d36 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/TaxDO.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.dal.dataobject.base; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.KeySequence; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +import java.math.BigDecimal; +/** +* 税码信息 DO +* +* @author 后台管理-1 +*/ +@TableName("sply_tax") +@KeySequence("sply_tax_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TaxDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 类型(字典: SPLY_BSN_TP) + */ + private String type; + /** + * 类别 + */ + private String category; + /** + * 税码 + */ + private String taxCoding; + /** + * 税码描述 + */ + private String remark; + /** + * 税率 + */ + private BigDecimal tax; + /** + * 是否启用 + */ + private String isEnable; + /** + * 公司编码 + */ + private String customerNumber; + /** + * 公司名称 + */ + private String customerName; + +} \ 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/dataobject/base/WarehouseDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/WarehouseDO.java index 68ff193..2bbd0e8 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/WarehouseDO.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/base/WarehouseDO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.base.dal.dataobject.base; import com.baomidou.mybatisplus.annotation.*; import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.*; /** * 仓库 DO @@ -33,6 +34,14 @@ public class WarehouseDO extends BusinessBaseDO { */ @TableField("FACT_NUM") private String factoryNumber; + + @TableField("CPN_NAME") + private String cpnName; + @TableField("ERP_FACT_NAME") + private String erpFactoryName; + @TableField("ERP_FACT_NUM") + private String erpFactoryNumber; + /** * 仓库名称 */ diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessalgorithm/BusinessAlgorithmDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessalgorithm/BusinessAlgorithmDO.java new file mode 100644 index 0000000..866aa06 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessalgorithm/BusinessAlgorithmDO.java @@ -0,0 +1,57 @@ +package com.zt.plat.module.base.dal.dataobject.businessalgorithm; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +/** +* 业务算法 DO +* +* @author yangxiaofeng +*/ +@TableName("bse_bsn_alg") +@KeySequence("bse_bsn_alg_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusinessAlgorithmDO extends BaseDO { + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 类型 + */ + @TableField("TP_VAL") + private String typeValue; + /** + * 状态 + */ + @TableField("STS_VAL") + private String statusValue; + /** + * 算法编码 + */ + @TableField("CD") + private String code; + /** + * 算法名称 + */ + @TableField("NAME") + private String name; + /** + * 算法描述 + */ + @TableField("DSP") + private String description; + /** + * 算法代码 + */ + @TableField("CDG") + private String coding; + +} \ 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/dataobject/businessdepartmentindicator/BusinessDepartmentIndicatorDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdepartmentindicator/BusinessDepartmentIndicatorDO.java new file mode 100644 index 0000000..d06ad9b --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdepartmentindicator/BusinessDepartmentIndicatorDO.java @@ -0,0 +1,78 @@ +package com.zt.plat.module.base.dal.dataobject.businessdepartmentindicator; + +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** + * 部门持有指标 DO + * + * @author YangXiaofeng + */ +@TableName("bse_bsn_dept_ind") +@KeySequence("bse_bsn_dept_ind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class BusinessDepartmentIndicatorDO extends BusinessBaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 指标ID + */ + @TableField("IND_ID") + private Long indicatorId; + /** + * 计量单位ID + */ + @TableField("UNT_ID") + private Long unitId; + /** + * 规则ID + */ + @TableField("RUL_ID") + private Long ruleId; + /** + * 算法ID + */ + @TableField("ALG_ID") + private Long algorithmId; + /** + * 实体ID + */ + @TableField("ENTY_ID") + private Long entityId; + /** + * 值 + */ + @TableField("VAL") + private String value; + /** + * 是否关键指标 + */ + @TableField("IS_KY") + private Integer isKey; + /** + * 排序号 + */ + @TableField("SRT") + private Long sort; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + + +} \ 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/dataobject/businessdictionarytype/BusinessDictionaryDataDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryDataDO.java new file mode 100644 index 0000000..5e42c65 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryDataDO.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.base.dal.dataobject.businessdictionarytype; + +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; + +/** + * 业务字典数据 DO + * + * @author yangxiaofeng + */ +@TableName("bse_bsn_dic_dat") +@KeySequence("bse_bsn_dic_dat_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusinessDictionaryDataDO extends BaseDO { + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 上级字典 + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 字典类型 + */ + @TableField("DIC_TP_ID") + private Long dictionaryTypeId; + /** + * 排序号 + */ + @TableField("SRT") + private Long sort; + /** + * 字典标签 + */ + @TableField("LBL") + private String label; + /** + * 字典值 + */ + @TableField("VAL") + private String value; + /** + * 状态(0正常 1停用) + */ + @TableField("STS") + private Long status; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ 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/dataobject/businessdictionarytype/BusinessDictionaryTypeDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryTypeDO.java new file mode 100644 index 0000000..29aabc0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdictionarytype/BusinessDictionaryTypeDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.businessdictionarytype; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; + +import java.time.LocalDateTime; + +import com.baomidou.mybatisplus.annotation.*; + +/** + * 业务字典类型 DO + * + * @author 后台管理 + */ +@TableName("bse_bsn_dic_tp") +@KeySequence("bse_bsn_dic_tp_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class BusinessDictionaryTypeDO extends BaseDO { + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 字典名称 + */ + @TableField("NAME") + private String name; + /** + * 字典类型 + */ + @TableField("TP") + private String type; + /** + * 状态(0正常 1停用) + */ + @TableField("STS") + private Long status; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + /** + * 删除时间 + */ + @TableField("DEL_TM") + private LocalDateTime delTime; + +} \ 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/dataobject/businessdimension/BusinessDimensionDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdimension/BusinessDimensionDO.java new file mode 100644 index 0000000..3f56e18 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessdimension/BusinessDimensionDO.java @@ -0,0 +1,54 @@ +package com.zt.plat.module.base.dal.dataobject.businessdimension; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +/** +* 经营指标维度 DO +* +* @author 陈鹏 +*/ +@TableName("bse_bsn_dim") +@KeySequence("bse_bsn_dim_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusinessDimensionDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 父级ID + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 维度类型 + */ + @TableField("TP_VAL") + private String typeValue; + /** + * 维度编码 + */ + @TableField("CD") + private String code; + /** + * 维度名称 + */ + @TableField("NAME") + private String name; + /** + * 备注 + */ + @TableField("RMK") + private String remark; + +} \ 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/dataobject/businessindicator/BusinessIndicatorDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessindicator/BusinessIndicatorDO.java new file mode 100644 index 0000000..c2367be --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessindicator/BusinessIndicatorDO.java @@ -0,0 +1,99 @@ +package com.zt.plat.module.base.dal.dataobject.businessindicator; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; +/** +* 经营指标 DO +* +* @author chengpeng +*/ +@TableName("bse_bsn_ind") +@KeySequence("bse_bsn_ind_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusinessIndicatorDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 父级ID + */ + @TableField("PRN_ID") + private Long parentId; + /** + * 指标编码 + */ + @TableField("CD") + private String code; + /** + * 指标名称 + */ + @TableField("NAME") + private String name; + /** + * 指标描述 + */ + @TableField("DSP") + private String description; + /** + * 数据类型 + */ + @TableField("DAT_VAL") + private String dataValue; + /** + * 计量单位量ID + */ + @TableField("QTY_ID") + private Long quantityId; + /** + * 计量单位ID + */ + @TableField("UNT_ID") + private Long unitId; + /** + * 算法ID + */ + @TableField("ALG_ID") + private Long algorithmId; + /** + * 规则ID + */ + @TableField("RUL_ID") + private Long ruleId; + /** + * 维度ID + */ + @TableField("DIM_ID") + private Long dimensionId; + /** + * 周期类型值 + */ + @TableField("CYCL_VAL") + private String cycleValue; + /** + * 状态 + */ + @TableField("STS_VAL") + private String statusValue; + /** + * 是否可修改 + */ + @TableField("IS_MDF") + private Integer isModify; + /** + * 用户ID + */ + @TableField("USER_ID") + private Long userId; + +} \ 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/dataobject/businessrule/BusinessRuleDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessrule/BusinessRuleDO.java new file mode 100644 index 0000000..c36e9cf --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/businessrule/BusinessRuleDO.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.base.dal.dataobject.businessrule; + +import com.zt.plat.framework.mybatis.core.dataobject.BaseDO; +import lombok.*; +import com.baomidou.mybatisplus.annotation.*; + +/** +* 业务规则 DO +* +* @author yangxiaofeng +*/ +@TableName("bse_bsn_rul") +@KeySequence("bse_bsn_rul_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BusinessRuleDO extends BaseDO { + + + + /** + * 主键ID + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 状态 + */ + @TableField("STS_VAL") + private String statusValue; + /** + * 类型 + */ + @TableField("TP_VAL") + private String typeValue; + /** + * 规则编码 + */ + @TableField("CD") + private String code; + /** + * 规则名称 + */ + @TableField("NAME") + private String name; + /** + * 规则描述 + */ + @TableField("DSP") + private String description; + /** + * 规则表达式 + */ + @TableField("EPSSN") + private String expression; + +} \ 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/dataobject/tmpltp/TmplInscBsnRelDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscBsnRelDO.java new file mode 100644 index 0000000..5c8d4e1 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscBsnRelDO.java @@ -0,0 +1,55 @@ +package com.zt.plat.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 模板实例与业务中间 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_tmpl_insc_bsn_rel") +@KeySequence("bse_tmpl_insc_bsn_rel_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TmplInscBsnRelDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 业务主键 + */ + @TableField("BSN_ID") + private Long bsnId; + /** + * 实例主键 + */ + @TableField("INSC_ID") + private String inscId; + /** + * 文件内容 + */ + @TableField("CNTT") + private String cntt; + /** + * 版本号,如v1.0 + */ + @TableField("VER") + private String ver; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscDatBsnDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscDatBsnDO.java new file mode 100644 index 0000000..5ddd4ff --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscDatBsnDO.java @@ -0,0 +1,48 @@ +package com.zt.plat.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 业务实例字段值 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_tmpl_insc_dat_bsn") +@KeySequence("bse_tmpl_insc_dat_bsn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TmplInscDatBsnDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 关联中间表业务主键 + */ + @TableField("BSN_ID") + private String bsnId; + /** + * 字段标识,关联字段库 + */ + @TableField("INSC_FLD_ID") + private String inscFldId; + /** + * 用户填写的值 + */ + @TableField("FLD_VAL") + private String fldVal; + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscItmBsnDO.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscItmBsnDO.java new file mode 100644 index 0000000..ba2c182 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/dataobject/tmpltp/TmplInscItmBsnDO.java @@ -0,0 +1,48 @@ +package com.zt.plat.module.base.dal.dataobject.tmpltp; + +import lombok.*; +import java.util.*; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 业务实例条款值 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_tmpl_insc_itm_bsn") +@KeySequence("bse_tmpl_insc_itm_bsn_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class TmplInscItmBsnDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.INPUT) + private String id; + /** + * 关联中间表业务主键 + */ + @TableField("BSN_ID") + private String bsnId; + /** + * 条款库主键,关联字段库 + */ + @TableField("INSC_ITM_ID") + private String inscItmId; + /** + * 用户填写的值 + */ + @TableField("VAL") + private String val; + +} 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 70cb480..ec0d30b 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,13 @@ 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.AccountDTO; import com.zt.plat.module.base.controller.admin.base.vo.AccountPageReqVO; import com.zt.plat.module.base.dal.dataobject.base.AccountDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 账户条款 Mapper * @@ -19,6 +22,8 @@ public interface AccountMapper extends BaseMapperX { return selectPage(reqVO, 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()) @@ -29,4 +34,18 @@ public interface AccountMapper extends BaseMapperX { .orderByDesc(AccountDO::getId)); } + default List selectNoPage(AccountDTO dto){ + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(AccountDO::getType, dto.getType()) + .likeIfPresent(AccountDO::getAccountName, dto.getAccountName()) + .likeIfPresent(AccountDO::getAddress, dto.getAddress()) + .likeIfPresent(AccountDO::getPhone, dto.getPhone()) + .eqIfPresent(AccountDO::getBankAccount, dto.getBankAccount()) + .eqIfPresent(AccountDO::getCustomerName, dto.getCustomerName()) + .eqIfPresent(AccountDO::getCustomerNumber, dto.getCustomerNumber()) + .eqIfPresent(AccountDO::getIsEnable, dto.getIsEnable()) + .eqIfPresent(AccountDO::getAccountNumber, dto.getAccountNumber()) + .eqIfPresent(AccountDO::getTaxNumber, dto.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..330f4cc 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/dal/mysql/base/FactoryMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/FactoryMapper.java index 53883ae..05b5d31 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/FactoryMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/FactoryMapper.java @@ -18,6 +18,9 @@ public interface FactoryMapper extends BaseMapperX { default PageResult selectPage(FactoryPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(FactoryDO::getCompanyNumber, reqVO.getCompanyNumber()) + .likeIfPresent(FactoryDO::getCpnName, reqVO.getCpnName()) + .eqIfPresent(FactoryDO::getErpCompanyNumber, reqVO.getErpCompanyNumber()) + .likeIfPresent(FactoryDO::getErpCompanyName, reqVO.getErpCompanyName()) .likeIfPresent(FactoryDO::getName, reqVO.getName()) .eqIfPresent(FactoryDO::getNumber, reqVO.getNumber()) .betweenIfPresent(FactoryDO::getCreateTime, reqVO.getCreateTime()) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java index ced6a90..f3ff895 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/MaterialOtherMapper.java @@ -3,10 +3,13 @@ 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.MaterialOtherDTO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherPageReqVO; import com.zt.plat.module.base.dal.dataobject.base.MaterialOtherDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 物料拓展数据 Mapper * @@ -27,9 +30,25 @@ public interface MaterialOtherMapper extends BaseMapperX { .eqIfPresent(MaterialOtherDO::getCoding, reqVO.getCoding()) .eqIfPresent(MaterialOtherDO::getGradeUnit, reqVO.getGradeUnit()) .betweenIfPresent(MaterialOtherDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(MaterialOtherDO::getDecimal, reqVO.getDecimal()) + .eqIfPresent(MaterialOtherDO::getDecimalValue, reqVO.getDecimalValue()) .eqIfPresent(MaterialOtherDO::getIsEnable, reqVO.getIsEnable()) .orderByDesc(MaterialOtherDO::getId)); } + default List selectList(MaterialOtherDTO dto) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(MaterialOtherDO::getMaterialNumber, dto.getMaterialNumber()) + .likeIfPresent(MaterialOtherDO::getMaterialName, dto.getMaterialName()) + .eqIfPresent(MaterialOtherDO::getErpMaterialNumber, dto.getErpMaterialNumber()) + .likeIfPresent(MaterialOtherDO::getErpMaterialName, dto.getErpMaterialName()) + .eqIfPresent(MaterialOtherDO::getUnit, dto.getUnit()) + .eqIfPresent(MaterialOtherDO::getAbbreviation, dto.getAbbreviation()) + .likeIfPresent(MaterialOtherDO::getName, dto.getName()) + .eqIfPresent(MaterialOtherDO::getCoding, dto.getCoding()) + .eqIfPresent(MaterialOtherDO::getGradeUnit, dto.getGradeUnit()) + .betweenIfPresent(MaterialOtherDO::getCreateTime, dto.getCreateTime()) + .eqIfPresent(MaterialOtherDO::getDecimalValue, dto.getDecimalValue()) + .eqIfPresent(MaterialOtherDO::getIsEnable, dto.getIsEnable()) + .orderByDesc(MaterialOtherDO::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/TaxMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/TaxMapper.java new file mode 100644 index 0000000..ca0dc83 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/TaxMapper.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.dal.mysql.base; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.base.TaxDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.base.vo.*; + +/** + * 税码信息 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface TaxMapper extends BaseMapperX { + + default PageResult selectPage(TaxPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TaxDO::getType, reqVO.getType()) + .eqIfPresent(TaxDO::getCategory, reqVO.getCategory()) + .eqIfPresent(TaxDO::getTaxCoding, reqVO.getTaxCoding()) + .eqIfPresent(TaxDO::getRemark, reqVO.getRemark()) + .eqIfPresent(TaxDO::getTax, reqVO.getTax()) + .betweenIfPresent(TaxDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(TaxDO::getIsEnable, reqVO.getIsEnable()) + .eqIfPresent(TaxDO::getCustomerNumber, reqVO.getCustomerNumber()) + .likeIfPresent(TaxDO::getCustomerName, reqVO.getCustomerName()) + .orderByDesc(TaxDO::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/WarehouseMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/WarehouseMapper.java index ec28235..60d3a7b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/WarehouseMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/base/WarehouseMapper.java @@ -18,6 +18,9 @@ public interface WarehouseMapper extends BaseMapperX { default PageResult selectPage(WarehousePageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .eqIfPresent(WarehouseDO::getFactoryNumber, reqVO.getFactoryNumber()) + .likeIfPresent(WarehouseDO::getCpnName, reqVO.getCpnName()) + .likeIfPresent(WarehouseDO::getErpFactoryName, reqVO.getErpFactoryName()) + .eqIfPresent(WarehouseDO::getErpFactoryNumber, reqVO.getErpFactoryNumber()) .likeIfPresent(WarehouseDO::getName, reqVO.getName()) .eqIfPresent(WarehouseDO::getCoding, reqVO.getCoding()) .betweenIfPresent(WarehouseDO::getCreateTime, reqVO.getCreateTime()) diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java index 215ad5a..ece831c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceDataMapper.java @@ -8,6 +8,8 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 实例字段值 Mapper @@ -25,7 +27,7 @@ public interface TemplateInstanceDataMapper extends BaseMapperX templateInstanceIds); int updateFldValById(@Param("inscId") String inscId, @Param("fldVal") String fldVal, @Param("fldKy") String fldKy); diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java index 6dd5476..87d9d2f 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TemplateInstanceItemMapper.java @@ -8,6 +8,8 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** * 实例条款值 Mapper @@ -26,5 +28,5 @@ public interface TemplateInstanceItemMapper extends BaseMapperX templateInstanceIds); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscBsnRelMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscBsnRelMapper.java new file mode 100644 index 0000000..a3c867e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscBsnRelMapper.java @@ -0,0 +1,32 @@ +package com.zt.plat.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; + +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelPageReqVO; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 模板实例与业务中间 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface TmplInscBsnRelMapper extends BaseMapperX { + + default PageResult selectPage(TmplInscBsnRelPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TmplInscBsnRelDO::getBsnId, reqVO.getBsnId()) + .eqIfPresent(TmplInscBsnRelDO::getInscId, reqVO.getInscId()) + .eqIfPresent(TmplInscBsnRelDO::getCntt, reqVO.getCntt()) + .eqIfPresent(TmplInscBsnRelDO::getVer, reqVO.getVer()) + .betweenIfPresent(TmplInscBsnRelDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplInscBsnRelDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscDatBsnMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscDatBsnMapper.java new file mode 100644 index 0000000..33a6389 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscDatBsnMapper.java @@ -0,0 +1,30 @@ +package com.zt.plat.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; + +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscDatBsnDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +/** + * 业务实例字段值 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface TmplInscDatBsnMapper extends BaseMapperX { + + default PageResult selectPage(TmplInscDatBsnPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TmplInscDatBsnDO::getBsnId, reqVO.getBsnId()) + .eqIfPresent(TmplInscDatBsnDO::getInscFldId, reqVO.getInscFldId()) + .eqIfPresent(TmplInscDatBsnDO::getFldVal, reqVO.getFldVal()) + .betweenIfPresent(TmplInscDatBsnDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplInscDatBsnDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscItmBsnMapper.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscItmBsnMapper.java new file mode 100644 index 0000000..9b71b95 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/dal/mysql/tmpltp/TmplInscItmBsnMapper.java @@ -0,0 +1,29 @@ +package com.zt.plat.module.base.dal.mysql.tmpltp; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscItmBsnDO; +import org.apache.ibatis.annotations.Mapper; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +/** + * 业务实例条款值 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface TmplInscItmBsnMapper extends BaseMapperX { + + default PageResult selectPage(TmplInscItmBsnPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(TmplInscItmBsnDO::getBsnId, reqVO.getBsnId()) + .eqIfPresent(TmplInscItmBsnDO::getInscItmId, reqVO.getInstceItmId()) + .eqIfPresent(TmplInscItmBsnDO::getVal, reqVO.getVal()) + .betweenIfPresent(TmplInscItmBsnDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(TmplInscItmBsnDO::getId)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/framework/rpc/config/RpcConfiguration.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/framework/rpc/config/RpcConfiguration.java index 3e2e454..df46086 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/framework/rpc/config/RpcConfiguration.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/framework/rpc/config/RpcConfiguration.java @@ -6,6 +6,6 @@ import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Configuration; @Configuration(value = "baseRpcConfiguration", proxyBeanMethods = false) -@EnableFeignClients(clients = {DeptApi.class, FileApi.class}) +@EnableFeignClients(clients = {DeptApi.class, FileApi.class,DeptApi.class}) public class RpcConfiguration { } 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..1df0c04 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.AccountDTO; 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(AccountDTO 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..fb12f6b 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.AccountDTO; 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(AccountDTO dto) { + List entityList = accountMapper.selectNoPage(dto); + return BeanUtils.toBean(entityList, AccountDTO.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/java/com/zt/plat/module/base/service/base/MaterialInfomationService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationService.java index cf0cb49..952a06f 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationService.java @@ -61,4 +61,5 @@ public interface MaterialInfomationService { */ PageResult getMaterialInfomationPage(MaterialInfomationPageReqVO pageReqVO); + String getOneTest(); } \ 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/MaterialInfomationServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java index 19e88a8..eec1acc 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialInfomationServiceImpl.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.service.base; import cn.hutool.core.collection.CollUtil; +import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationPageReqVO; @@ -8,6 +9,8 @@ import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationRespVO import com.zt.plat.module.base.controller.admin.base.vo.MaterialInfomationSaveReqVO; import com.zt.plat.module.base.dal.dataobject.base.MaterialInfomationDO; import com.zt.plat.module.base.dal.mysql.base.MaterialInfomationMapper; +import com.zt.plat.module.erp.api.ErpExternalApi; +import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; import jakarta.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -29,6 +32,10 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService @Resource private MaterialInfomationMapper materialInfomationMapper; + @Resource + private ErpExternalApi erpExternalApi; + + @Override public MaterialInfomationRespVO createMaterialInfomation(MaterialInfomationSaveReqVO createReqVO) { // 插入 @@ -86,4 +93,14 @@ public class MaterialInfomationServiceImpl implements MaterialInfomationService return materialInfomationMapper.selectPage(pageReqVO); } + @Override + public String getOneTest() { + ErpProductiveVersionReqDTO reqDTO = new ErpProductiveVersionReqDTO(); + reqDTO.setFactoryNumber("5020"); + reqDTO.setMaterialNumber("224814"); + CommonResult erpProductiveVersion = erpExternalApi.getErpProductiveVersionByFM(reqDTO); + return erpProductiveVersion.getData(); + } + + } \ 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/MaterialOtherService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherService.java index e136bfb..90cb584 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherService.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.MaterialOtherDTO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherRespVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherSaveReqVO; @@ -62,4 +63,6 @@ public interface MaterialOtherService { PageResult getMaterialOtherPage(MaterialOtherPageReqVO pageReqVO); void enableMaterialOtherList(List saveReqVOS); + + List getMaterialOtherNoPage(MaterialOtherDTO 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/MaterialOtherServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherServiceImpl.java index 91b6e82..919a79b 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/MaterialOtherServiceImpl.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.MaterialOtherDTO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherPageReqVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherRespVO; import com.zt.plat.module.base.controller.admin.base.vo.MaterialOtherSaveReqVO; @@ -96,4 +97,10 @@ public class MaterialOtherServiceImpl implements MaterialOtherService { } } + @Override + public List getMaterialOtherNoPage(MaterialOtherDTO dto) { + List list = materialOtherMapper.selectList(dto); + return BeanUtils.toBean(list, MaterialOtherDTO.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/TaxService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxService.java new file mode 100644 index 0000000..eabf8f5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxService.java @@ -0,0 +1,64 @@ +package com.zt.plat.module.base.service.base; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.base.controller.admin.base.vo.TaxPageReqVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxRespVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.base.TaxDO; +import jakarta.validation.Valid; + +import java.util.List; + +/** + * 税码信息 Service 接口 + * + * @author 后台管理-1 + */ +public interface TaxService { + + /** + * 创建税码信息 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TaxRespVO createTax(@Valid TaxSaveReqVO createReqVO); + + /** + * 更新税码信息 + * + * @param updateReqVO 更新信息 + */ + void updateTax(@Valid TaxSaveReqVO updateReqVO); + + /** + * 删除税码信息 + * + * @param id 编号 + */ + void deleteTax(Long id); + + /** + * 批量删除税码信息 + * + * @param ids 编号 + */ + void deleteTaxListByIds(List ids); + + /** + * 获得税码信息 + * + * @param id 编号 + * @return 税码信息 + */ + TaxDO getTax(Long id); + + /** + * 获得税码信息分页 + * + * @param pageReqVO 分页查询 + * @return 税码信息分页 + */ + PageResult getTaxPage(TaxPageReqVO pageReqVO); + +} \ 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/TaxServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxServiceImpl.java new file mode 100644 index 0000000..09f5c03 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/base/TaxServiceImpl.java @@ -0,0 +1,89 @@ +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.base.controller.admin.base.vo.TaxPageReqVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxRespVO; +import com.zt.plat.module.base.controller.admin.base.vo.TaxSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.base.TaxDO; +import com.zt.plat.module.base.dal.mysql.base.TaxMapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import java.util.List; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.TAX_NOT_EXISTS; + +/** + * 税码信息 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class TaxServiceImpl implements TaxService { + + @Resource + private TaxMapper taxMapper; + + @Override + public TaxRespVO createTax(TaxSaveReqVO createReqVO) { + // 插入 + TaxDO tax = BeanUtils.toBean(createReqVO, TaxDO.class); + taxMapper.insert(tax); + // 返回 + return BeanUtils.toBean(tax, TaxRespVO.class); + } + + @Override + public void updateTax(TaxSaveReqVO updateReqVO) { + // 校验存在 + validateTaxExists(updateReqVO.getId()); + // 更新 + TaxDO updateObj = BeanUtils.toBean(updateReqVO, TaxDO.class); + taxMapper.updateById(updateObj); + } + + @Override + public void deleteTax(Long id) { + // 校验存在 + validateTaxExists(id); + // 删除 + taxMapper.deleteById(id); + } + + @Override + public void deleteTaxListByIds(List ids) { + // 校验存在 + validateTaxExists(ids); + // 删除 + taxMapper.deleteByIds(ids); + } + + private void validateTaxExists(List ids) { + List list = taxMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TAX_NOT_EXISTS); + } + } + + private void validateTaxExists(Long id) { + if (taxMapper.selectById(id) == null) { + throw exception(TAX_NOT_EXISTS); + } + } + + @Override + public TaxDO getTax(Long id) { + return taxMapper.selectById(id); + } + + @Override + public PageResult getTaxPage(TaxPageReqVO pageReqVO) { + return taxMapper.selectPage(pageReqVO); + } + +} \ 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/businessalgorithm/BusinessAlgorithmService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmService.java new file mode 100644 index 0000000..88556df --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmService.java @@ -0,0 +1,61 @@ +package com.zt.plat.module.base.service.businessalgorithm; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessalgorithm.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessalgorithm.BusinessAlgorithmDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 业务算法 Service 接口 + * + * @author yangxiaofeng + */ +public interface BusinessAlgorithmService { + + /** + * 创建业务算法 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessAlgorithmRespVO createBusinessAlgorithm(@Valid BusinessAlgorithmSaveReqVO createReqVO); + + /** + * 更新业务算法 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessAlgorithm(@Valid BusinessAlgorithmSaveReqVO updateReqVO); + + /** + * 删除业务算法 + * + * @param id 编号 + */ + void deleteBusinessAlgorithm(Long id); + + /** + * 批量删除业务算法 + * + * @param ids 编号 + */ + void deleteBusinessAlgorithmListByIds(List ids); + + /** + * 获得业务算法 + * + * @param id 编号 + * @return 业务算法 + */ + BusinessAlgorithmDO getBusinessAlgorithm(Long id); + + /** + * 获得业务算法分页 + * + * @param pageReqVO 分页查询 + * @return 业务算法分页 + */ + PageResult getBusinessAlgorithmPage(BusinessAlgorithmPageReqVO pageReqVO); + +} \ 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/businessalgorithm/BusinessAlgorithmServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmServiceImpl.java new file mode 100644 index 0000000..04dd1d9 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessalgorithm/BusinessAlgorithmServiceImpl.java @@ -0,0 +1,85 @@ +package com.zt.plat.module.base.service.businessalgorithm; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessalgorithm.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessalgorithm.BusinessAlgorithmDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.base.dal.dao.businessalgorithm.BusinessAlgorithmMapper; +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 业务算法 Service 实现类 + * + * @author yangxiaofeng + */ +@Service +@Validated +public class BusinessAlgorithmServiceImpl implements BusinessAlgorithmService { + + @Resource + private BusinessAlgorithmMapper businessAlgorithmMapper; + + @Override + public BusinessAlgorithmRespVO createBusinessAlgorithm(BusinessAlgorithmSaveReqVO createReqVO) { + // 插入 + BusinessAlgorithmDO businessAlgorithm = BeanUtils.toBean(createReqVO, BusinessAlgorithmDO.class); + businessAlgorithmMapper.insert(businessAlgorithm); + // 返回 + return BeanUtils.toBean(businessAlgorithm, BusinessAlgorithmRespVO.class); + } + + @Override + public void updateBusinessAlgorithm(BusinessAlgorithmSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessAlgorithmExists(updateReqVO.getId()); + // 更新 + BusinessAlgorithmDO updateObj = BeanUtils.toBean(updateReqVO, BusinessAlgorithmDO.class); + businessAlgorithmMapper.updateById(updateObj); + } + + @Override + public void deleteBusinessAlgorithm(Long id) { + // 校验存在 + validateBusinessAlgorithmExists(id); + // 删除 + businessAlgorithmMapper.deleteById(id); + } + + @Override + public void deleteBusinessAlgorithmListByIds(List ids) { + // 校验存在 + validateBusinessAlgorithmExists(ids); + // 删除 + businessAlgorithmMapper.deleteByIds(ids); + } + + private void validateBusinessAlgorithmExists(List ids) { + List list = businessAlgorithmMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_ALGORITHM_NOT_EXISTS); + } + } + + private void validateBusinessAlgorithmExists(Long id) { + if (businessAlgorithmMapper.selectById(id) == null) { + throw exception(BUSINESS_ALGORITHM_NOT_EXISTS); + } + } + + @Override + public BusinessAlgorithmDO getBusinessAlgorithm(Long id) { + return businessAlgorithmMapper.selectById(id); + } + + @Override + public PageResult getBusinessAlgorithmPage(BusinessAlgorithmPageReqVO pageReqVO) { + return businessAlgorithmMapper.selectPage(pageReqVO); + } + +} \ 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/businessdepartmentindicator/BusinessDepartmentIndicatorService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorService.java new file mode 100644 index 0000000..b48af9e --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorService.java @@ -0,0 +1,61 @@ +package com.zt.plat.module.base.service.businessdepartmentindicator; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdepartmentindicator.BusinessDepartmentIndicatorDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 部门持有指标 Service 接口 + * + * @author YangXiaofeng + */ +public interface BusinessDepartmentIndicatorService { + + /** + * 创建部门持有指标 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessDepartmentIndicatorRespVO createBusinessDepartmentIndicator(@Valid BusinessDepartmentIndicatorSaveReqVO createReqVO); + + /** + * 更新部门持有指标 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessDepartmentIndicator(@Valid BusinessDepartmentIndicatorSaveReqVO updateReqVO); + + /** + * 删除部门持有指标 + * + * @param id 编号 + */ + void deleteBusinessDepartmentIndicator(Long id); + + /** + * 批量删除部门持有指标 + * + * @param ids 编号 + */ + void deleteBusinessDepartmentIndicatorListByIds(List ids); + + /** + * 获得部门持有指标 + * + * @param id 编号 + * @return 部门持有指标 + */ + BusinessDepartmentIndicatorDO getBusinessDepartmentIndicator(Long id); + + /** + * 获得部门持有指标分页 + * + * @param pageReqVO 分页查询 + * @return 部门持有指标分页 + */ + PageResult getBusinessDepartmentIndicatorPage(BusinessDepartmentIndicatorPageReqVO pageReqVO); + +} \ 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/businessdepartmentindicator/BusinessDepartmentIndicatorServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorServiceImpl.java new file mode 100644 index 0000000..173e6ea --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdepartmentindicator/BusinessDepartmentIndicatorServiceImpl.java @@ -0,0 +1,88 @@ +package com.zt.plat.module.base.service.businessdepartmentindicator; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessdepartmentindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdepartmentindicator.BusinessDepartmentIndicatorDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.businessdepartmentindicator.BusinessDepartmentIndicatorMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 部门持有指标 Service 实现类 + * + * @author YangXiaofeng + */ +@Service +@Validated +public class BusinessDepartmentIndicatorServiceImpl implements BusinessDepartmentIndicatorService { + + @Resource + private BusinessDepartmentIndicatorMapper businessDepartmentIndicatorMapper; + + @Override + public BusinessDepartmentIndicatorRespVO createBusinessDepartmentIndicator(BusinessDepartmentIndicatorSaveReqVO createReqVO) { + // 插入 + BusinessDepartmentIndicatorDO businessDepartmentIndicator = BeanUtils.toBean(createReqVO, BusinessDepartmentIndicatorDO.class); + businessDepartmentIndicatorMapper.insert(businessDepartmentIndicator); + // 返回 + return BeanUtils.toBean(businessDepartmentIndicator, BusinessDepartmentIndicatorRespVO.class); + } + + @Override + public void updateBusinessDepartmentIndicator(BusinessDepartmentIndicatorSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessDepartmentIndicatorExists(updateReqVO.getId()); + // 更新 + BusinessDepartmentIndicatorDO updateObj = BeanUtils.toBean(updateReqVO, BusinessDepartmentIndicatorDO.class); + businessDepartmentIndicatorMapper.updateById(updateObj); + } + + @Override + public void deleteBusinessDepartmentIndicator(Long id) { + // 校验存在 + validateBusinessDepartmentIndicatorExists(id); + // 删除 + businessDepartmentIndicatorMapper.deleteById(id); + } + + @Override + public void deleteBusinessDepartmentIndicatorListByIds(List ids) { + // 校验存在 + validateBusinessDepartmentIndicatorExists(ids); + // 删除 + businessDepartmentIndicatorMapper.deleteByIds(ids); + } + + private void validateBusinessDepartmentIndicatorExists(List ids) { + List list = businessDepartmentIndicatorMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_DEPARTMENT_INDICATOR_NOT_EXISTS); + } + } + + private void validateBusinessDepartmentIndicatorExists(Long id) { + if (businessDepartmentIndicatorMapper.selectById(id) == null) { + throw exception(BUSINESS_DEPARTMENT_INDICATOR_NOT_EXISTS); + } + } + + @Override + public BusinessDepartmentIndicatorDO getBusinessDepartmentIndicator(Long id) { + return businessDepartmentIndicatorMapper.selectById(id); + } + + @Override + public PageResult getBusinessDepartmentIndicatorPage(BusinessDepartmentIndicatorPageReqVO pageReqVO) { + return businessDepartmentIndicatorMapper.selectPage(pageReqVO); + } + +} \ 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/businessdictionarytype/BusinessDictionaryTypeService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeService.java new file mode 100644 index 0000000..b448aa5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeService.java @@ -0,0 +1,72 @@ +package com.zt.plat.module.base.service.businessdictionarytype; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessdictionarytype.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryTypeDO; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryDataDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 业务字典类型 Service 接口 + * + * @author 后台管理 + */ +public interface BusinessDictionaryTypeService { + + /** + * 创建业务字典类型 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessDictionaryTypeRespVO createBusinessDictionaryType(@Valid BusinessDictionaryTypeSaveReqVO createReqVO); + + /** + * 更新业务字典类型 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessDictionaryType(@Valid BusinessDictionaryTypeSaveReqVO updateReqVO); + + /** + * 删除业务字典类型 + * + * @param id 编号 + */ + void deleteBusinessDictionaryType(Long id); + + /** + * 批量删除业务字典类型 + * + * @param ids 编号 + */ + void deleteBusinessDictionaryTypeListByIds(List ids); + + /** + * 获得业务字典类型 + * + * @param id 编号 + * @return 业务字典类型 + */ + BusinessDictionaryTypeDO getBusinessDictionaryType(Long id); + + /** + * 获得业务字典类型分页 + * + * @param pageReqVO 分页查询 + * @return 业务字典类型分页 + */ + PageResult getBusinessDictionaryTypePage(BusinessDictionaryTypePageReqVO pageReqVO); + + // ==================== 子表(业务字典数据) ==================== + + /** + * 获得业务字典数据列表 + * + * @param dictionaryTypeId 字典类型 + * @return 业务字典数据列表 + */ + List getBusinessDictionaryDataListByDictionaryTypeId(Long dictionaryTypeId); + +} \ 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/businessdictionarytype/BusinessDictionaryTypeServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeServiceImpl.java new file mode 100644 index 0000000..32b4149 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdictionarytype/BusinessDictionaryTypeServiceImpl.java @@ -0,0 +1,155 @@ +package com.zt.plat.module.base.service.businessdictionarytype; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessdictionarytype.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryTypeDO; +import com.zt.plat.module.base.dal.dataobject.businessdictionarytype.BusinessDictionaryDataDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.businessdictionarytype.BusinessDictionaryTypeMapper; +import com.zt.plat.module.base.dal.dao.businessdictionarytype.BusinessDictionaryDataMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 业务字典类型 Service 实现类 + * + * @author 后台管理 + */ +@Service +@Validated +public class BusinessDictionaryTypeServiceImpl implements BusinessDictionaryTypeService { + + @Resource + private BusinessDictionaryTypeMapper businessDictionaryTypeMapper; + @Resource + private BusinessDictionaryDataMapper businessDictionaryDataMapper; + + @Override + @Transactional(rollbackFor = Exception.class) + public BusinessDictionaryTypeRespVO createBusinessDictionaryType(BusinessDictionaryTypeSaveReqVO createReqVO) { + // 插入 + BusinessDictionaryTypeDO businessDictionaryType = BeanUtils.toBean(createReqVO, BusinessDictionaryTypeDO.class); + businessDictionaryTypeMapper.insert(businessDictionaryType); + + // 插入子表 + createBusinessDictionaryDataList(businessDictionaryType.getId(), createReqVO.getBusinessDictionaryDatas()); + // 返回 + return BeanUtils.toBean(businessDictionaryType, BusinessDictionaryTypeRespVO.class); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateBusinessDictionaryType(BusinessDictionaryTypeSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessDictionaryTypeExists(updateReqVO.getId()); + // 更新 + BusinessDictionaryTypeDO updateObj = BeanUtils.toBean(updateReqVO, BusinessDictionaryTypeDO.class); + businessDictionaryTypeMapper.updateById(updateObj); + + // 更新子表 + updateBusinessDictionaryDataList(updateReqVO.getId(), updateReqVO.getBusinessDictionaryDatas()); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteBusinessDictionaryType(Long id) { + // 校验存在 + validateBusinessDictionaryTypeExists(id); + // 删除 + businessDictionaryTypeMapper.deleteById(id); + + // 删除子表 + deleteBusinessDictionaryDataByDictionaryTypeId(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteBusinessDictionaryTypeListByIds(List ids) { + // 校验存在 + validateBusinessDictionaryTypeExists(ids); + // 删除 + businessDictionaryTypeMapper.deleteByIds(ids); + + // 删除子表 + deleteBusinessDictionaryDataByDictionaryTypeIds(ids); + } + + private void validateBusinessDictionaryTypeExists(List ids) { + List list = businessDictionaryTypeMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_DICTIONARY_TYPE_NOT_EXISTS); + } + } + + private void validateBusinessDictionaryTypeExists(Long id) { + if (businessDictionaryTypeMapper.selectById(id) == null) { + throw exception(BUSINESS_DICTIONARY_TYPE_NOT_EXISTS); + } + } + + @Override + public BusinessDictionaryTypeDO getBusinessDictionaryType(Long id) { + return businessDictionaryTypeMapper.selectById(id); + } + + @Override + public PageResult getBusinessDictionaryTypePage(BusinessDictionaryTypePageReqVO pageReqVO) { + return businessDictionaryTypeMapper.selectPage(pageReqVO); + } + + // ==================== 子表(业务字典数据) ==================== + + @Override + public List getBusinessDictionaryDataListByDictionaryTypeId(Long dictionaryTypeId) { + return businessDictionaryDataMapper.selectListByDictionaryTypeId(dictionaryTypeId); + } + + private void createBusinessDictionaryDataList(Long dictionaryTypeId, List list) { + list.forEach(o -> o.setDictionaryTypeId(dictionaryTypeId).clean()); + businessDictionaryDataMapper.insertBatch(list); + } + + private void updateBusinessDictionaryDataList(Long dictionaryTypeId, List list) { + list.forEach(o -> o.setDictionaryTypeId(dictionaryTypeId).clean()); + List oldList = businessDictionaryDataMapper.selectListByDictionaryTypeId(dictionaryTypeId); + List> diffList = diffList(oldList, list, (oldVal, newVal) -> { + boolean same = ObjectUtil.equal(oldVal.getId(), newVal.getId()); + if (same) { + newVal.setId(oldVal.getId()).clean(); // 解决更新情况下:updateTime 不更新 + } + return same; + }); + + // 第二步,批量添加、修改、删除 + if (CollUtil.isNotEmpty(diffList.get(0))) { + businessDictionaryDataMapper.insertBatch(diffList.get(0)); + } + if (CollUtil.isNotEmpty(diffList.get(1))) { + businessDictionaryDataMapper.updateBatch(diffList.get(1)); + } + if (CollUtil.isNotEmpty(diffList.get(2))) { + businessDictionaryDataMapper.deleteByIds(convertList(diffList.get(2), BusinessDictionaryDataDO::getId)); + } + } + + private void deleteBusinessDictionaryDataByDictionaryTypeId(Long dictionaryTypeId) { + businessDictionaryDataMapper.deleteByDictionaryTypeId(dictionaryTypeId); + } + + private void deleteBusinessDictionaryDataByDictionaryTypeIds(List dictionaryTypeIds) { + businessDictionaryDataMapper.deleteByDictionaryTypeIds(dictionaryTypeIds); + } + +} \ 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/businessdimension/BusinessDimensionService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionService.java new file mode 100644 index 0000000..aad5c2a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionService.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.base.service.businessdimension; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessdimension.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdimension.BusinessDimensionDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 经营指标维度 Service 接口 + * + * @author 陈鹏 + */ +public interface BusinessDimensionService { + + /** + * 创建经营指标维度 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessDimensionRespVO createBusinessDimension(@Valid BusinessDimensionSaveReqVO createReqVO); + + /** + * 更新经营指标维度 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessDimension(@Valid BusinessDimensionSaveReqVO updateReqVO); + + /** + * 删除经营指标维度 + * + * @param id 编号 + */ + void deleteBusinessDimension(Long id); + + /** + * 批量删除经营指标维度 + * + * @param ids 编号 + */ + void deleteBusinessDimensionListByIds(List ids); + + /** + * 获得经营指标维度 + * + * @param id 编号 + * @return 经营指标维度 + */ + BusinessDimensionDO getBusinessDimension(Long id); + + /** + * 获得经营指标维度分页 + * + * @param pageReqVO 分页查询 + * @return 经营指标维度分页 + */ + PageResult getBusinessDimensionPage(BusinessDimensionPageReqVO pageReqVO); + + /** + * 根据父级ID获取经营指标维度列表 + * + * @param parentId 父级ID + * @return 经营指标维度列表 + */ + List getBusinessDimensionListByParentId(Long parentId, Integer level); + +} \ 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/businessdimension/BusinessDimensionServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionServiceImpl.java new file mode 100644 index 0000000..c149ece --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessdimension/BusinessDimensionServiceImpl.java @@ -0,0 +1,90 @@ +package com.zt.plat.module.base.service.businessdimension; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessdimension.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessdimension.BusinessDimensionDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.base.dal.dao.businessdimension.BusinessDimensionMapper; +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 经营指标维度 Service 实现类 + * + * @author 陈鹏 + */ +@Service +@Validated +public class BusinessDimensionServiceImpl implements BusinessDimensionService { + + @Resource + private BusinessDimensionMapper businessDimensionMapper; + + @Override + public BusinessDimensionRespVO createBusinessDimension(BusinessDimensionSaveReqVO createReqVO) { + // 插入 + BusinessDimensionDO businessDimension = BeanUtils.toBean(createReqVO, BusinessDimensionDO.class); + businessDimensionMapper.insert(businessDimension); + // 返回 + return BeanUtils.toBean(businessDimension, BusinessDimensionRespVO.class); + } + + @Override + public void updateBusinessDimension(BusinessDimensionSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessDimensionExists(updateReqVO.getId()); + // 更新 + BusinessDimensionDO updateObj = BeanUtils.toBean(updateReqVO, BusinessDimensionDO.class); + businessDimensionMapper.updateById(updateObj); + } + + @Override + public void deleteBusinessDimension(Long id) { + // 校验存在 + validateBusinessDimensionExists(id); + // 删除 + businessDimensionMapper.deleteById(id); + } + + @Override + public void deleteBusinessDimensionListByIds(List ids) { + // 校验存在 + validateBusinessDimensionExists(ids); + // 删除 + businessDimensionMapper.deleteByIds(ids); + } + + private void validateBusinessDimensionExists(List ids) { + List list = businessDimensionMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_DIMENSION_NOT_EXISTS); + } + } + + private void validateBusinessDimensionExists(Long id) { + if (businessDimensionMapper.selectById(id) == null) { + throw exception(BUSINESS_DIMENSION_NOT_EXISTS); + } + } + + @Override + public BusinessDimensionDO getBusinessDimension(Long id) { + return businessDimensionMapper.selectById(id); + } + + @Override + public PageResult getBusinessDimensionPage(BusinessDimensionPageReqVO pageReqVO) { + return businessDimensionMapper.selectPage(pageReqVO); + } + + @Override + public List getBusinessDimensionListByParentId(Long parentId, Integer level) { + return businessDimensionMapper.selectListByParentId(parentId, level); + } + +} \ 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/businessindicator/BusinessIndicatorService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorService.java new file mode 100644 index 0000000..69b78ee --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorService.java @@ -0,0 +1,77 @@ +package com.zt.plat.module.base.service.businessindicator; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessindicator.BusinessIndicatorDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 经营指标 Service 接口 + * + * @author chengpeng + */ +public interface BusinessIndicatorService { + + /** + * 创建经营指标 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessIndicatorRespVO createBusinessIndicator(@Valid BusinessIndicatorSaveReqVO createReqVO); + + /** + * 更新经营指标 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessIndicator(@Valid BusinessIndicatorSaveReqVO updateReqVO); + + /** + * 删除经营指标 + * + * @param id 编号 + */ + void deleteBusinessIndicator(Long id); + + /** + * 批量删除经营指标 + * + * @param ids 编号 + */ + void deleteBusinessIndicatorListByIds(List ids); + + /** + * 获得经营指标 + * + * @param id 编号 + * @return 经营指标 + */ + BusinessIndicatorDO getBusinessIndicator(Long id); + + /** + * 获得经营指标分页 + * + * @param pageReqVO 分页查询 + * @return 经营指标分页 + */ + PageResult getBusinessIndicatorPage(BusinessIndicatorPageReqVO pageReqVO); + + /** + * 获得经营指标分页(包含关联信息) + * + * @param pageReqVO 分页查询 + * @return 经营指标分页(包含算法模型类型、算法类型、规则类型、规则模型、负责人相关名称信息) + */ + PageResult getBusinessIndicatorPageWithRelations(BusinessIndicatorPageReqVO pageReqVO); + + /** + * 根据父级ID获取经营指标列表 + * + * @param parentId 父级ID + * @return 经营指标列表 + */ + List getBusinessIndicatorListByParentId(Long parentId); + +} \ 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/businessindicator/BusinessIndicatorServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorServiceImpl.java new file mode 100644 index 0000000..4facb9d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessindicator/BusinessIndicatorServiceImpl.java @@ -0,0 +1,183 @@ +package com.zt.plat.module.base.service.businessindicator; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessindicator.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessindicator.BusinessIndicatorDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.businessindicator.BusinessIndicatorMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +import com.zt.plat.module.base.dal.dataobject.businessalgorithm.BusinessAlgorithmDO; +import com.zt.plat.module.base.dal.dataobject.businessrule.BusinessRuleDO; +import com.zt.plat.module.base.dal.dao.businessalgorithm.BusinessAlgorithmMapper; +import com.zt.plat.module.base.dal.dao.businessrule.BusinessRuleMapper; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; + +/** + * 经营指标 Service 实现类 + * + * @author chengpeng + */ +@Service +@Validated +public class BusinessIndicatorServiceImpl implements BusinessIndicatorService { + + @Resource + private BusinessIndicatorMapper businessIndicatorMapper; + + @Resource + private BusinessAlgorithmMapper businessAlgorithmMapper; + + @Resource + private BusinessRuleMapper businessRuleMapper; + + @Resource + private AdminUserApi adminUserApi; + + @Override + public BusinessIndicatorRespVO createBusinessIndicator(BusinessIndicatorSaveReqVO createReqVO) { + // 插入 + BusinessIndicatorDO businessIndicator = BeanUtils.toBean(createReqVO, BusinessIndicatorDO.class); + businessIndicatorMapper.insert(businessIndicator); + // 返回 + return BeanUtils.toBean(businessIndicator, BusinessIndicatorRespVO.class); + } + + @Override + public void updateBusinessIndicator(BusinessIndicatorSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessIndicatorExists(updateReqVO.getId()); + // 更新 + BusinessIndicatorDO updateObj = BeanUtils.toBean(updateReqVO, BusinessIndicatorDO.class); + businessIndicatorMapper.updateById(updateObj); + } + + @Override + public void deleteBusinessIndicator(Long id) { + // 校验存在 + validateBusinessIndicatorExists(id); + // 删除 + businessIndicatorMapper.deleteById(id); + } + + @Override + public void deleteBusinessIndicatorListByIds(List ids) { + // 校验存在 + validateBusinessIndicatorExists(ids); + // 删除 + businessIndicatorMapper.deleteByIds(ids); + } + + private void validateBusinessIndicatorExists(List ids) { + List list = businessIndicatorMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_INDICATOR_NOT_EXISTS); + } + } + + private void validateBusinessIndicatorExists(Long id) { + if (businessIndicatorMapper.selectById(id) == null) { + throw exception(BUSINESS_INDICATOR_NOT_EXISTS); + } + } + + @Override + public BusinessIndicatorDO getBusinessIndicator(Long id) { + return businessIndicatorMapper.selectById(id); + } + + @Override + public PageResult getBusinessIndicatorPage(BusinessIndicatorPageReqVO pageReqVO) { + return businessIndicatorMapper.selectPage(pageReqVO); + } + + @Override + public PageResult getBusinessIndicatorPageWithRelations(BusinessIndicatorPageReqVO pageReqVO) { + // 查询经营指标分页数据 + PageResult pageResult = businessIndicatorMapper.selectPage(pageReqVO); + + // 转换为 VO 对象 + List voList = BeanUtils.toBean(pageResult.getList(), BusinessIndicatorRespVO.class); + + // 收集需要关联查询的 ID 列表 + Set algorithmIds = new HashSet<>(); + Set ruleIds = new HashSet<>(); + Set userIds = new HashSet<>(); + + for (BusinessIndicatorDO indicator : pageResult.getList()) { + if (indicator.getAlgorithmId() != null) { + algorithmIds.add(indicator.getAlgorithmId()); + } + if (indicator.getRuleId() != null) { + ruleIds.add(indicator.getRuleId()); + } + if (indicator.getUserId() != null) { + userIds.add(indicator.getUserId()); + } + } + + // 批量查询关联数据 + List algorithms = algorithmIds.isEmpty() ? Collections.emptyList() : + businessAlgorithmMapper.selectBatchIds(algorithmIds); + List rules = ruleIds.isEmpty() ? Collections.emptyList() : + businessRuleMapper.selectBatchIds(ruleIds); + Map userMap = userIds.isEmpty() ? Collections.emptyMap() : + adminUserApi.getUserMap(userIds); + + // 建立 ID 到对象的映射 + Map algorithmMap = new HashMap<>(); + Map ruleMap = new HashMap<>(); + + for (BusinessAlgorithmDO algorithm : algorithms) { + algorithmMap.put(algorithm.getId(), algorithm); + } + + for (BusinessRuleDO rule : rules) { + ruleMap.put(rule.getId(), rule); + } + + // 填充关联信息 + for (int i = 0; i < pageResult.getList().size(); i++) { + BusinessIndicatorDO indicator = pageResult.getList().get(i); + BusinessIndicatorRespVO vo = voList.get(i); + + // 填充算法相关信息 + if (indicator.getAlgorithmId() != null && algorithmMap.containsKey(indicator.getAlgorithmId())) { + BusinessAlgorithmDO algorithm = algorithmMap.get(indicator.getAlgorithmId()); + vo.setAlgorithmName(algorithm.getName()); + vo.setAlgorithmTypeValue(algorithm.getTypeValue()); + } + + // 填充规则相关信息 + if (indicator.getRuleId() != null && ruleMap.containsKey(indicator.getRuleId())) { + BusinessRuleDO rule = ruleMap.get(indicator.getRuleId()); + vo.setRuleName(rule.getName()); + vo.setRuleTypeValue(rule.getTypeValue()); + } + + // 填充用户相关信息 + if (indicator.getUserId() != null && userMap.containsKey(indicator.getUserId())) { + AdminUserRespDTO user = userMap.get(indicator.getUserId()); + vo.setUserName(user.getNickname()); + } + } + + return new PageResult<>(voList, pageResult.getTotal()); + } + + @Override + public List getBusinessIndicatorListByParentId(Long parentId) { + return businessIndicatorMapper.selectListByParentId(parentId); + } + +} \ 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/businessrule/BusinessRuleService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleService.java new file mode 100644 index 0000000..645fb7d --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleService.java @@ -0,0 +1,61 @@ +package com.zt.plat.module.base.service.businessrule; + +import java.util.*; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.businessrule.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessrule.BusinessRuleDO; +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 业务规则 Service 接口 + * + * @author yangxiaofeng + */ +public interface BusinessRuleService { + + /** + * 创建业务规则 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + BusinessRuleRespVO createBusinessRule(@Valid BusinessRuleSaveReqVO createReqVO); + + /** + * 更新业务规则 + * + * @param updateReqVO 更新信息 + */ + void updateBusinessRule(@Valid BusinessRuleSaveReqVO updateReqVO); + + /** + * 删除业务规则 + * + * @param id 编号 + */ + void deleteBusinessRule(Long id); + + /** + * 批量删除业务规则 + * + * @param ids 编号 + */ + void deleteBusinessRuleListByIds(List ids); + + /** + * 获得业务规则 + * + * @param id 编号 + * @return 业务规则 + */ + BusinessRuleDO getBusinessRule(Long id); + + /** + * 获得业务规则分页 + * + * @param pageReqVO 分页查询 + * @return 业务规则分页 + */ + PageResult getBusinessRulePage(BusinessRulePageReqVO pageReqVO); + +} \ 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/businessrule/BusinessRuleServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleServiceImpl.java new file mode 100644 index 0000000..7c9ea64 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/businessrule/BusinessRuleServiceImpl.java @@ -0,0 +1,88 @@ +package com.zt.plat.module.base.service.businessrule; + +import cn.hutool.core.collection.CollUtil; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.businessrule.vo.*; +import com.zt.plat.module.base.dal.dataobject.businessrule.BusinessRuleDO; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import com.zt.plat.module.base.dal.dao.businessrule.BusinessRuleMapper; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; + +/** + * 业务规则 Service 实现类 + * + * @author yangxiaofeng + */ +@Service +@Validated +public class BusinessRuleServiceImpl implements BusinessRuleService { + + @Resource + private BusinessRuleMapper businessRuleMapper; + + @Override + public BusinessRuleRespVO createBusinessRule(BusinessRuleSaveReqVO createReqVO) { + // 插入 + BusinessRuleDO businessRule = BeanUtils.toBean(createReqVO, BusinessRuleDO.class); + businessRuleMapper.insert(businessRule); + // 返回 + return BeanUtils.toBean(businessRule, BusinessRuleRespVO.class); + } + + @Override + public void updateBusinessRule(BusinessRuleSaveReqVO updateReqVO) { + // 校验存在 + validateBusinessRuleExists(updateReqVO.getId()); + // 更新 + BusinessRuleDO updateObj = BeanUtils.toBean(updateReqVO, BusinessRuleDO.class); + businessRuleMapper.updateById(updateObj); + } + + @Override + public void deleteBusinessRule(Long id) { + // 校验存在 + validateBusinessRuleExists(id); + // 删除 + businessRuleMapper.deleteById(id); + } + + @Override + public void deleteBusinessRuleListByIds(List ids) { + // 校验存在 + validateBusinessRuleExists(ids); + // 删除 + businessRuleMapper.deleteByIds(ids); + } + + private void validateBusinessRuleExists(List ids) { + List list = businessRuleMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(BUSINESS_RULE_NOT_EXISTS); + } + } + + private void validateBusinessRuleExists(Long id) { + if (businessRuleMapper.selectById(id) == null) { + throw exception(BUSINESS_RULE_NOT_EXISTS); + } + } + + @Override + public BusinessRuleDO getBusinessRule(Long id) { + return businessRuleMapper.selectById(id); + } + + @Override + public PageResult getBusinessRulePage(BusinessRulePageReqVO pageReqVO) { + return businessRuleMapper.selectPage(pageReqVO); + } + +} \ 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/tmpltp/DepartmentInstanceRelativityServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java index 6270a16..47d4a9e 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/DepartmentInstanceRelativityServiceImpl.java @@ -6,6 +6,7 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.DepartmentInstanceRel import com.zt.plat.module.base.controller.admin.templtp.vo.DepartmentInstanceRelativitySaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.DepartmentInstanceRelativityDO; import com.zt.plat.module.base.dal.mysql.tmpltp.DepartmentInstanceRelativityMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -32,6 +33,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.DEPARTMENT_INST */ @Service @Validated +@Slf4j public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstanceRelativityService { @Resource @@ -43,6 +45,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan DepartmentInstanceRelativityDO departmentInstanceRelativity = BeanUtils.toBean(createReqVO, DepartmentInstanceRelativityDO.class); departmentInstanceRelativityMapper.insert(departmentInstanceRelativity); // 返回 + log.info("创建部门与实例关联成功,结果:{}", departmentInstanceRelativity); return BeanUtils.toBean(departmentInstanceRelativity, DepartmentInstanceRelativityRespVO.class); } @@ -53,6 +56,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan // 更新 DepartmentInstanceRelativityDO updateObj = BeanUtils.toBean(updateReqVO, DepartmentInstanceRelativityDO.class); departmentInstanceRelativityMapper.updateById(updateObj); + log.info("更新部门与实例关联成功,结果:{}", updateObj); } @Override @@ -61,6 +65,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan validateDepartmentInstanceRelativityExists(id); // 删除 departmentInstanceRelativityMapper.deleteById(id); + log.info("删除部门与实例关联成功,结果:{}", id); } @Override @@ -69,6 +74,7 @@ public class DepartmentInstanceRelativityServiceImpl implements DepartmentInstan validateDepartmentInstanceRelativityExists(ids); // 删除 departmentInstanceRelativityMapper.deleteByIds(ids); + log.info("删除部门与实例关联成功,结果:{}", ids); } private void validateDepartmentInstanceRelativityExists(List ids) { diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataService.java index e02703a..49fd5c5 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataService.java @@ -80,6 +80,12 @@ public interface TemplateInstanceDataService { */ boolean clearTemplateInstanceData(String instanceId,List valIds); + /** + * 批量创建实例字段值 + * + * @param createReqVOS 创建参数 + * @return 实例字段值 + */ List createBatchTemplateInstanceData(List createReqVOS); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java index dd117e9..8bc86b0 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceDataServiceImpl.java @@ -10,6 +10,7 @@ import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -36,6 +37,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataService { @Resource @@ -46,7 +48,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ //判断当前标识字段在数据库中是否存在 Long loginUserCompanyId = SecurityFrameworkUtils.getLoginUserCompanyId(); if (templateInstanceDataMapper.selectCount(new LambdaQueryWrapper() - .eq(TemplateInstanceDataDO::getFldKy,createReqVO) + .eq(TemplateInstanceDataDO::getFldKy,createReqVO.getFldKy()) .eq(TemplateInstanceDataDO::getInscId,createReqVO.getInscId()) .eq(TemplateInstanceDataDO::getCompanyId,loginUserCompanyId)) >0) { throw exception(TMPL_INS_FLD_CODE_EXISTS); @@ -54,6 +56,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ // 插入 TemplateInstanceDataDO templateInstanceData = BeanUtils.toBean(createReqVO, TemplateInstanceDataDO.class); templateInstanceDataMapper.insert(templateInstanceData); + log.info("创建实例与字段值关系成功,结果:{}", templateInstanceData); // 返回 return BeanUtils.toBean(templateInstanceData, TemplateInstanceDataRespVO.class); } @@ -65,6 +68,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ // 更新 TemplateInstanceDataDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDataDO.class); templateInstanceDataMapper.updateById(updateObj); + log.info("更新实例与字段值关系成功,结果:{}", updateObj); } @Override @@ -73,6 +77,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ validateTemplateInstanceDataExists(id); // 删除 templateInstanceDataMapper.deleteById(id); + log.info("删除实例与字段值关系成功,结果:{}", id); } @Override @@ -81,6 +86,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ validateTemplateInstanceDataExists(ids); // 删除 templateInstanceDataMapper.deleteByIds(ids); + log.info("删除实例与字段值关系成功,结果:{}", ids); } private void validateTemplateInstanceDataExists(List ids) { @@ -103,6 +109,7 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ @Override public PageResult getTemplateInstanceDataPage(TemplateInstanceDataPageReqVO pageReqVO) { + log.info("查询实例与字段值关系列表,参数:{}", pageReqVO); return templateInstanceDataMapper.selectPage(pageReqVO); } @@ -112,7 +119,10 @@ public class TemplateInstanceDataServiceImpl implements TemplateInstanceDataServ if (CollUtil.isEmpty(pageReqVOS)) { throw exception(PARAMS_IS_NULL_OR_ERR); } - pageReqVOS.forEach(i->templateInstanceDataMapper.updateFldValById(i.getInscId(),i.getFldVal(),i.getFldKy())); + pageReqVOS.forEach( + i->{templateInstanceDataMapper.updateFldValById(i.getInscId(),i.getFldVal(),i.getFldKy()); + log.info("更新实例与字段值关系成功,结果:实例id:【{}】,key:【{}】,值【{}】", i.getInscId(),i.getFldKy(),i.getFldVal()); + }); return true; } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemService.java index 190af06..e180c86 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemService.java @@ -63,5 +63,11 @@ public interface TemplateInstanceItemService { */ PageResult getTemplateInstanceItemPage(@Valid TemplateInstanceItemPageReqVO pageReqVO); + /** + * 批量创建实例条款值 + * + * @param createReqVOS 创建信息 + * @return 批量创建结果 + */ List createBatchTemplateInstanceItem(@Valid List createReqVOS); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java index 8d9cc94..a831abf 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceItemServiceImpl.java @@ -1,11 +1,14 @@ package com.zt.plat.module.base.service.tmpltp; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemPageReqVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemSaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; @@ -13,8 +16,7 @@ import java.util.*; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.PARAMS_IS_NULL_OR_ERR; -import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTANCE_ITEM_NOT_EXISTS; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; /** * 实例条款值 Service 实现类 @@ -23,6 +25,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TEMPLATE_INSTAN */ @Service @Validated +@Slf4j public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemService { @Resource @@ -30,9 +33,12 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ @Override public TemplateInstanceItemRespVO createTemplateInstanceItem(TemplateInstanceItemSaveReqVO createReqVO) { + //判断当前实例条款关系在数据库中存在 + validateTemplateInstanceItemExistsByInscId(createReqVO.getInscId(), createReqVO.getItmId()); // 插入 TemplateInstanceItemDO templateInstanceItem = BeanUtils.toBean(createReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.insert(templateInstanceItem); + log.info("创建成功实例与条款关系成功,记录为【{}】", templateInstanceItem); // 返回 return BeanUtils.toBean(templateInstanceItem, TemplateInstanceItemRespVO.class); } @@ -40,10 +46,11 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ @Override public void updateTemplateInstanceItem(TemplateInstanceItemSaveReqVO updateReqVO) { // 校验存在 - validateTemplateInstanceItemExists(updateReqVO.getId()); + validateTemplateInstanceItemExists(updateReqVO.getInscId()); // 更新 TemplateInstanceItemDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceItemDO.class); templateInstanceItemMapper.updateById(updateObj); + log.info("更新成功实例与条款关系成功,记录为【{}】", updateObj); } @Override @@ -52,6 +59,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(id); // 删除 templateInstanceItemMapper.deleteById(id); + log.info("删除成功实例与条款关系成功,记录为【{}】", id); } @Override @@ -60,6 +68,7 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ validateTemplateInstanceItemExists(ids); // 删除 templateInstanceItemMapper.deleteByIds(ids); + log.info("删除成功实例与条款关系成功,记录为【{}】", ids); } private void validateTemplateInstanceItemExists(List ids) { @@ -95,4 +104,10 @@ public class TemplateInstanceItemServiceImpl implements TemplateInstanceItemServ return BeanUtils.toBean(templateInstanceItemDOList, TemplateInstanceItemRespVO.class); } + private void validateTemplateInstanceItemExistsByInscId(String inscId, String itmId){ + if (templateInstanceItemMapper.selectCount(new LambdaQueryWrapper().eq(TemplateInstanceItemDO::getInscId, inscId).eq(TemplateInstanceItemDO::getItmId, itmId).eq(TemplateInstanceItemDO::getCompanyId, CompanyContextHolder.getCompanyId())) > 0){ + throw exception(TMPL_ITM_EXISTS); + } + } + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java index 2cd658c..c932080 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceService.java @@ -7,9 +7,7 @@ import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDO; import jakarta.validation.*; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.framework.common.pojo.PageParam; import jakarta.validation.constraints.NotEmpty; -import org.springframework.web.multipart.MultipartFile; /** * 模板实例 Service 接口 @@ -63,10 +61,26 @@ public interface TemplateInstanceService { */ PageResult getTemplateInstancePage(TemplateInstancePageReqVO pageReqVO); + /** + * 通过实例id获得部门 + * + * @param instanId + * @return 获取部门 + */ List getDeptByInstanId(Long instanId); + /** + * 发布模板实例 + * + * @param publishReqVOS 发布参数 + */ void publishTemplateInstance(List publishReqVOS); + /** + * 获取模板实例详情 + * + * @param templateInstanceRespVO 模板实例详情 + */ void getDetailedInfo(TemplateInstanceRespVO templateInstanceRespVO); /** * 获得模板实例分页排除停用状态的 @@ -76,13 +90,55 @@ public interface TemplateInstanceService { */ PageResult listExcludingDisabled(@Valid TemplateInstancePageReqVO pageReqVO); + /** + * 停用启用 + * + * @param reqVO 停用启用参数 + */ void setDisableOrEnable(@Valid DisableEnableReqVO reqVO); + /** + * 创建版本 + * + * @param id 模版实例id + * @return 创建结果 + */ TemplateInstanceRespVO createVersion(@Valid @NotEmpty(message = "模版实例id不能为空") String id); + /** + * 获取版本 + * + * @param id 模版实例id + * @return 获取结果 + */ Map getVersion(String id); + /** + * 通过模版编码获取模版实例 + * + * @param cdg 模版编码 + * @return 获取结果 + */ List listByCdg(String cdg); +// +// Map saveFile(MultipartFile file, String id); - Map saveFile(MultipartFile file, String id); + /** + * 通过实例id,更新文件对象 + * @param id params + * + */ + void updateTemplateInstanceFileUrlByInstanceId(@Valid @NotEmpty(message = "模版实例id不能为空") String id, @Valid @NotEmpty(message = "文件参数不能为空") String params); + /** + * 获取字段和条款详情 + * @param id 模版实例id + * @return 获取结果 + */ + FieldAndClauseRespVO getFieldAndClauseDetail(@Valid @NotEmpty(message = "模版实例id不能为空") String id); + /** + * 获取模版实例详情 + * @param id 模版实例id + * @return 获取结果 + */ + TemplateInstanceRespVO getTemplateInstance(@Valid @NotEmpty(message = "模版实例id不能为空") String id); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java index 8721c16..822dfb2 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TemplateInstanceServiceImpl.java @@ -13,17 +13,18 @@ import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.*; import com.zt.plat.module.base.dal.dataobject.tmpltp.*; import com.zt.plat.module.base.dal.mysql.tmpltp.*; -import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.dept.dto.DeptRespDTO; import com.zt.plat.module.tmpltp.enums.DeleteStatusEnum; import com.zt.plat.module.tmpltp.enums.PublishStatusEnum; import com.zt.plat.module.tmpltp.enums.TmplStsEnum; import com.zt.plat.module.tmpltp.enums.UpdateStatusEnum; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import org.springframework.web.multipart.MultipartFile; import java.time.LocalDateTime; import java.util.*; @@ -45,7 +46,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Validated public class TemplateInstanceServiceImpl implements TemplateInstanceService { @Resource - private FileApi fileApi; + private DeptApi deptApi; @Resource private TemplateInstanceMapper templateInstanceMapper; @Resource @@ -54,8 +55,12 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { private TemplateInstanceDataMapper templateInstanceDataMapper; @Resource private TemplateInstanceItemMapper templateInstanceItemMapper; - - private static final Pattern VERSION_PATTERN = Pattern.compile("^(.*?)([0-9]+(?:\\.[0-9]+)*)(.*)$"); + @Resource + private TmplItmService tmplItmService; + @Resource + private TmplTpFldService tmplTpFldService; + @Resource + private TmplTpService tmplTpService; @Override @Transactional @@ -69,6 +74,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { if (insert <= 0) { throw exception(TEMPLATE_INSTANCE_CREATE_FAIL); } + log.info("创建模板实例成功,模板实例:【{}】", templateInstance); //构建使用部门 List departmentInstanceRelativityDOS = new ArrayList<>(); @@ -79,6 +85,7 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { departmentInstanceRelativityDOS.add(departmentInstanceRelativityDO); }); departmentInstanceRelativityMapper.insertBatch(departmentInstanceRelativityDOS); + log.info("创建模板实例成功,模板实例:【{}】", departmentInstanceRelativityDOS); // 插入使用范围 TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(templateInstance, TemplateInstanceRespVO.class); templateInstanceRespVO.setDeptIds(createReqVO.getDeptIds()); @@ -94,8 +101,9 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { // 更新 TemplateInstanceDO templateInstanceDO = templateInstanceMapper.selectById(updateReqVO.getId()); TemplateInstanceDO updateObj = BeanUtils.toBean(updateReqVO, TemplateInstanceDO.class); - // updateObj.setVer(incrementVersion(templateInstanceDO.getVer())); + // updateObj.setVer(incrementVersion(templateInstanceDO.getVer())); templateInstanceMapper.updateById(updateObj); + log.info("更新模板实例成功,模板实例:【{}】", templateInstanceDO); } @Override @@ -107,10 +115,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { // 删除 //删除对应的字段和条款关系 //1、删除合同的与字段的关系 - templateInstanceDataMapper.deleteByTemplateInstanceId(id); + templateInstanceDataMapper.deleteByTemplateInstanceIds(List.of(id)); + log.info("删除模板实例字段成功,模板实例id:【{}】", id); //2、删除条款与和他的关系 - templateInstanceItemMapper.deleteByTemplateInstanceId(id); + templateInstanceItemMapper.deleteByTemplateInstanceIds(List.of(id)); + log.info("删除模板实例条款成功,模板实例id:【{}】", id); templateInstanceMapper.deleteById(id); + log.info("删除模板实例成功,模板实例id:【{}】", id); } @Override @@ -120,8 +131,13 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { validateTemplateInstanceExists(ids); //校验当前模版能否被删除 validateStatusCanDelete(ids); + templateInstanceItemMapper.deleteByTemplateInstanceIds(ids); + log.info("删除模板实例条款成功,模板实例ids:【{}】", ids); + templateInstanceDataMapper.deleteByTemplateInstanceIds(ids); + log.info("删除模板实例字段成功,模板实例ids:【{}】", ids); // 删除 templateInstanceMapper.deleteByIds(ids); + log.info("删除模板实例成功,模板实例id:【{}】", ids); } private void validateTemplateInstanceExists(List ids) { @@ -147,98 +163,41 @@ public class TemplateInstanceServiceImpl implements TemplateInstanceService { return templateInstanceMapper.selectPage(pageReqVO); } + @NotNull + private String incrementVersion(String currentVersion) { + // 处理空值或空字符串 + if (currentVersion == null || currentVersion.trim().isEmpty()) { + return "v1"; + } -// private String incrementVersion(String currentVersion) { -// // 处理空值或空字符串 -// if (currentVersion == null || currentVersion.trim().isEmpty()) { -// return "v1.0"; -// } -// -// String version = currentVersion.trim(); -// Matcher matcher = VERSION_PATTERN.matcher(version); -// -// if (!matcher.matches()) { -// // 没有找到数字部分,返回默认版本 -// return version + "1.0"; -// } -// -// String prefix = matcher.group(1); // 前缀部分(如 "v", "version-" 等) -// String numberPart = matcher.group(2); // 数字部分(如 "1.2.3") -// String suffix = matcher.group(3); // 后缀部分 -// -// // 分割数字部分 -// String[] segments = numberPart.split("\\."); -// -// // 从最后一段开始处理进位 -// boolean carry = true; // 初始需要加1 -// -// for (int i = segments.length - 1; i >= 0 && carry; i--) { -// try { -// int currentNumber = Integer.parseInt(segments[i]); -// currentNumber++; // 加1 -// -// if (currentNumber >= 10) { -// // 需要进位 -// segments[i] = "0"; -// carry = true; // 继续向前进位 -// } else { -// // 不需要进位 -// segments[i] = String.valueOf(currentNumber); -// carry = false; // 停止进位 -// } -// } catch (NumberFormatException e) { -// // 理论上不会发生,因为正则已经保证了是数字 -// segments[i] = "1"; -// carry = false; -// } -// } -// -// // 如果最高位也需要进位,在前面添加一段 -// if (carry) { -// String[] newSegments = new String[segments.length + 1]; -// newSegments[0] = "1"; -// System.arraycopy(segments, 0, newSegments, 1, segments.length); -// segments = newSegments; -// } -// -// // 重新组合版本号 -// String newNumberPart = String.join(".", segments); -// return prefix + newNumberPart + suffix; -// } -private String incrementVersion(String currentVersion) { - // 处理空值或空字符串 - if (currentVersion == null || currentVersion.trim().isEmpty()) { - return "v1"; + String version = currentVersion.trim(); + // 正则模式:前缀(可选) + 数字部分 + 后缀(可选) + // 数字部分匹配一个或多个数字 + Pattern VERSION_PATTERN = Pattern.compile("^([^0-9]*?)(\\d+)(.*)$"); + Matcher matcher = VERSION_PATTERN.matcher(version); + + if (!matcher.matches()) { + // 没有找到数字部分,返回默认版本 + return version + "1"; + } + + String prefix = matcher.group(1); // 前缀部分(如 "v", "version-" 等) + String numberPart = matcher.group(2); // 数字部分(如 "1", "123") + String suffix = matcher.group(3); // 后缀部分 + + try { + // 将数字部分解析为整数并加1 + int number = Integer.parseInt(numberPart); + number++; + + // 重新组合版本号 + return prefix + number + suffix; + } catch (NumberFormatException e) { + // 解析数字格式异常时的 fallback + return prefix + "1" + suffix; + } } - String version = currentVersion.trim(); - // 正则模式:前缀(可选) + 数字部分 + 后缀(可选) - // 数字部分匹配一个或多个数字 - Pattern VERSION_PATTERN = Pattern.compile("^([^0-9]*?)(\\d+)(.*)$"); - Matcher matcher = VERSION_PATTERN.matcher(version); - - if (!matcher.matches()) { - // 没有找到数字部分,返回默认版本 - return version + "1"; - } - - String prefix = matcher.group(1); // 前缀部分(如 "v", "version-" 等) - String numberPart = matcher.group(2); // 数字部分(如 "1", "123") - String suffix = matcher.group(3); // 后缀部分 - - try { - // 将数字部分解析为整数并加1 - int number = Integer.parseInt(numberPart); - number++; - - // 重新组合版本号 - return prefix + number + suffix; - } catch (NumberFormatException e) { - // 解析数字格式异常时的 fallback - return prefix + "1" + suffix; - } -} - @Override public List getDeptByInstanId(Long instanId) { @@ -264,36 +223,45 @@ private String incrementVersion(String currentVersion) { PublishStatusEnum status = PublishStatusEnum.fromCode(currentStatus); boolean transitionAllowed = false; if (status != null) { - transitionAllowed = status.isTransitionAllowed(TmplStsEnum.PUBLISHED.getCode()); + transitionAllowed = status.isTransitionAllowed(TmplStsEnum.DRAFT.getCode()); + if (!transitionAllowed){ + transitionAllowed = status.isTransitionAllowed(TmplStsEnum.START.getCode()); + } } if (!transitionAllowed) { throw exception(STATUS_OPERATION_FAIL); } }); - + log.info("发布模版实例【{}】", publishReqVOS.stream().map(PublishTemplateInstanceReqVO::getId)); templateInstanceMapper.update(new LambdaUpdateWrapper() .in(TemplateInstanceDO::getId, publishReqVOS.stream() .map(PublishTemplateInstanceReqVO::getId) .collect(Collectors.toSet())) .set(TemplateInstanceDO::getSts, TmplStsEnum.PUBLISHED.getCode())); + log.info("更新模版实例状态成功【{}】", publishReqVOS.stream().map(PublishTemplateInstanceReqVO::getId)); } @Override public PageResult listExcludingDisabled(TemplateInstancePageReqVO pageReqVO) { + log.info("查询除了停用外的模版实例【{}】", pageReqVO); return templateInstanceMapper.listExcludingDisabled(pageReqVO); } @Override public void setDisableOrEnable(DisableEnableReqVO reqVO) { validateTemplateInstanceExists(reqVO.getIds().stream().map(Long::valueOf).toList()); - String code; + String code = ""; if (reqVO.getType().equals("disable")) { // 禁用 code = TmplStsEnum.STOPPED.getCode(); - } else { + } else if (reqVO.getType().equals("enable")) { // 启用 - code = TmplStsEnum.PUBLISHED.getCode(); + code = TmplStsEnum.START.getCode(); } + if (code.isEmpty()) { + throw exception(ILLEGAL_OPERATION_TYPE); + } + log.info("=============================当前操作记录为【{}】操作动作为:【{}】================================", reqVO.getIds(), reqVO.getType()); templateInstanceMapper.update(new LambdaUpdateWrapper() .set(TemplateInstanceDO::getSts, code) .in(TemplateInstanceDO::getId, reqVO.getIds())); @@ -304,23 +272,32 @@ private String incrementVersion(String currentVersion) { public TemplateInstanceRespVO createVersion(String id) { validateTemplateInstanceExists(Long.valueOf(id)); TemplateInstanceDO templateInstanceDO = templateInstanceMapper.selectById(id); + //如果当前状态不是草稿或者是已启用则不能创建新版本 + log.info("当前状态【{}】", templateInstanceDO.getSts()); + if (!TmplStsEnum.DRAFT.getCode().equals(templateInstanceDO.getSts()) && !TmplStsEnum.START.getCode().equals(templateInstanceDO.getSts())) { + throw exception(STATUS_OPERATION_FAIL); + } TemplateInstanceDO newTpInstanceDO = BeanUtils.toBean(templateInstanceDO, TemplateInstanceDO.class); newTpInstanceDO.setId(null); + newTpInstanceDO.setTenantId(templateInstanceDO.getTenantId()); newTpInstanceDO.setVer(incrementVersion(templateInstanceDO.getVer())); newTpInstanceDO.setPublishTime(LocalDateTime.now()); + newTpInstanceDO.setOrigCntt(templateInstanceDO.getCntt()!=null?templateInstanceDO.getCntt():templateInstanceDO.getOrigCntt());//模板实例内容,默认为上一个版本的当前文件内容 newTpInstanceDO.setCreateTime(null); newTpInstanceDO.setUpdateTime(null); templateInstanceMapper.insert(newTpInstanceDO); + log.info("创建模版实例【{}】成功", newTpInstanceDO); templateInstanceMapper.update(new LambdaUpdateWrapper() - .set(TemplateInstanceDO::getSts,TmplStsEnum.STOPPED.getCode()) + .set(TemplateInstanceDO::getSts, TmplStsEnum.STOPPED.getCode()) .eq(TemplateInstanceDO::getId, id)); + log.info("更新模版实例【{}】状态状态为【STOP】成功", id); List templateInstanceDataDOS = new ArrayList<>(); - List templateInstanceItemDOS =new ArrayList<>(); + List templateInstanceItemDOS = new ArrayList<>(); List newDepartmentInstanceRelativityDOS = new ArrayList<>(); //设置部门 List departmentInstanceRelativityDOS = departmentInstanceRelativityMapper .selectList(new LambdaQueryWrapper() - .eq(DepartmentInstanceRelativityDO::getTemplateInstanceId, id)); + .eq(DepartmentInstanceRelativityDO::getTemplateInstanceId, id)); departmentInstanceRelativityDOS.forEach(departmentInstanceRelativityDO -> { DepartmentInstanceRelativityDO newDepartmentInstanceRelativityDO = new DepartmentInstanceRelativityDO(); newDepartmentInstanceRelativityDO.setTemplateInstanceId(String.valueOf(newTpInstanceDO.getId())); @@ -330,20 +307,20 @@ private String incrementVersion(String currentVersion) { //设置条款 templateInstanceItemMapper.selectList(new LambdaQueryWrapper() .eq(TemplateInstanceItemDO::getInscId, id)).forEach(templateInstanceItemDO -> { - TemplateInstanceItemDO newTemplateInstanceItemDO = new TemplateInstanceItemDO(); - newTemplateInstanceItemDO.setInscId(String.valueOf(newTpInstanceDO.getId())); - newTemplateInstanceItemDO.setItmId(templateInstanceItemDO.getItmId()); - newTemplateInstanceItemDO.setVal(templateInstanceItemDO.getVal()); - templateInstanceItemDOS.add(newTemplateInstanceItemDO); + TemplateInstanceItemDO newTemplateInstanceItemDO = new TemplateInstanceItemDO(); + newTemplateInstanceItemDO.setInscId(String.valueOf(newTpInstanceDO.getId())); + newTemplateInstanceItemDO.setItmId(templateInstanceItemDO.getItmId()); + newTemplateInstanceItemDO.setVal(templateInstanceItemDO.getVal()); + templateInstanceItemDOS.add(newTemplateInstanceItemDO); }); //设置实例字段 templateInstanceDataMapper.selectList(new LambdaQueryWrapper() .eq(TemplateInstanceDataDO::getInscId, id)).forEach(templateInstanceDataDO -> { - TemplateInstanceDataDO newTemplateInstanceDataDO = new TemplateInstanceDataDO(); - newTemplateInstanceDataDO.setInscId(String.valueOf(newTpInstanceDO.getId())); - newTemplateInstanceDataDO.setFldKy(templateInstanceDataDO.getFldKy()); - newTemplateInstanceDataDO.setFldVal(templateInstanceDataDO.getFldVal()); - templateInstanceDataDOS.add(newTemplateInstanceDataDO); + TemplateInstanceDataDO newTemplateInstanceDataDO = new TemplateInstanceDataDO(); + newTemplateInstanceDataDO.setInscId(String.valueOf(newTpInstanceDO.getId())); + newTemplateInstanceDataDO.setFldKy(templateInstanceDataDO.getFldKy()); + newTemplateInstanceDataDO.setFldVal(templateInstanceDataDO.getFldVal()); + templateInstanceDataDOS.add(newTemplateInstanceDataDO); }); templateInstanceDataMapper.insertBatch(templateInstanceDataDOS); log.info("==================实例字段插入成功,共插入【{}】条记录==================", templateInstanceDataDOS.size()); @@ -352,6 +329,7 @@ private String incrementVersion(String currentVersion) { departmentInstanceRelativityMapper.insertBatch(newDepartmentInstanceRelativityDOS); log.info("==================部门实例关系插入成功,共插入【{}】条记录==================", newDepartmentInstanceRelativityDOS.size()); TemplateInstanceRespVO templateInstanceRespVO = BeanUtils.toBean(newTpInstanceDO, TemplateInstanceRespVO.class); + log.info("==================模板实例插入成功=================="); getDetailedInfo(templateInstanceRespVO); return templateInstanceRespVO; } @@ -361,7 +339,7 @@ private String incrementVersion(String currentVersion) { validateTemplateInstanceExists(Long.valueOf(id)); String ver = templateInstanceMapper.selectById(id).getVer(); String newVer = incrementVersion(ver); - return Map.of("version",ver,"newVersion",newVer); + return Map.of("version", ver, "newVersion", newVer); } @Override @@ -378,18 +356,29 @@ private String incrementVersion(String currentVersion) { return templateInstanceRespVOS; } - @Override - public Map saveFile(MultipartFile file, String id) { - - return Map.of(); - } - @Override public void getDetailedInfo(TemplateInstanceRespVO templateInstanceRespVO) { templateInstanceRespVO.setDeptIds(getDeptByInstanId(templateInstanceRespVO.getId())); // 部门 templateInstanceRespVO.setInstanceItemRespVOS(setInstanceItemRespVOS(templateInstanceRespVO.getId())); // 条款 templateInstanceRespVO.setTemplateInstanceDataRespVOS(setTemplateInstanceDataRespVOS(templateInstanceRespVO.getId())); // 实例字段 + if (!templateInstanceRespVO.getDeptIds().isEmpty()) { + templateInstanceRespVO.setDeptRespVOS(deptApi.getDeptList(templateInstanceRespVO.getDeptIds().stream().map(Long::valueOf).toList()).getData()); // 部门详情 + } + TmplTpDO tmplTp = tmplTpService.getTmplTp(templateInstanceRespVO.getTpId()); + if (tmplTp != null) { + templateInstanceRespVO.setTpName(!tmplTp.getName().isEmpty() ? tmplTp.getName() : "分类未命名"); + } + + } + + @Override + public void updateTemplateInstanceFileUrlByInstanceId(String id, String params) { + validateTemplateInstanceExists(Long.valueOf(id)); + LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); + updateWrapper.eq(TemplateInstanceDO::getId, id).set(TemplateInstanceDO::getCntt, params); + templateInstanceMapper.update(updateWrapper); + log.info("==================模板实例文件对象信息更新成功,文件对象信息为【{}】==================", params); } // 实例条款值 @@ -400,7 +389,7 @@ private String incrementVersion(String currentVersion) { List templateInstanceItemRespVOS = BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class); TmplItmMapper tmplItmMapper = SpringUtil.getBean(TmplItmMapper.class); List ids = templateInstanceItemRespVOS.stream().map(TemplateInstanceItemRespVO::getItmId).toList(); - if (ids.isEmpty()){ + if (ids.isEmpty()) { return templateInstanceItemRespVOS; } List tmplItmDOS = tmplItmMapper.selectByIds(ids); @@ -411,7 +400,7 @@ private String incrementVersion(String currentVersion) { } }); }); - return templateInstanceItemRespVOS ; + return templateInstanceItemRespVOS; } // 实例数据 @@ -428,6 +417,9 @@ private String incrementVersion(String currentVersion) { boolean transitionAllowed = false; if (deleteStatusEnum != null) { transitionAllowed = deleteStatusEnum.isTransitionAllowed(TmplStsEnum.DRAFT.getCode()); + if (!transitionAllowed) { + transitionAllowed = deleteStatusEnum.isTransitionAllowed(TmplStsEnum.STOPPED.getCode()); + } } if (!transitionAllowed) { throw exception(STATUS_OPERATION_FAIL); @@ -458,7 +450,38 @@ private String incrementVersion(String currentVersion) { throw exception(STATUS_OPERATION_FAIL); } } - private String getCdg(){ - return "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + + private String getCdg() { + String cdg = "TP" + DateUtils.format(new Date(), "yyyyMMddHHmmssSSS") + RandomUtil.randomNumbers(4); + log.info("==================模板实例编号生成成功,模板实例编号为【{}】==================", cdg); + return cdg; } + + @Override + public FieldAndClauseRespVO getFieldAndClauseDetail(String id) { + FieldAndClauseRespVO fieldAndClauseRespVO = new FieldAndClauseRespVO(); + //查询关联的实例模版字段 + List valKeys = templateInstanceDataMapper.selectList(new LambdaQueryWrapper().eq(TemplateInstanceDataDO::getInscId, id)).stream().map(TemplateInstanceDataDO::getFldKy).distinct().toList(); + //查询关联的实例模版条款 + List itmIds = templateInstanceItemMapper.selectList(new LambdaQueryWrapper().eq(TemplateInstanceItemDO::getInscId, id)).stream().map(TemplateInstanceItemDO::getItmId).toList(); + + // 例模版条款去条款库查询条款信息 + if (!itmIds.isEmpty()){ + List tmplItmRespVOS = BeanUtils.toBean(tmplItmService.listTmplItmByIds(itmIds), TmplItmRespVO.class); + fieldAndClauseRespVO.setTmplItmRespVOS(BeanUtils.toBean(tmplItmRespVOS, TmplItmRespVO.class)); + } + if (!valKeys.isEmpty()){ + //例模版字段去字段库查询字段信息 + List tmplTpListByValKeys = tmplTpFldService.getTmplTpListByValKeys(valKeys); + fieldAndClauseRespVO.setTmplFldRespVOS(BeanUtils.toBean(tmplTpListByValKeys, TmplFldRespVO.class)); + } + + return fieldAndClauseRespVO; + } + + @Override + public TemplateInstanceRespVO getTemplateInstance(String id) { + return BeanUtils.toBean(templateInstanceMapper.selectById(id), TemplateInstanceRespVO.class); + } + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelService.java new file mode 100644 index 0000000..8e57b3c --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelService.java @@ -0,0 +1,78 @@ +package com.zt.plat.module.base.service.tmpltp; + +import java.util.*; + +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelPageReqVO; +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelRespVO; +import com.zt.plat.module.base.controller.admin.templtp.vo.TmplInscBsnRelSaveReqVO; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO; +import jakarta.validation.*; + +import com.zt.plat.framework.common.pojo.PageResult; + + +/** + * 模板实例与业务中间 Service 接口 + * + * @author 后台管理-1 + */ +public interface TmplInscBsnRelService { + + /** + * 创建模板实例与业务中间 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TmplInscBsnRelRespVO createTmplInscBsnRel(@Valid TmplInscBsnRelSaveReqVO createReqVO); + + /** + * 更新模板实例与业务中间 + * + * @param updateReqVO 更新信息 + */ + void updateTmplInscBsnRel(@Valid TmplInscBsnRelSaveReqVO updateReqVO); + + /** + * 删除模板实例与业务中间 + * + * @param id 编号 + */ + void deleteTmplInscBsnRel(Long id); + + /** + * 批量删除模板实例与业务中间 + * + * @param ids 编号 + */ + void deleteTmplInscBsnRelListByIds(List ids); + + /** + * 获得模板实例与业务中间 + * + * @param id 编号 + * @return 模板实例与业务中间 + */ + TmplInscBsnRelDO getTmplInscBsnRel(Long id); + + /** + * 获得模板实例与业务中间分页 + * + * @param pageReqVO 分页查询 + * @return 模板实例与业务中间分页 + */ + PageResult getTmplInscBsnRelPage(TmplInscBsnRelPageReqVO pageReqVO); + /** + * 获取详情 + * + * @param tmplInscBsnRelRespVO 类 + */ + void getTmplInscBsnRelDetails(TmplInscBsnRelRespVO tmplInscBsnRelRespVO); + + /** + * 跟新cntt + * + * @param bsnId ,params + */ + void updateCntt(Long bsnId,String params); +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelServiceImpl.java new file mode 100644 index 0000000..3521570 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscBsnRelServiceImpl.java @@ -0,0 +1,292 @@ +package com.zt.plat.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import cn.hutool.extra.spring.SpringUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; +import com.zt.plat.module.base.dal.dataobject.tmpltp.*; +import com.zt.plat.module.base.dal.mysql.tmpltp.*; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.infra.api.file.dto.FileCreateReqDTO; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; +import com.zt.plat.module.system.api.dept.DeptApi; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.infra.enums.ErrorCodeConstants.FILE_NOT_EXISTS; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; + +/** + * 模板实例与业务中间 Service 实现类 + * + * @author 后台管理-1 + */ +@Slf4j +@Service +@Validated +public class TmplInscBsnRelServiceImpl implements TmplInscBsnRelService { + @Resource + private DeptApi deptApi; + @Resource + private TmplInscBsnRelMapper tmplInscBsnRelMapper; + @Resource + private TemplateInstanceService templateInstanceService; + private TmplInscDatBsnService tmplInscDatBsnService; + @Resource + private TmplInscItmBsnService tmplInscItmBsnService; + + @Override + public TmplInscBsnRelRespVO createTmplInscBsnRel(TmplInscBsnRelSaveReqVO createReqVO) { + TemplateInstanceRespVO templateInstance = templateInstanceService.getTemplateInstance(createReqVO.getInscId()); + if (templateInstance == null) { + throw exception(TEMPLATE_INSTANCE_NOT_EXISTS); + } + String type = "cntt"; + if (templateInstance.getCntt().isEmpty() && templateInstance.getOrigCntt().isEmpty()) { + throw exception(TEMPLATE_INSTANCE_FILE_NOT_EXISTS); + } + if (templateInstance.getCntt().isEmpty()) { + type = "origCntt"; + } + //下载文件并且上传文件 + fileUpload(createReqVO, templateInstance, type); + // 插入 + TmplInscBsnRelDO tmplInscBsnRel = BeanUtils.toBean(createReqVO, TmplInscBsnRelDO.class); + tmplInscBsnRelMapper.insert(tmplInscBsnRel); + // 返回 + return BeanUtils.toBean(tmplInscBsnRel, TmplInscBsnRelRespVO.class); + } + + @Override + public void updateTmplInscBsnRel(TmplInscBsnRelSaveReqVO updateReqVO) { + // 校验存在 + validateTmplInscBsnRelExists(updateReqVO.getId()); + // 更新 + TmplInscBsnRelDO updateObj = BeanUtils.toBean(updateReqVO, TmplInscBsnRelDO.class); + tmplInscBsnRelMapper.updateById(updateObj); + } + + @Override + @Transactional + public void deleteTmplInscBsnRel(Long id) { + // 校验存在 + validateTmplInscBsnRelExists(id); + // 删除 + tmplInscBsnRelMapper.deleteById(id); + } + + @Override + @Transactional + public void deleteTmplInscBsnRelListByIds(List ids) { + // 校验存在 + validateTmplInscBsnRelExists(ids); + // 删除 + //删除业务实例字段值 + deleteFldOrItmByIds(tmplInscBsnRelMapper.selectByIds(ids).stream().map(TmplInscBsnRelDO::getBsnId).map(String::valueOf).toList(), tmplInscDatBsnService); + //删除业务实例字段值 + deleteFldOrItmByIds(tmplInscBsnRelMapper.selectByIds(ids).stream().map(TmplInscBsnRelDO::getBsnId).map(String::valueOf).toList(), tmplInscItmBsnService); + tmplInscBsnRelMapper.deleteByIds(ids); + } + + private void validateTmplInscBsnRelExists(List ids) { + List list = tmplInscBsnRelMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_INSC_BSN_REL_NOT_EXISTS); + } + } + + private void validateTmplInscBsnRelExists(Long id) { + if (tmplInscBsnRelMapper.selectById(id) == null) { + throw exception(TMPL_INSC_BSN_REL_NOT_EXISTS); + } + } + + @Override + public TmplInscBsnRelDO getTmplInscBsnRel(Long id) { + return tmplInscBsnRelMapper.selectById(id); + } + + @Override + public PageResult getTmplInscBsnRelPage(TmplInscBsnRelPageReqVO pageReqVO) { + return tmplInscBsnRelMapper.selectPage(pageReqVO); + } + + @Override + public void getTmplInscBsnRelDetails(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + tmplInscBsnRelRespVO.setDeptIds(setDeptData(tmplInscBsnRelRespVO));//获取部门使用范围 + tmplInscBsnRelRespVO.setInstanceItemRespVOS(setInstanceItemRespVOS(tmplInscBsnRelRespVO));//获取条款; + tmplInscBsnRelRespVO.setTemplateInstanceDataRespVOS(setTemplateInstanceDataRespVOS(tmplInscBsnRelRespVO)); // 实例字段 + //业务条款 + tmplInscBsnRelRespVO.setTmplInscItmBsnRespVOS(setTmplInscItmBsnRespVOS(tmplInscBsnRelRespVO)); + //业务字段 + tmplInscBsnRelRespVO.setTmplInscDatBsnRespVOS(setTmplInscDatBsnRespVOS(tmplInscBsnRelRespVO)); + if (!tmplInscBsnRelRespVO.getDeptIds().isEmpty()) { + tmplInscBsnRelRespVO.setDeptRespVOS(deptApi.getDeptList(tmplInscBsnRelRespVO.getDeptIds().stream().map(Long::valueOf).toList()).getData()); // 部门详情 + } + TemplateInstanceRespVO templateInstance = SpringUtil.getBean(TemplateInstanceService.class).getTemplateInstance(tmplInscBsnRelRespVO.getInscId()); + if (templateInstance != null) { + tmplInscBsnRelRespVO.setInscName(!templateInstance.getName().isEmpty() ? templateInstance.getName() : "分类未命名"); + } + } + + @Override + public void updateCntt(Long bsnId, String params) { + List tmplInscBsnRelDOS = tmplInscBsnRelMapper.selectList(new LambdaQueryWrapper() + .eq(TmplInscBsnRelDO::getBsnId, bsnId).orderByDesc(TmplInscBsnRelDO::getVer) + ); + if (tmplInscBsnRelDOS.isEmpty()) { + throw exception(TEMPLATE_INSTANCE_FILE_NOT_EXISTS); + } + TmplInscBsnRelDO tmplInscBsnRelDO = tmplInscBsnRelDOS.get(0); + tmplInscBsnRelDO.setCntt( params); + tmplInscBsnRelMapper.updateById(tmplInscBsnRelDO); + log.info("更新业务实例cntt字段值成功"); + } + + //业务条款 + private List setTmplInscItmBsnRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + List tmplInscItmBsnRespVOS = BeanUtils.toBean(SpringUtil.getBean(TmplInscItmBsnMapper.class).selectList(new LambdaQueryWrapper() + .eq(TmplInscItmBsnDO::getBsnId, tmplInscBsnRelRespVO.getBsnId()) + ), TmplInscItmBsnRespVO.class); + tmplInscItmBsnRespVOS.forEach(tmplInscItmBsnRespVO -> { + tmplInscBsnRelRespVO.getInstanceItemRespVOS().forEach(instanceItemRespVO -> { + if (tmplInscItmBsnRespVO.getInscItmId().equals(instanceItemRespVO.getId())) { + tmplInscItmBsnRespVO.setItmName(instanceItemRespVO.getItmName()); + } + }); + }); + return tmplInscItmBsnRespVOS; + } + + //业务字段 + private List setTmplInscDatBsnRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + List tmplInscDatBsnRespVOS = BeanUtils.toBean(SpringUtil.getBean(TmplInscDatBsnMapper.class).selectList(new LambdaQueryWrapper()), TmplInscDatBsnRespVO.class); + + tmplInscDatBsnRespVOS.forEach(tmplInscDatBsnRespVO -> tmplInscBsnRelRespVO.getTemplateInstanceDataRespVOS().forEach(templateInstanceDataRespVO -> { + if (templateInstanceDataRespVO.getId().toString().equals(tmplInscDatBsnRespVO.getInscFldId())) { +// tmplInscDatBsnRespVO.setFldVal(templateInstanceDataRespVO.getFldKy()); + tmplInscDatBsnRespVO.setFldKy(templateInstanceDataRespVO.getFldKy()); + } + })); + return tmplInscDatBsnRespVOS; + } + + // 实例数据 + private List setTemplateInstanceDataRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + return BeanUtils.toBean(SpringUtil.getBean(TemplateInstanceDataMapper.class).selectList(new LambdaQueryWrapper() + .eq(TemplateInstanceDataDO::getInscId, tmplInscBsnRelRespVO.getInscId()) + .eq(TemplateInstanceDataDO::getCompanyId, CompanyContextHolder.getCompanyId())), TemplateInstanceDataRespVO.class); + } + + // 条款 + private List setInstanceItemRespVOS(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + List templateInstanceItemDOS = SpringUtil.getBean(TemplateInstanceItemMapper.class).selectList(new LambdaQueryWrapper() + .eq(TemplateInstanceItemDO::getInscId, tmplInscBsnRelRespVO.getInscId()) + .eq(TemplateInstanceItemDO::getCompanyId, CompanyContextHolder.getCompanyId())); + List templateInstanceItemRespVOS = BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class); + TmplItmMapper tmplItmMapper = SpringUtil.getBean(TmplItmMapper.class); + List ids = templateInstanceItemRespVOS.stream().map(TemplateInstanceItemRespVO::getItmId).toList(); + if (ids.isEmpty()) { + return templateInstanceItemRespVOS; + } + List tmplItmDOS = tmplItmMapper.selectByIds(ids); + tmplItmDOS.forEach(tmplItmDO -> { + templateInstanceItemRespVOS.forEach(templateInstanceItemRespVO -> { + if (templateInstanceItemRespVO.getItmId().equals(tmplItmDO.getId())) { + templateInstanceItemRespVO.setItmName(tmplItmDO.getItmName()); + } + }); + }); + return templateInstanceItemRespVOS; + } + + private List setDeptData(TmplInscBsnRelRespVO tmplInscBsnRelRespVO) { + Long loginUserCompanyId = SecurityFrameworkUtils.getLoginUserCompanyId(); + return SpringUtil.getBean(DepartmentInstanceRelativityMapper.class).selectList(new LambdaQueryWrapper() + .eq(DepartmentInstanceRelativityDO::getTemplateInstanceId, tmplInscBsnRelRespVO.getInscId()) + .eq(DepartmentInstanceRelativityDO::getCompanyId, loginUserCompanyId) + ) + .stream() + .map(DepartmentInstanceRelativityDO::getCompanyDepartmentId) + .toList(); + + } + + private void fileUpload(TmplInscBsnRelSaveReqVO createReqVO, TemplateInstanceRespVO templateInstance, String type) { + String id = ""; + FileRespDTO fileRespDTO = null; + FileApi fileApi = SpringUtil.getBean(FileApi.class); + if (Objects.equals(type, "cntt")) { + id = JSONObject.parseObject(templateInstance.getCntt()).get("id").toString(); + CommonResult file = fileApi.getFile(Long.valueOf(id)); + if (!file.isSuccess()) { + throw exception(FILE_PULL_EER); + } + fileRespDTO = file.getData(); + } else if (Objects.equals(type, "origCntt")) { + JSONArray jsonArray = JSONArray.parseArray(templateInstance.getOrigCntt()); + if (jsonArray != null && !jsonArray.isEmpty()) { + JSONObject firstObj = jsonArray.getJSONObject(0); + id = firstObj.getString("id"); + CommonResult file = fileApi.getFile(Long.valueOf(id)); + if (!file.isSuccess()) { + throw exception(FILE_PULL_EER); + } + fileRespDTO = file.getData(); + } + } else { + throw exception(ILLEGAL_OPERATION_TYPE); + } + if (fileRespDTO == null) { + throw exception(FILE_NOT_EXISTS); + } + FileCreateReqDTO fileCreateReqDTO = new FileCreateReqDTO(); + fileCreateReqDTO.setName(fileRespDTO.getName()) + .setDirectory("模版合同") + .setType(fileCreateReqDTO.getType()) + .setContent(fileRespDTO.getContent()); + log.info("==================下载文件成功,开始上传文件=================="); + CommonResult fileWithReturn = fileApi.createFileWithReturn(fileCreateReqDTO); + if (!fileWithReturn.isSuccess()) { + throw exception(FILE_UPLOAD_EER); + } + log.info("=====================上传文件成功============================="); + Map fileInfo = new HashMap<>(); + fileInfo.put("id", String.valueOf(fileRespDTO.getId())); + fileInfo.put("name", fileRespDTO.getName()); + fileInfo.put("directory", fileRespDTO.getDirectory()); + createReqVO.setCntt(JSONObject.toJSONString(fileInfo)); + log.info("创建的文件信息【{}】", fileInfo); + } + + private void deleteFldOrItmByIds(List ids, T t) { + if (CollUtil.isEmpty(ids)) { + return; + } + if (t instanceof TmplInscDatBsnService) { + ((TmplInscDatBsnService) t).deleteTmplInscDatBsnListByBsnIds(ids); + log.info("删除业务实例字段值【{}】", ids); + } else if (t instanceof TmplInscItmBsnService) { + ((TmplInscItmBsnService) t).deleteTmplInscDatBsnListByBsnIds(ids); + log.info("删除业务实例条款值【{}】", ids); + } + } + + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnService.java new file mode 100644 index 0000000..184b2f0 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnService.java @@ -0,0 +1,73 @@ +package com.zt.plat.module.base.service.tmpltp; + +import java.util.*; + +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscDatBsnDO; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import jakarta.validation.constraints.NotEmpty; + +/** + * 业务实例字段值 Service 接口 + * + * @author 后台管理-1 + */ +public interface TmplInscDatBsnService { + + /** + * 创建业务实例字段值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TmplInscDatBsnRespVO createTmplInscDatBsn(@Valid TmplInscDatBsnSaveReqVO createReqVO); + + /** + * 更新业务实例字段值 + * + * @param updateReqVO 更新信息 + */ + void updateTmplInscDatBsn(@Valid TmplInscDatBsnSaveReqVO updateReqVO); + + /** + * 删除业务实例字段值 + * + * @param id 编号 + */ + void deleteTmplInscDatBsn(String id); + + /** + * 批量删除业务实例字段值 + * + * @param ids 编号 + */ + void deleteTmplInscDatBsnListByIds(List ids); + + /** + * 获得业务实例字段值 + * + * @param id 编号 + * @return 业务实例字段值 + */ + TmplInscDatBsnDO getTmplInscDatBsn(String id); + + /** + * 获得业务实例字段值分页 + * + * @param pageReqVO 分页查询 + * @return 业务实例字段值分页 + */ + PageResult getTmplInscDatBsnPage(TmplInscDatBsnPageReqVO pageReqVO); + + /** + * 通过业务id删除业务字段 + * + * @param ids 业务id + * + */ + void deleteTmplInscDatBsnListByBsnIds(@Valid @NotEmpty(message = "业务编号不能为空") List ids); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnServiceImpl.java new file mode 100644 index 0000000..4704d96 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscDatBsnServiceImpl.java @@ -0,0 +1,104 @@ +package com.zt.plat.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.zt.plat.framework.tenant.core.aop.CompanyVisitIgnore; +import com.zt.plat.framework.tenant.core.aop.TenantIgnore; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscDatBsnDO; +import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscDatBsnMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_INSC_DAT_BSN_NOT_EXISTS; + +/** + * 业务实例字段值 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class TmplInscDatBsnServiceImpl implements TmplInscDatBsnService { + + @Resource + private TmplInscDatBsnMapper tmplInscDatBsnMapper; + + @Override + public TmplInscDatBsnRespVO createTmplInscDatBsn(TmplInscDatBsnSaveReqVO createReqVO) { + // 插入 + TmplInscDatBsnDO tmplInscDatBsn = BeanUtils.toBean(createReqVO, TmplInscDatBsnDO.class); + tmplInscDatBsnMapper.insert(tmplInscDatBsn); + // 返回 + return BeanUtils.toBean(tmplInscDatBsn, TmplInscDatBsnRespVO.class); + } + + @Override + public void updateTmplInscDatBsn(TmplInscDatBsnSaveReqVO updateReqVO) { + // 校验存在 + validateTmplInscDatBsnExists(updateReqVO.getId()); + // 更新 + TmplInscDatBsnDO updateObj = BeanUtils.toBean(updateReqVO, TmplInscDatBsnDO.class); + tmplInscDatBsnMapper.updateById(updateObj); + } + + @Override + public void deleteTmplInscDatBsn(String id) { + // 校验存在 + validateTmplInscDatBsnExists(id); + // 删除 + tmplInscDatBsnMapper.deleteById(id); + } + + @Override + public void deleteTmplInscDatBsnListByIds(List ids) { + // 校验存在 + validateTmplInscDatBsnExists(ids); + // 删除 + tmplInscDatBsnMapper.deleteByIds(ids); + } + + private void validateTmplInscDatBsnExists(List ids) { + List list = tmplInscDatBsnMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_INSC_DAT_BSN_NOT_EXISTS); + } + } + + private void validateTmplInscDatBsnExists(String id) { + if (tmplInscDatBsnMapper.selectById(id) == null) { + throw exception(TMPL_INSC_DAT_BSN_NOT_EXISTS); + } + } + + @Override + public TmplInscDatBsnDO getTmplInscDatBsn(String id) { + return tmplInscDatBsnMapper.selectById(id); + } + + @Override + public PageResult getTmplInscDatBsnPage(TmplInscDatBsnPageReqVO pageReqVO) { + return tmplInscDatBsnMapper.selectPage(pageReqVO); + } + + @Override + @TenantIgnore + public void deleteTmplInscDatBsnListByBsnIds(List ids) { + tmplInscDatBsnMapper.update(new LambdaUpdateWrapper().in(TmplInscDatBsnDO::getBsnId, ids).set(TmplInscDatBsnDO::getDeleted, 1)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnService.java new file mode 100644 index 0000000..4e12ee6 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnService.java @@ -0,0 +1,71 @@ +package com.zt.plat.module.base.service.tmpltp; + +import java.util.*; + +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscItmBsnDO; +import jakarta.validation.*; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import jakarta.validation.constraints.NotEmpty; + +/** + * 业务实例条款值 Service 接口 + * + * @author 后台管理-1 + */ +public interface TmplInscItmBsnService { + + /** + * 创建业务实例条款值 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + TmplInscItmBsnRespVO createTmplInscItmBsn(@Valid TmplInscItmBsnSaveReqVO createReqVO); + + /** + * 更新业务实例条款值 + * + * @param updateReqVO 更新信息 + */ + void updateTmplInscItmBsn(@Valid TmplInscItmBsnSaveReqVO updateReqVO); + + /** + * 删除业务实例条款值 + * + * @param id 编号 + */ + void deleteTmplInscItmBsn(String id); + + /** + * 批量删除业务实例条款值 + * + * @param ids 编号 + */ + void deleteTmplInscItmBsnListByIds(List ids); + + /** + * 获得业务实例条款值 + * + * @param id 编号 + * @return 业务实例条款值 + */ + TmplInscItmBsnDO getTmplInscItmBsn(String id); + + /** + * 获得业务实例条款值分页 + * + * @param pageReqVO 分页查询 + * @return 业务实例条款值分页 + */ + PageResult getTmplInscItmBsnPage(TmplInscItmBsnPageReqVO pageReqVO); + /** + * 批量删除业务实例字段值 + * + * @param ids 编号 + */ + void deleteTmplInscDatBsnListByBsnIds(@Valid @NotEmpty(message = "业务编号不能为空") List ids); + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnServiceImpl.java new file mode 100644 index 0000000..84a81e5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplInscItmBsnServiceImpl.java @@ -0,0 +1,104 @@ +package com.zt.plat.module.base.service.tmpltp; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.zt.plat.framework.tenant.core.aop.TenantIgnore; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscDatBsnDO; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscItmBsnDO; +import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscItmBsnMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import com.zt.plat.module.base.controller.admin.templtp.vo.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.base.enums.ErrorCodeConstants.*; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_INSC_ITM_BSN_NOT_EXISTS; + +/** + * 业务实例条款值 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class TmplInscItmBsnServiceImpl implements TmplInscItmBsnService { + + @Resource + private TmplInscItmBsnMapper tmplInscItmBsnMapper; + + @Override + public TmplInscItmBsnRespVO createTmplInscItmBsn(TmplInscItmBsnSaveReqVO createReqVO) { + // 插入 + TmplInscItmBsnDO tmplInscItmBsn = BeanUtils.toBean(createReqVO, TmplInscItmBsnDO.class); + tmplInscItmBsnMapper.insert(tmplInscItmBsn); + // 返回 + return BeanUtils.toBean(tmplInscItmBsn, TmplInscItmBsnRespVO.class); + } + + @Override + public void updateTmplInscItmBsn(TmplInscItmBsnSaveReqVO updateReqVO) { + // 校验存在 + validateTmplInscItmBsnExists(updateReqVO.getId()); + // 更新 + TmplInscItmBsnDO updateObj = BeanUtils.toBean(updateReqVO, TmplInscItmBsnDO.class); + tmplInscItmBsnMapper.updateById(updateObj); + } + + @Override + public void deleteTmplInscItmBsn(String id) { + // 校验存在 + validateTmplInscItmBsnExists(id); + // 删除 + tmplInscItmBsnMapper.deleteById(id); + } + + @Override + public void deleteTmplInscItmBsnListByIds(List ids) { + // 校验存在 + validateTmplInscItmBsnExists(ids); + // 删除 + tmplInscItmBsnMapper.deleteByIds(ids); + } + + private void validateTmplInscItmBsnExists(List ids) { + List list = tmplInscItmBsnMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(TMPL_INSC_ITM_BSN_NOT_EXISTS); + } + } + + private void validateTmplInscItmBsnExists(String id) { + if (tmplInscItmBsnMapper.selectById(id) == null) { + throw exception(TMPL_INSC_ITM_BSN_NOT_EXISTS); + } + } + + @Override + public TmplInscItmBsnDO getTmplInscItmBsn(String id) { + return tmplInscItmBsnMapper.selectById(id); + } + + @Override + public PageResult getTmplInscItmBsnPage(TmplInscItmBsnPageReqVO pageReqVO) { + return tmplInscItmBsnMapper.selectPage(pageReqVO); + } + + @Override + @TenantIgnore + public void deleteTmplInscDatBsnListByBsnIds(List ids) { + tmplInscItmBsnMapper.update(new LambdaUpdateWrapper().in(TmplInscItmBsnDO::getBsnId, ids).set(TmplInscItmBsnDO::getDeleted, 1)); + } + +} diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java index f150466..65f2179 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmService.java @@ -7,14 +7,43 @@ import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplItmDO; import com.baomidou.mybatisplus.extension.service.IService; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; import java.util.List; public interface TmplItmService extends IService { - + /** + * 创建模板条目 + * + * @param tmplItmSaveReqVO 创建信息 + * @return 编号 + */ TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) ; + /** + * 更新模板条目 + * + * @param tmplItmSaveReqVO 更新信息 + */ void updateTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) ; + /** + * 删除模板条目 + * + * @param ids 编号 + */ boolean deleteTmplItm(List ids); - + /** + * 获得模板条目 + * + * @param pageReqVO 分页请求 + * @return 模板条目 + */ PageResult pageTmplItm(TmpItmPageReqVO pageReqVO); + /** + * 获得模板条目 + * + * @param ids 编号 + * @return 模板条目 + */ + List listTmplItmByIds(@Valid @NotEmpty(message = "ids不能为空") List ids); } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java index a59ffb8..2b4020c 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplItmServiceImpl.java @@ -1,8 +1,10 @@ package com.zt.plat.module.base.service.tmpltp; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TmpItmPageReqVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TmplItmSaveReqVO; @@ -16,6 +18,7 @@ import org.springframework.validation.annotation.Validated; import java.util.List; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NAME_EXISTS; import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EXISTS; @Service @@ -23,6 +26,8 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.TMPL_ITM_NOT_EX public class TmplItmServiceImpl extends ServiceImpl implements TmplItmService{ @Override public TmplItmRespVO createTmplItm(TmplItmSaveReqVO tmplItmSaveReqVO) { + //验证条款名是否存在 + validateTmplLtmNameExists(tmplItmSaveReqVO.getItmName()); tmplItmSaveReqVO.setId(null); TmplItmDO bean = BeanUtils.toBean(tmplItmSaveReqVO, TmplItmDO.class); baseMapper.insert(bean); @@ -37,8 +42,6 @@ public class TmplItmServiceImpl extends ServiceImpl im } - - private void validateTmplLtmExists(List ids) { List list = baseMapper.selectByIds(ids); if (CollUtil.isEmpty(list) || list.size() != ids.size()) { @@ -51,6 +54,11 @@ public class TmplItmServiceImpl extends ServiceImpl im throw exception(TMPL_ITM_NOT_EXISTS); } } + private void validateTmplLtmNameExists(String name){ + if (baseMapper.selectCount(new LambdaQueryWrapper().eq(TmplItmDO::getItmName,name).eq(TmplItmDO::getDeleted,0).eq(TmplItmDO::getCompanyId, CompanyContextHolder.getCompanyId()))>0) { + throw exception(TMPL_ITM_NAME_EXISTS); + } + } @Override @Transactional @@ -63,4 +71,9 @@ public class TmplItmServiceImpl extends ServiceImpl im public PageResult pageTmplItm(TmpItmPageReqVO pageReqVO) { return baseMapper.selectPage(pageReqVO); } + + @Override + public List listTmplItmByIds(List ids) { + return baseMapper.selectByIds(ids); + } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java index 617b7d9..66286f0 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldService.java @@ -13,10 +13,43 @@ import java.util.List; import java.util.Map; public interface TmplTpFldService extends IService { + /** + * 创建模板字段 + * + * @param tmplTpFldSaveReqVO 创建信息 + * @return 编号 + */ TmplFldRespVO createTmplFld(@Valid TmplTpFldSaveReqVO tmplTpFldSaveReqVO); + /** + * 更新模板字段 + * + * @param tmplTpFldSaveReqVO 更新信息 + */ void updateTmplFld(@Valid TmplTpFldSaveReqVO tmplTpFldSaveReqVO); + /** + * 获取字段分页 + * + * @param pageReqVO 编号 + */ PageResult tmplTpFldPage(TmplFldPageReqVO pageReqVO); + /** + * 删除模板字段 + * + * @param ids 编号 + */ void deleteTmplTpByIds(List< Long> ids); + /** + * 获取字段列表 + * + * @param clazz **VO类 + */ List>getTmplTpListByClass(String clazz); + /** + * 获取字段列表 + * + * @param valNames 字段名称 + */ + List getTmplTpListByValKeys(List< String> valNames); + } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java index 4deff16..6475e32 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpFldServiceImpl.java @@ -1,6 +1,7 @@ package com.zt.plat.module.base.service.tmpltp; import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.security.core.LoginUser; @@ -15,6 +16,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.zt.plat.module.base.util.ClassInfoScanner; import io.swagger.v3.oas.annotations.media.Schema; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.validation.annotation.Validated; @@ -30,12 +32,14 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Service @Validated +@Slf4j public class TmplTpFldServiceImpl extends ServiceImpl implements TmplTpFldService { @Override public TmplFldRespVO createTmplFld(TmplTpFldSaveReqVO tmplTpFldSaveReqVO) { TmplTpFldDO tmplTpFldDO = BeanUtils.toBean(tmplTpFldSaveReqVO, TmplTpFldDO.class); validateTmplFldCodeExists(tmplTpFldSaveReqVO.getFldKy()); baseMapper.insert(tmplTpFldDO); + log.info("创建模板字段成功,模板字段信息:【{}】", tmplTpFldDO); return BeanUtils.toBean(tmplTpFldDO, TmplFldRespVO.class); } @@ -46,6 +50,7 @@ public class TmplTpFldServiceImpl extends ServiceImpl tmplTpFldPage(TmplFldPageReqVO pageReqVO) { + log.info("获取模板字段列表,参数:【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -77,10 +83,17 @@ public class TmplTpFldServiceImpl extends ServiceImpl ids) { validateTmplFldExists(ids); baseMapper.deleteByIds(ids); + log.info("删除模板字段成功,模板字段IDS:【{}】", ids); } @Override public List> getTmplTpListByClass(String clazz) { + log.info("获取模板字段列表,模板字段类:【{}】", clazz); return ClassInfoScanner.getClassFieldInfo(clazz); } + + @Override + public List getTmplTpListByValKeys(List valNames) { + return baseMapper.selectList(new LambdaQueryWrapper().in(TmplTpFldDO::getFldKy, valNames)); + } } diff --git a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java index af878d6..3fd4451 100644 --- a/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java +++ b/zt-module-base/zt-module-base-server/src/main/java/com/zt/plat/module/base/service/tmpltp/TmplTpServiceImpl.java @@ -15,6 +15,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import jakarta.annotation.Resource; import org.springframework.transaction.annotation.Transactional; @@ -38,6 +39,7 @@ import static com.zt.plat.module.tmpltp.enums.ErrorCodeConstants.*; @Service @Validated @RequiredArgsConstructor +@Slf4j public class TmplTpServiceImpl extends ServiceImpl implements TmplTpService { private final TmplFldRelMapper tmplFldRelMapper; private final TmplItmRelMapper tmplItmRelMapper; @@ -52,6 +54,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple TmplTpDO tmplTp = BeanUtils.toBean(createReqVO, TmplTpDO.class); tmplTp.setSts("Y"); baseMapper.insert(tmplTp); + log.info("创建模板分类成功 【{}】", tmplTp); // 返回 List tmplFldRelDOS = new ArrayList<>(); List tmplItmRelDOS = new ArrayList<>(); @@ -68,7 +71,9 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplItmRelDOS.add(tmplItmRelDO); }); tmplFldRelMapper.insertBatch(tmplFldRelDOS); + log.info("创建模板分类与字段关系成功 【{}】", tmplFldRelDOS); tmplItmRelMapper.insertBatch(tmplItmRelDOS); + log.info("创建模板分类与条款关系成功 【{}】", tmplItmRelDOS); return BeanUtils.toBean(tmplTp, TmplTpRespVO.class); } @@ -79,6 +84,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple // 更新 TmplTpDO updateObj = BeanUtils.toBean(updateReqVO, TmplTpDO.class); baseMapper.updateById(updateObj); + log.info("更新模板分类成功 【{}】", updateObj); } @Override @@ -92,17 +98,26 @@ public class TmplTpServiceImpl extends ServiceImpl imple // } // 删除 baseMapper.deleteByIds(ids); + log.info("删除模板分类成功 【{}】", ids); //删除对应的关联信息 tmplFldRelMapper.delete(Wrappers.lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); + log.info("删除模板分类与字段关系成功 【{}】", ids); tmplItmRelMapper.delete(Wrappers.lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); + log.info("删除模板分类与条款关系成功 【{}】", ids); } @Override + @Transactional public void deleteTmplTpListByIds(List ids) { // 校验存在 validateTmplTpExists(ids); // 删除 baseMapper.deleteByIds(ids); + log.info("删除模板分类成功 【{}】", ids); + tmplFldRelMapper.delete(Wrappers.lambdaQuery().in(TmplFldRelDO::getTmplTpId, ids)); + log.info("删除模板分类与字段关系成功 【{}】", ids); + tmplItmRelMapper.delete(Wrappers.lambdaQuery().in(TmplItmRelDO::getTmplTpId, ids)); + log.info("删除模板分类与条款关系成功 【{}】", ids); } private void validateTmplTpExists(List ids) { @@ -125,6 +140,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple @Override public PageResult getTmplTpPage(TmplTpPageReqVO pageReqVO) { + log.info("查询模板分类列表 【{}】", pageReqVO); return baseMapper.selectPage(pageReqVO); } @@ -189,6 +205,7 @@ public class TmplTpServiceImpl extends ServiceImpl imple // throw exception(TMPL_TP_SATUS_ERROR); // } baseMapper.update(Wrappers.lambdaUpdate().set(TmplTpDO::getSts, status).eq(TmplTpDO::getId, id)); + log.info("更新模板分类状态成功 【{}】,更新前的状态为【{}】", id, status); } @@ -235,10 +252,12 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplFldRelDOS.add(tmplFldRelDO); }); tmplFldRelMapper.insertBatch(tmplFldRelDOS); + log.info("模板字段添加成功,模板字段:【{}】", reqVO.getIds()); }else if ("delete".equals(reqVO.getType())) { tmplFldRelMapper.delete(Wrappers.lambdaQuery() .eq(TmplFldRelDO::getTmplTpId, reqVO.getTpId()) .in(TmplFldRelDO::getTpFldId, reqVO.getIds())); + log.info("模板字段删除成功,模板字段:【{}】", reqVO.getIds()); }else { throw exception(ILLEGAL_OPERATION_TYPE); } @@ -255,10 +274,12 @@ public class TmplTpServiceImpl extends ServiceImpl imple tmplItmRelDOS.add(tmplItmRelDO); }); tmplItmRelMapper.insertBatch(tmplItmRelDOS); + log.info("模板条目添加成功,模板条目:【{}】", reqVO.getIds()); }else if ("delete".equals(reqVO.getType())) { tmplItmRelMapper.delete(Wrappers.lambdaQuery() .eq(TmplItmRelDO::getTmplTpId, reqVO.getTpId()) .in(TmplItmRelDO::getItmFldId, reqVO.getIds())); + log.info("模板条目删除成功,模板条目:【{}】", reqVO.getIds()); }else { throw exception(ILLEGAL_OPERATION_TYPE); } diff --git a/zt-module-base/zt-module-base-server/src/main/resources/logback-spring.xml b/zt-module-base/zt-module-base-server/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..b1b9f3f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/logback-spring.xml @@ -0,0 +1,76 @@ + + + + + + + + + +       + + + ${PATTERN_DEFAULT} + + + + + + + + + + ${PATTERN_DEFAULT} + + + + ${LOG_FILE} + + + ${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz} + + ${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false} + + ${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB} + + ${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0} + + ${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30} + + + + + + 0 + + 256 + + + + + + + + ${PATTERN_DEFAULT} + + + + + + + + + + + + + + + + + + + + + + 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 1ad3e78..7a1a3b8 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 @@ -29,6 +29,7 @@ left join SPLY_CPN_REL r on r.NUM = d.ID left join SPLY_ERP_CPN c on r.ERP_NUM = c.NUM where d.DELETED = 0 + and d.IS_COMPANY = 1 and d.NAME = #{name} @@ -42,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-base/zt-module-base-server/src/main/resources/mapper/base/TaxMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/TaxMapper.xml new file mode 100644 index 0000000..6b11765 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/TaxMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/WarehouseMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/WarehouseMapper.xml index 006534d..5e965aa 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/WarehouseMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/base/WarehouseMapper.xml @@ -10,6 +10,6 @@ --> \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessalgorithm/BusinessAlgorithmMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessalgorithm/BusinessAlgorithmMapper.xml new file mode 100644 index 0000000..329c5e2 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessalgorithm/BusinessAlgorithmMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.xml new file mode 100644 index 0000000..aeeb01f --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdepartmentindicator/BusinessDepartmentIndicatorMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdictionarytype/BusinessDictionaryTypeMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdictionarytype/BusinessDictionaryTypeMapper.xml new file mode 100644 index 0000000..df3b291 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdictionarytype/BusinessDictionaryTypeMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdimension/BusinessDimensionMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdimension/BusinessDimensionMapper.xml new file mode 100644 index 0000000..5d482cd --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessdimension/BusinessDimensionMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessindicator/BusinessIndicatorMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessindicator/BusinessIndicatorMapper.xml new file mode 100644 index 0000000..570838a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessindicator/BusinessIndicatorMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessrule/BusinessRuleMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessrule/BusinessRuleMapper.xml new file mode 100644 index 0000000..c47664a --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/businessrule/BusinessRuleMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml index b5e1f87..21372a7 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceDataMapper.xml @@ -9,11 +9,15 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - + update BSE_TMPL_INSC_DAT set deleted = 1 - WHERE INSC_ID = #{templateInstanceId} + WHERE INSC_ID in + + #{id} + + update BSE_TMPL_INSC_DAT set FLD_VAL = #{fldVal} diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml index 300cdcd..ba5b2ec 100644 --- a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TemplateInstanceItemMapper.xml @@ -13,8 +13,12 @@ - - update BSE_TMPL_INSC_ITM set deleted = 1 - WHERE INSC_ID = #{templateInstanceId} + + update BSE_TMPL_INSC_ITM + set deleted = 1 + WHERE INSC_ID in + + #{id} + diff --git a/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TmplInscBsnRelMapper.xml b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TmplInscBsnRelMapper.xml new file mode 100644 index 0000000..c93bdf5 --- /dev/null +++ b/zt-module-base/zt-module-base-server/src/main/resources/mapper/tmpltp/TmplInscBsnRelMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ 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/api/ContractApi.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java new file mode 100644 index 0000000..9f90fcc --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/ContractApi.java @@ -0,0 +1,34 @@ +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.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +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 + "/get/by-paper-number") + @Operation(summary = "通过合同编号获取对应的合同信息") + ContractRespDTO getContractByPaperNumber(@RequestParam("contractPaperNumber") String contractPaperNumber); + + @GetMapping(PREFIX + "/updateOrderStatus") + @Operation(summary = "更新订单状态") + CommonResult updateOrderStatus(@RequestParam("orderId") Long orderId, @RequestParam("status") String status); + + @PostMapping(PREFIX + "/order-by-order-no") + @Operation(summary = "更新订单状态", description = "通过订单编号获取订单信息") + CommonResult> getOrderByOrderNo(@RequestBody List orderNoS); +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java new file mode 100644 index 0000000..6963bd1 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PrchOrdDtlDTO.java @@ -0,0 +1,246 @@ +package com.zt.plat.module.contractorder.api.dto; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class PrchOrdDtlDTO { + + + /** + * 主键 + */ + + private Long id; + /** + * 采购订单主键 + */ + + private Long ordId; + /** + * 行项目;推送ERP(必须) + */ + private Long lineNum; + /** + * 物料编码;推送ERP + */ + + private String mtrlNum; + /** + * 物料名称 + */ + + private String mtrlName; + /** + * 收货工厂名称 + */ + + private String rcvFactName; + /** + * 收货工厂编码;推送ERP(必须) + */ + + private String rcvFactNum; + /** + * 收货库位名称 + */ + + private String rcvWrhName; + /** + * 收货库位编码;推送ERP + */ + + private String rcvWrhNum; + /** + * 暂估数量;推送ERP(必须) + */ + + private String qty; + /** + * 计量单位;推送ERP(必须) + */ + + private BigDecimal unt; + /** + * 含税单价;推送ERP(必须) + */ + + private BigDecimal inTaxUprc; + /** + * 价格单位;推送ERP + */ + + private BigDecimal prcUnt; + /** + * 税码(字典: PRCH_TAX);推送ERP + */ + + private BigDecimal taxNum; + /** + * 是否基于GR的发票校验;推送ERP + */ + + private String isGrInv; + /** + * 是否允许无限制收货;推送ERP + */ + + private String isUnlRcv; + /** + * 批次;推送ERP + */ + + private String bat; + /** + * 项目类别;推送ERP:委托加工L + */ + + private String prjCtgr; + /** + * 科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单 + */ + + private String actsCtgr; + /** + * 物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传 + */ + + private String mtrlCpntNum; + /** + * 物料组描述;推送ERP:联动订单类型,服务订单必传 + */ + + private String mtrlCpntDsp; + /** + * 短文本 + */ + + private String shrtTxt; + /** + * 退货标识X标识退货;推送ERP + */ + + private String isRlbkCgo; + /** + * 是否免费收货标识X;推送ERP + */ + + private String isFreeRcv; + /** + * 外部行项目号;推送ERP + */ + + private Long outLineNum; + /** + * 备注信息-需求单位;推送ERP + */ + + private String rmkUnt; + /** + * 备注信息-物料详细;推送ERP + */ + + private String rmkMtrl; + /** + * 交货起始日期;推送ERP + */ + + private LocalDateTime bgnDt; + /** + * 交货截止日期;推送ERP + */ + + private LocalDateTime ddlDt; + /** + * 已收货量 + */ + + private BigDecimal lstQty; + /** + * 已移库量库;存针对该订单产生的移库量 + */ + + private BigDecimal trfQty; + /** + * 小协议号 + */ + + private String agrNum; + /** + * 移库工厂名称 + */ + + private String trfFactName; + /** + * 移库工厂编码 + */ + + private String trfFactNum; + /** + * 移库库位名称 + */ + + private String trfWrhName; + /** + * 移库库位编码 + */ + + private String trfWrhNum; + /** + * 备注 + */ + + private String rmk; + /** + * 原料湿重;推送ERP + */ + + private BigDecimal origWet; + /** + * 销售物料号;推送ERP:科目分配类别为S时必填 + */ + + private String saleMtrlNum; + /** + * 统计型内部订单;推送ERP + */ + + private String inOrd; + /** + * 采购类别;推送ERP:0-生产性物资类1-项目投资类 + */ + + private String prchCtgr; + /** + * 是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用 + */ + + private String isEnb; + /** + * 科目分配详情;科目分配类别为K或P时使用(JSON) + */ + + private String actsCtgrDtl; + /** + * 委托加工详情;委托加工订单使用(JSON) + */ + + private String enttDtl; + /** + * 金属元素缩写 + */ + + private String elemAbbr; + /** + * 金属元素名称 + */ + + private String elemName; + /** + * 金属元素编码 + */ + + private String elemCdg; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PurchaseOrderWithDetailsDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PurchaseOrderWithDetailsDTO.java new file mode 100644 index 0000000..70b69dc --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/PurchaseOrderWithDetailsDTO.java @@ -0,0 +1,194 @@ +package com.zt.plat.module.contractorder.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class PurchaseOrderWithDetailsDTO { + + /** + * 主键 + */ + private Long id; + /** + * ERP订单号 + */ + private String orderSAPNumber; + /** + * 订单号 + */ + private String systemOrderNumber; + /** + * 公司名称 + */ + private String cpName; + /** + * 公司编码;推送ERP(必须) + */ + private String companyNumber; + /** + * 客商编码;推送ERP(必须) + */ + private String supplierNumber; + /** + * 客商名称 + */ + private String supplierName; + /** + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ + private String type; + /** + * 凭证日期;推送ERP(必须) + */ + private LocalDateTime voucherDate; + /** + * 采购组织编码;推送ERP(必须) + */ + private String purchaseOrganizationCustomsDeclaration; + /** + * 收货工厂名称 + */ + private String receiveFactoryName; + /** + * 收货工厂编码;推送ERP(必须) + */ + private String receiveFactoryNumber; + /** + * 收货库位名称 + */ + private String receiveWarehouseName; + /** + * 收货库位编码;推送ERP + */ + private String receiveWarehouseNumber; + /** + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ + private String purchaseGroup; + /** + * 货币码(字典:CUR);推送ERP(必须) + */ + private String currencyNumber; + /** + * 汇率;推送ERP + */ + private BigDecimal exchangeRate; + /** + * 合同纸质合同号;推送ERP(必须) + */ + private String paperContractNumber; + /** + * 小协议号;推送ERP + */ + private String agreementNumber; + /** + * 备注;推送ERP + */ + private String remark; + /** + * 代理方编码;推送ERP + */ + private String agentNumber; + /** + * 代理方名称 + */ + private String agentName; + /** + * 订单编码 + */ + private String orderNumber; + /** + * 系统合同编号 + */ + private String contractNumber; + /** + * 物料编码 + */ + private String materialNumber; + /** + * 物料名称 + */ + private String materialName; + /** + * 合同名称 + */ + private String contractName; + /** + * 小户头号 + */ + private String tenantNumber; + /** + * ERP公司编号 + */ + private String erpPurchaseCompanyNumber; + /** + * ERP公司名称 + */ + private String erpPurchaseCompanyName; + /** + * ERP客商公司编码 + */ + private String erpSalesCompanyNumber; + /** + * ERP客商公司名称 + */ + private String erpSalesCompanyName; + /** + * 采购组织名称 + */ + private String purchaseOrganizationName; + /** + * ERP状态(字典: ERP_REQ_STS) + */ + private String erpStatus; + /** + * 请求ERP失败原因 + */ + private String cause; + /** + * 订单状态(字典:PRCH_ORD_STS) + */ + + private String status; + /** + * 采购组名称 + */ + private String purchaseGroupName; + + /** + * 流程实例编号 + */ + + private String processInstanceId; + + /** + * 流程当前任务节点id + */ + + private String taskId; + + /** + * 审批意见 + */ + + private String reviewOpinion; + + /** + * 是否需要审批 + */ + private int isPush; + /** + * 物料类型 + */ + private String mtrlTp; + /** + * 订单类型 + */ + private String splyBsnTp; + private List orderDetails; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java new file mode 100644 index 0000000..89d4fd1 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/CoefficientRespDTO.java @@ -0,0 +1,44 @@ +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 = "RPC 服务 - 基础系数配置 Response DTO") +@Data +public class CoefficientRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "系数上限") + private BigDecimal coefficientUp; + + @Schema(description = "系数下限") + private BigDecimal coefficientDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "类型") + private String type; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; +} \ 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/controller/admin/contract/vo/contract/ContractViewRespVO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java similarity index 55% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java rename to zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java index 9a6cb80..3e10aa4 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/ContractRespDTO.java @@ -1,9 +1,5 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +package com.zt.plat.module.contractorder.api.dto.contract; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; -import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; -import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -13,215 +9,245 @@ import java.util.List; @Schema(description = "管理后台 - 合同详情 Response VO") @Data -@ExcelIgnoreUnannotated -public class ContractViewRespVO { +public class ContractRespDTO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2090") - @ExcelProperty("主键") + @Schema(description = "主键") private Long id; - @Schema(description = "模板实例主键", example = "10196") - @ExcelProperty("模板实例主键") + @Schema(description = "模板实例主键") private Long instanceId; @Schema(description = "系统合同编号;自动生成,校验唯一") - @ExcelProperty("系统合同编号;自动生成,校验唯一") private String systemContractNumber; - @Schema(description = "状态", example = "1") - @ExcelProperty("状态") + @Schema(description = "状态") private String status; - @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") - @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一") private String contractName; @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") - @ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一") private String contractPaperNumber; @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") - @ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应") private String contractVirtual; @Schema(description = "是否先款后货") - @ExcelProperty("是否先款后货") private String hasPayable; @Schema(description = "收支性质;与ERP(SZXZ)对应") - @ExcelProperty("收支性质;与ERP(SZXZ)对应") private String direction; - @Schema(description = "合同类型", example = "1") - @ExcelProperty("合同类型") + @Schema(description = "合同类型") private String contractType; @Schema(description = "签署日期;与ERP(HTQDRQ)对应") - @ExcelProperty("签署日期;与ERP(HTQDRQ)对应") private LocalDateTime signDate; @Schema(description = "开始日期;与ERP(HTQSRQ)对应") - @ExcelProperty("开始日期;与ERP(HTQSRQ)对应") private LocalDateTime startDate; @Schema(description = "结束日期;与ERP(HTZZRQ)对应") - @ExcelProperty("结束日期;与ERP(HTZZRQ)对应") private LocalDateTime endDate; @Schema(description = "签署地") - @ExcelProperty("签署地") private String signPlace; @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") - @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") private String purchaseCompanyNumber; - @Schema(description = "甲方公司名称", example = "王五") - @ExcelProperty("甲方公司名称") + @Schema(description = "甲方公司名称") private String purchaseCompanyName; @Schema(description = "甲方地址") - @ExcelProperty("甲方地址") private String purchaseAddress; @Schema(description = "甲方法定代表人") - @ExcelProperty("甲方法定代表人") private String purchaseLeader; @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") - @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") private String salesCompanyNumber; - @Schema(description = "乙方公司名称", example = "王五") - @ExcelProperty("乙方公司名称") + @Schema(description = "乙方公司名称") private String salesCompanyName; @Schema(description = "乙方地址") - @ExcelProperty("乙方地址") private String salesAddress; @Schema(description = "乙方企业负责人") - @ExcelProperty("乙方企业负责人") private String salesPurchaseLeader; @Schema(description = "币种;与ERP(BZBH)对应") - @ExcelProperty("币种;与ERP(BZBH)对应") private String currency; @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmount; @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") - @ExcelProperty("本币金额;与ERP(HTBWBZJE)对应") private BigDecimal basicAmount; @Schema(description = "是否有履约保证金;为是,则保证金必填。") - @ExcelProperty("是否有履约保证金;为是,则保证金必填。") private String hasDeposit; @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmountDeposit; @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") - @ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应") private BigDecimal basicAmountDeposit; @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") - @ExcelProperty("是否有预付款;与ERP(SFYYFK)对应") private String hasPrepayment; @Schema(description = "预付款比例;与ERP(YFKBL)对应") - @ExcelProperty("预付款比例;与ERP(YFKBL)对应") private BigDecimal prepaymentRatio; @Schema(description = "预付款金额;与ERP(YFKJE)对应") - @ExcelProperty("预付款金额;与ERP(YFKJE)对应") private BigDecimal prepaymentAmount; @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") - @ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应") private String hasQualityAmount; @Schema(description = "质保金比例;与ERP(ZBJBL)对应") - @ExcelProperty("质保金比例;与ERP(ZBJBL)对应") private BigDecimal qualityRatio; @Schema(description = "质保金金额;与ERP(BZJJE)对应") - @ExcelProperty("质保金金额;与ERP(BZJJE)对应") private BigDecimal qualityAmount; - @Schema(description = "补充协议类型;变更协议/增加条款", example = "1") - @ExcelProperty("补充协议类型;变更协议/增加条款") + @Schema(description = "补充协议类型;变更协议/增加条款") private String replenishAgreementType; @Schema(description = "备注;与ERP(BZXX)对应") - @ExcelProperty("备注;与ERP(BZXX)对应") private String remark; @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") - @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") private String constructionTypeNumber; - @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三") - @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息") private String constructionTypeName; @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") - @ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息") private String agent; @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") - @ExcelProperty("类别;与ERP(HTLB)对应,拓展信息") private String category; @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") - @ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") - @ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") private BigDecimal changeBasicAmount; @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") - @ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") private BigDecimal changeCooAmountDeposit; @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") - @ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") private BigDecimal changeBasicAmountDeposit; @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") - @ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息") private String isFramework; @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") - @ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息") private String isDomestic; @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") - @ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private String architectureServicePlace; @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") - @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; @Schema(description = "创建时间") - @ExcelProperty("创建时间") private LocalDateTime createTime; @Schema(description = "步骤") - @ExcelProperty("步骤") 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; + + @Schema(description = "ERP甲方公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP甲方公司名称") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP乙方公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP乙方公司名称") + private String erpSalesCompanyName; + + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + // 物料信息 - private List detail; + private List detail; // 合同动态表单 - private List dynamicsFields; + // private List dynamicsFields; // 合同动态条款 - private List dynamicsItems; + // private List dynamicsItems; + + // 价款结算条款 + private List formulas; + + // 参数降级规则 + private List demotes; + + // 品位不计价规则 + private List nots; } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java new file mode 100644 index 0000000..ae49cc4 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DeductRespDTO.java @@ -0,0 +1,45 @@ +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 = "RPC 服务 - 调整价配置 Response DTO") +@Data +public class DeductRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "调整价") + private BigDecimal gradeAmount; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private BigDecimal up; + + @Schema(description = "下限") + private BigDecimal down; + + @Schema(description = "类型(字典:STLM_COEF)") + private String type; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} \ 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/api/dto/contract/DemoteRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java new file mode 100644 index 0000000..0cc5672 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DemoteRespDTO.java @@ -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; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java new file mode 100644 index 0000000..905d564 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/DetailRespDTO.java @@ -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 plans; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java new file mode 100644 index 0000000..87c4faf --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/FormulaRespDTO.java @@ -0,0 +1,56 @@ +package com.zt.plat.module.contractorder.api.dto.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.List; + +@Schema(description = "RPC 服务 - 价款结算条款 Response DTO") +@Data +public class FormulaRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "合同主键") + private Long contractId; + + @Schema(description = "公式类型;单价/总价/水扣款/加工费") + private String formulaType; + + @Schema(description = "公式") + private String formulaCalculate; + + @Schema(description = "编码公式") + private String numberFormula; + + @Schema(description = "物料名称") + private String materialName; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "计算小数位") + private Long decimalPoint; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)") + private String settlementType; + + // 基础系数配置 + private List coefficients; + // 品位等级价配置 + private List grades; + // 调整价配置 + private List deducts; + // 市场价配置 + private List prices; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java new file mode 100644 index 0000000..c481294 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/GradeRespDTO.java @@ -0,0 +1,63 @@ +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 = "RPC 服务 - 品位等级价配置 Response DTO") +@Data +public class GradeRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "品位单位") + private String gradeUnit; + + @Schema(description = "品位上限") + private BigDecimal gradeUp; + + @Schema(description = "品位下限") + private BigDecimal gradeDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "默认计价品位") + private BigDecimal gradeDefault; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; + + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") + private String useCoefficient; + + @Schema(description = "计价类型(字典:STLM_GRD_TP)") + private String priceType; + + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") + private String inState; + + @Schema(description = "等级单价", example = "3565") + private BigDecimal unitPrice; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; +} \ 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/api/dto/contract/NotRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java new file mode 100644 index 0000000..b9004ef --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/NotRespDTO.java @@ -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; +} \ 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/api/dto/contract/PlanRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java new file mode 100644 index 0000000..88f70fd --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PlanRespDTO.java @@ -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; +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java new file mode 100644 index 0000000..d54989d --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/api/dto/contract/PriceRespDTO.java @@ -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 = "RPC 服务 - 市场价配置 Response DTO") +@Data +public class PriceRespDTO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "市场价") + private BigDecimal value; + + @Schema(description = "计算方式;均价/高位价/地位价") + private String calculateWay; + + @Schema(description = "数据来源网价代码;数据字典") + private String dataOrigin; + + @Schema(description = "计价开始日期") + private LocalDateTime calculateStartDate; + + @Schema(description = "计价截止日期") + private LocalDateTime calculateEndDate; + + @Schema(description = "包含开始日期") + private String inStartDate; + + @Schema(description = "包含结束日期") + private String inEndDate; + + @Schema(description = "价格品种元素的明细分类") + private String priceGrade; + + @Schema(description = "品种分类") + private String gradeType; + + @Schema(description = "取价方式;区间价/固定价") + private String averageType; + + @Schema(description = "网价小数位") + private BigDecimal decimalPoint; +} \ 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/ApiConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java new file mode 100644 index 0000000..7fba414 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ApiConstants.java @@ -0,0 +1,26 @@ +package com.zt.plat.module.contractorder.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 + "/contract-order"; + + public static final String VERSION = "1.0.0"; + + public static final String PURCHASE = "甲方"; + + public static final String SALES = "乙方"; +} 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 d6a9ba0..d4eb20d 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 @@ -17,5 +17,14 @@ public interface ErrorCodeConstants { ErrorCode CONTRACT_PAPER_NUMBER_EXISTS = new ErrorCode(1_027_000_002, "合同编号已存在"); ErrorCode CONTRACT_NOT_EXISTS = new ErrorCode(1_027_000_003, "合同不存在"); ErrorCode CONTRACT_ID_NOT_EXISTS = new ErrorCode(1_027_000_004, "合同主键为空"); - ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_004, "{}合同不允许修改"); + ErrorCode CONTRACT_STATUS_NOT_UPDATE = new ErrorCode(1_027_000_005, "{}状态合同不允许修改"); + ErrorCode CONTRACT_DATA_NOT_EXISTS = new ErrorCode(1_027_000_006, "{}不存在"); + ErrorCode CONTRACT_STATUS_NOT_SUBMIT_APPROVAL = new ErrorCode(1_027_000_007, "{}状态合同不允许提交审核"); + 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_011, "不存在的收支类型或收支类型为空"); + ErrorCode CONTRACT_STATUS_NOT_ARCHIVE = new ErrorCode(1_027_000_012, "{}状态合同不允许归档"); + ErrorCode CONTRACT_STATUS_NOT_SUBMIT_ERP = new ErrorCode(1_027_000_013, "{}状态合同不允许提交ERP"); + ErrorCode CONTRACT_ORDER_EXISTS = new ErrorCode(1_027_000_014, "关联订单已存在"); } diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java new file mode 100644 index 0000000..7a4fff7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/ProcessConstants.java @@ -0,0 +1,7 @@ +package com.zt.plat.module.contractorder.enums; + +public class ProcessConstants { + + // 合同审批流程 + public static String CONTRACT_APPROVAL_PROCESS = "contract_approval_process"; +} 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 41684a4..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 @@ -11,22 +11,100 @@ public class TableFieldConstants { public static final String ID = "ID"; /* 合同主信息表 */ + // 系统合同编号;自动生成,校验唯一 + public static final String BSE_CTRT_MAIN_SYS_CTRT_NUM = "SYS_CTRT_NUM"; // 合同名称;与ERP(HTMC)对应,校验唯一 public static final String BSE_CTRT_MAIN_CTRT_NAME = "CTRT_NAME"; + public static final String BSE_CTRT_MAIN_CTRT_NAME_LABEL = "合同名称"; // 合同编号;与ERP(HTBH)对应,校验唯一 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 = "甲方公司名称"; + // 甲方地址 + public static final String BSE_CTRT_MAIN_PRCH_ADR_LABEL = "甲方地址"; + // 甲方法定代表人 + 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 = "乙方公司名称"; + // 乙方地址 + public static final String BSE_CTRT_MAIN_SALE_ADR_LABEL = "乙方地址"; + // 乙方法定代表人 + public static final String BSE_CTRT_MAIN_SALE_PRCH_LDR_LABEL = "乙方法定代表人"; + // 类别 + public static final String BSE_CTRT_MAIN_CTGR_LABEL = "类别"; + // 收支性质 + public static final String BSE_CTRT_MAIN_DRCT_LABEL = "收支性质"; + // 签署日期 + public static final String BSE_CTRT_MAIN_SGN_DT_LABEL = "签署日期"; + // 开始日期 + public static final String BSE_CTRT_MAIN_STRT_DT_LABEL = "开始日期"; + // 结束日期 + public static final String BSE_CTRT_MAIN_END_DT_LABEL = "结束日期"; + // 签署地 + public static final String BSE_CTRT_MAIN_SGN_PLCE_LABEL = "签署地"; + // 币种 + public static final String BSE_CTRT_MAIN_CUR_LABEL = "币种"; + // 本币金额 + public static final String BSE_CTRT_MAIN_BSC_AMT_LABEL = "本币金额"; + // 原币金额 + public static final String BSE_CTRT_MAIN_COO_AMT_LABEL = "原币金额"; + // 是否有履约保证金 + public static final String BSE_CTRT_MAIN_HS_DPST_LABEL = "是否有履约保证金"; + // 原币履约保证金 + public static final String BSE_CTRT_MAIN_COO_AMT_DPST_LABEL = "原币履约保证金"; + // 本币履约保证金 + public static final String BSE_CTRT_MAIN_BSC_AMT_DPST_LABEL = "本币履约保证金"; + // 是否有预付款 + public static final String BSE_CTRT_MAIN_HS_PPYM_LABEL = "是否有预付款"; + // 预付款比例 + public static final String BSE_CTRT_MAIN_PPYM_RTIO_LABEL = "预付款比例"; + // 预付款金额 + public static final String BSE_CTRT_MAIN_PPYM_AMT_LABEL = "预付款金额"; + // 是否有质保金 + public static final String BSE_CTRT_MAIN_HS_QLT_AMT_LABEL = "是否有质保金"; + // 质保金比例 + public static final String BSE_CTRT_MAIN_QLT_RTIO_LABEL = "质保金比例"; + // 质保金金额 + public static final String BSE_CTRT_MAIN_QLT_AMT_LABEL = "质保金金额"; + // 是否先款后货 + public static final String BSE_CTRT_MAIN_HS_PYBL_LABEL = "是否先款后贷"; + // 是否框架合同 + public static final String BSE_CTRT_MAIN_IS_FMWK_LABEL = "是否框架合同"; + // 境内/境外 + public static final String BSE_CTRT_MAIN_IS_DOM_LABEL = "境内/境外"; + // 施工类型编号 + public static final String BSE_CTRT_MAIN_CON_TP_NUM_LABEL = "施工类型编号"; + // 施工类型名称 + public static final String BSE_CTRT_MAIN_CON_TP_NAME_LABEL = "施工类型名称"; + // 代理方 + public static final String BSE_CTRT_MAIN_AGT_LABEL = "代理方"; + // 是否虚拟合同 + public static final String BSE_CTRT_MAIN_CTRT_VRTL_LABEL = "是否虚拟合同"; /* 合同明细表 */ // 合同主信息主键 public static final String BSE_CTRT_DTL_CTRT_MAIN_ID = "CTRT_MAIN_ID"; + // 物料名称 + public static final String BSE_CTRT_DTL_MTRL_NAME_LABEL = "物料名称"; + // 数量 + public static final String BSE_CTRT_DTL_QTY_LABEL = "数量"; + // 计量单位 + public static final String BSE_CTRT_DTL_UNT_LABEL = "计量单位"; /* 交货计划条款表 */ // 合同明细主键 public static final String BSE_CTRT_PLN_CTRT_DTL_ID = "CTRT_DTL_ID"; /* 价款结算条款表 */ - // 合同明细主键 - public static final String BSE_CTRT_FMU_CTRT_DTL_ID = "CTRT_DTL_ID"; + // 合同主键 + public static final String BSE_CTRT_FMU_CTRT_ID = "CTRT_ID"; /* 基础系数配置表 */ // 条款主键 @@ -44,9 +122,13 @@ public class TableFieldConstants { // 条款主键 public static final String BSE_CTRT_PRC_FMU_ID = "FMU_ID"; + /* 参数降级规则表 */ + // 合同主键 + public static final String BSE_CTRT_DMOT_CTRT_ID = "CTRT_ID"; + /* 品位不计价配置表 */ - // 条款主键 - public static final String BSE_CTRT_NT_FMU_ID = "FMU_ID"; + // 合同主键 + public static final String BSE_CTRT_NT_CTRT_ID = "CTRT_ID"; /* 实例字段值表 */ // 关联实例主键 @@ -55,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/ContractStatusEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractStatusEnum.java deleted file mode 100644 index 3dcbe1a..0000000 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractStatusEnum.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.zt.plat.module.contractorder.enums.contract; - -/** - * 合同状态枚举 - */ -public enum ContractStatusEnum { - - /** - * 合同状态-草稿 - */ - DRAFT("草稿","DRAFT","可以删除"), - /** - * 合同状态-正在审核 - */ - UNDER_REVIEW("正在审核","UNDER_REVIEW","不允许任何操作"), - /** - * 合同状态-执行中 - */ - IN_PROGRESS("执行中","IN_PROGRESS","可以终止、归档"), - /** - * 合同状态-已驳回 - */ - REJECTED("已驳回","REJECTED","可以删除"), - /** - * 合同状态-已终止 - */ - TERMINATED("已终止","TERMINATED","只允许归档"), - /** - * 合同状态-已归档 - */ - ARCHIVED("已归档","ARCHIVED","不允许任何操作"), - /** - * 合同状态-已删除 - */ - DELETED("已删除","DELETED","不允许任何操作"); - - ContractStatusEnum(String label, String code, String remark) { - this.label = label; - this.code = code; - this.remark = remark; - } - - /** - * 字典标签 - */ - private final String label; - /** - * 字典编码 - */ - private final String code; - /** - * 备注 - */ - private final String remark; - - public String getLabel() { - return label; - } - - public String getCode() { - return code; - } - - public String getRemark() { - return remark; - } -} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractTypeEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractTypeEnum.java deleted file mode 100644 index 4b04735..0000000 --- a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/ContractTypeEnum.java +++ /dev/null @@ -1,55 +0,0 @@ -package com.zt.plat.module.contractorder.enums.contract; - -/** - * 合同类型枚举 - */ -public enum ContractTypeEnum { - - /** - * 采购 - */ - PRCH("采购","PRCH",null), - /** - * 销售 - */ - SALE("销售","SALE",null), - /** - * 委托加工 - */ - ENTT("委托加工","ENTT",null), - /** - * 来料加工 - */ - MKE("来料加工","MKE",null); - - ContractTypeEnum(String label, String code, String remark) { - this.label = label; - this.code = code; - this.remark = remark; - } - - /** - * 字典标签 - */ - private final String label; - /** - * 字典编码 - */ - private final String code; - /** - * 备注 - */ - private final String remark; - - public String getLabel() { - return label; - } - - public String getCode() { - return code; - } - - public String getRemark() { - return remark; - } -} 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 new file mode 100644 index 0000000..c5ad9e4 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/contract/DictEnum.java @@ -0,0 +1,69 @@ +package com.zt.plat.module.contractorder.enums.contract; + +import lombok.Getter; + +/** + * 字典枚举 + */ +@Getter +public enum DictEnum { + + /** ERP请求状态 */ + ERP_REQ_STS_RLBK("失败","RLBK",null), + ERP_REQ_STS_RCVG("执行中","RCVG",null), + ERP_REQ_STS_FIND("成功","FIND",null), + ERP_REQ_STS_WAIT("待上传","WAIT",null), + /** 业务关联类型 */ + 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), + 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); + + + DictEnum(String label, String code, String remark) { + this.label = label; + this.code = code; + this.remark = remark; + } + + /** + * 字典标签 + */ + private final String label; + /** + * 字典编码 + */ + private final String code; + /** + * 备注 + */ + private final String remark; + + public static DictEnum getByCodeAndType(String code, String dictType) { + return DictEnum.valueOf(dictType + "_" +code); + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java new file mode 100644 index 0000000..24b95d0 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/ErrorCodeConstants.java @@ -0,0 +1,18 @@ +package com.zt.plat.module.contractorder.enums.purchaseorder; + +import com.zt.plat.framework.common.exception.ErrorCode; + +/** + * contract-order 错误码枚举类 + * + * contract-order 系统,使用 1-xxx-xxx-xxx 段 + * + * @author ZT + */ +public interface ErrorCodeConstants { + + ErrorCode PURCHASE_ORDER_NOT_EXISTS = new ErrorCode(1_008_000_001, "采购订单不存在"); + ErrorCode ORDER_ID_NOT_EXISTS = new ErrorCode(1_008_000_010, "订单id不能为空"); + ErrorCode PRCH_ORD_DTL_NOT_EXISTS = new ErrorCode(1_008_001_001, "采购订单明细不存在"); + ErrorCode PURCHASE_ORDER_STATUS_ERROR = new ErrorCode(1_008_001_020, "非法的订单状态"); +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/PurchaseOrderStatusEnum.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/PurchaseOrderStatusEnum.java new file mode 100644 index 0000000..b655a8b --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/purchaseorder/PurchaseOrderStatusEnum.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.contractorder.enums.purchaseorder; + +import lombok.Getter; + +@Getter +public enum PurchaseOrderStatusEnum { + // 草稿状态 + DRAFT("DRAFT", "草稿"), + // 审批中状态 + APPROVING("APPR", "审批中"), + // 待提交ERP状态 + TO_SUBMIT_ERP("SUB", "待提交ERP"), + // 执行中状态 + IN_PROGRESS("IN_PROGRESS", "执行中"), + // 关闭状态 + CLOSED("CLOSE", "关闭"); + + /** 状态编码 */ + private final String code; + /** 状态描述 */ + private final String description; + + PurchaseOrderStatusEnum(String code, String description) { + this.code = code; + this.description = description; + } + + /** + * 根据编码获取枚举实例 + * @param code 状态编码 + * @return 匹配的枚举,无匹配时返回 null + */ + public static PurchaseOrderStatusEnum getByCode(String code) { + for (PurchaseOrderStatusEnum status : PurchaseOrderStatusEnum.values()) { + if (status.getCode().equals(code)) { + return status; + } + } + return null; + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/salesorder/ErrorCodeConstants.java b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/salesorder/ErrorCodeConstants.java new file mode 100644 index 0000000..1d03d77 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-api/src/main/java/com/zt/plat/module/contractorder/enums/salesorder/ErrorCodeConstants.java @@ -0,0 +1,17 @@ +package com.zt.plat.module.contractorder.enums.salesorder; + +import com.zt.plat.framework.common.exception.ErrorCode; + +/** + * contract-order 错误码枚举类 + * + * contract-order 系统,使用 1-xxx-xxx-xxx 段 + * + * @author ZT + */ +public interface ErrorCodeConstants { + + // ========== 合同模块 1-027-000-000 ========== + ErrorCode SALES_ORDER_DETAIL_NOT_EXISTS = new ErrorCode(1_008_00_600, "消费订单不存在"); + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/pom.xml b/zt-module-contract-order/zt-module-contract-order-server/pom.xml index 2abfba9..cf916c2 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/pom.xml +++ b/zt-module-contract-order/zt-module-contract-order-server/pom.xml @@ -129,8 +129,17 @@ com.zt.plat zt-module-base-server - 3.0.39 - compile + ${revision} + + + com.zt.plat + zt-module-bpm-api + ${revision} + + + com.zt.plat + zt-module-erp-server + ${revision} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java new file mode 100644 index 0000000..5b0c737 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/api/ContractApiImpl.java @@ -0,0 +1,60 @@ +package com.zt.plat.module.contractorder.api; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.contractorder.api.dto.PrchOrdDtlDTO; +import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderDetailsRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderWithDetailsVO; +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; +import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.List; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +@RestController +@Validated +@Slf4j +public class ContractApiImpl implements ContractApi { + + @Resource + private ContractService contractService; + @Resource + private PurchaseOrderService purchaseOrderService; + + @Override + public ContractRespDTO getContractByPaperNumber(String contractPaperNumber) { + return contractService.getFormulasByPaperNumber(contractPaperNumber); + } + + @Override + public CommonResult updateOrderStatus(Long orderId, String status) { + return success(purchaseOrderService.updateOrderStatus(orderId, status)); + } + + @Override + public CommonResult> getOrderByOrderNo(List orderNoS) { + List purchaseOrderWithDetailsDTOS = new ArrayList<>(); + List purchaseOrderWithDetailsVOS = purchaseOrderService.getOrderByOrderNo(orderNoS); + purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { + if (purchaseOrderWithDetailsVO!= null) { + PurchaseOrderWithDetailsDTO purchaseOrderWithDetailsDTO = BeanUtils.toBean(purchaseOrderWithDetailsVO, + PurchaseOrderWithDetailsDTO.class); + if (purchaseOrderWithDetailsVO.getOrderDetails().isEmpty()) { + purchaseOrderWithDetailsDTO.setOrderDetails(new ArrayList<>()); + } else { + purchaseOrderWithDetailsDTO.setOrderDetails(BeanUtils.toBean(purchaseOrderWithDetailsVO.getOrderDetails(), PrchOrdDtlDTO.class)); + } + purchaseOrderWithDetailsDTOS.add(purchaseOrderWithDetailsDTO); + } + }); + return success(purchaseOrderWithDetailsDTOS); + } +} 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 a9908df..41ba61e 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 @@ -1,25 +1,26 @@ package com.zt.plat.module.contractorder.controller.admin.contract; +import cn.hutool.json.JSONObject; import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.framework.common.pojo.PageResult; import com.zt.plat.framework.common.util.object.BeanUtils; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractRespVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractSaveReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractViewRespVO; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.*; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import com.zt.plat.module.contractorder.service.contract.ContractService; import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + import static com.zt.plat.framework.common.pojo.CommonResult.success; @Slf4j @@ -40,85 +41,146 @@ public class ContractController implements BusinessControllerMarker { return success(BeanUtils.toBean(pageResult, ContractRespVO.class)); } + @GetMapping("/nots") + @Operation(summary = "查询不计价规则列表") + @PreAuthorize("@ss.hasPermission('base:contract:query')") + public CommonResult> getNots(NotsQueryReqVO queryReqVO) { + return success(contractService.getNots(queryReqVO)); + } + + @GetMapping("/demotes") + @Operation(summary = "查询参数降级规则列表") + @PreAuthorize("@ss.hasPermission('base:contract:query')") + public CommonResult> getDemotes(DemotesQueryReqVO queryReqVO) { + return success(contractService.getDemotes(queryReqVO)); + } + + @GetMapping("/formulas") + @Operation(summary = "查询结算公式列表") + @PreAuthorize("@ss.hasPermission('base:contract:query')") + public CommonResult> getFormulas(FormulasQueryReqVO queryReqVO) { + return success(contractService.getFormulas(queryReqVO)); + } + @PostMapping("/create") @Operation(summary = "新增合同") - @PreAuthorize("@ss.hasPermission('system:contract:create')") - public CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO) { + @PreAuthorize("@ss.hasPermission('base:contract:create')") + public CommonResult create(@Valid @RequestBody ContractSaveReqVO reqVO) { Long id = contractService.createContract(reqVO); - return success(id); + return success(new JSONObject().putOnce("id", id)); } @GetMapping("/get") @Operation(summary = "获得合同详情") - @Parameter(name = "id", description = "合同ID", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('system:contract:get')") - public CommonResult get(@RequestParam("id") Long id) { - ContractViewRespVO contractViewRespVO = contractService.get(id); - return success(contractViewRespVO); + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult get(@RequestParam("id") Long id) { + ContractRespVO contractRespVO = contractService.get(id); + return success(contractRespVO); + } + + @GetMapping("/get/by-system-contract-number") + @Operation(summary = "根据系统合同编号获得合同详情") + @PreAuthorize("@ss.hasPermission('base:contract:get')") + public CommonResult getBySystemContractNumber(@RequestParam("systemContractNumber") String systemContractNumber) { + ContractRespVO contractRespVO = contractService.getBySystemContractNumber(systemContractNumber); + return success(contractRespVO); } @PutMapping("update") @Operation(summary = "修改合同") - @PreAuthorize("@ss.hasPermission('system:contract:update')") + @PreAuthorize("@ss.hasPermission('base:contract:update')") public CommonResult update(@Valid @RequestBody ContractSaveReqVO reqVO) { return success(contractService.update(reqVO)); } - // TODO @DeleteMapping("/delete") @Operation(summary = "删除合同") - @Parameter(name = "ids", description = "合同ID集合", required = true, example = "1024") - @PreAuthorize("@ss.hasPermission('system:contract:delete')") - public CommonResult delete(@RequestParam("ids") Long[] ids) { - return success(true); + @PreAuthorize("@ss.hasPermission('base:contract:delete')") + public CommonResult> delete(@RequestBody List ids) { + return success(contractService.delete(ids)); } - // TODO @PostMapping("/download") @Operation(summary = "下载文件") - @PreAuthorize("@ss.hasPermission('system:contract:download')") - public void download() { + @PreAuthorize("@ss.hasPermission('base:contract:download')") + public ResponseEntity download(@RequestBody List ids) { + return contractService.download(ids); } - // TODO - @PostMapping("/preview") - @Operation(summary = "预览文件") - @PreAuthorize("@ss.hasPermission('system:contract:preview')") - public void preview() { + @PostMapping("/cancel") + @Operation(summary = "作废") + @PreAuthorize("@ss.hasPermission('base:contract:cancel')") + public CommonResult cancel(@RequestBody List ids) { + return success(contractService.cancel(ids)); } - // TODO @PostMapping("/complete") @Operation(summary = "完结") - @PreAuthorize("@ss.hasPermission('system:contract:complete')") - public void complete() { + @PreAuthorize("@ss.hasPermission('base:contract:complete')") + public CommonResult complete(@RequestBody List ids) { + return success(contractService.complete(ids)); } - // TODO @PostMapping("/archive") @Operation(summary = "归档") - @PreAuthorize("@ss.hasPermission('system:contract:archive')") - public void archive() { + @PreAuthorize("@ss.hasPermission('base:contract:archive')") + public CommonResult archive(@RequestBody List ids) { + return success(contractService.archive(ids)); } - // TODO - @PostMapping("/submit/approval") - @Operation(summary = "提交审批") - @PreAuthorize("@ss.hasPermission('system:contract:approval')") - public void submitApproval() { + @GetMapping("/submit/approval") + @Operation(summary = "合同提交审批") + @PreAuthorize("@ss.hasPermission('base:contract:approval')") + public CommonResult submitApproval(@RequestParam("id") Long id) { + return success(contractService.submitApproval(id)); } - // TODO - @PostMapping("/view/approval") - @Operation(summary = "查看审批") - @PreAuthorize("@ss.hasPermission('system:contract:approval')") - public void viewApproval() { + @PostMapping("/approval") + @Operation(summary = "合同审批") + @PreAuthorize("@ss.hasPermission('base:contract:approval')") + public CommonResult approval(@Valid @RequestBody ApprovalReqVO reqVO) { + return success(contractService.approval(reqVO)); } - // TODO - @PostMapping("/submit/ERP") + @PostMapping("/submit/erp") @Operation(summary = "提交ERP") - @PreAuthorize("@ss.hasPermission('system:contract:erp')") - public void submitERP() { + @PreAuthorize("@ss.hasPermission('base:contract:erp')") + public CommonResult submitErp(@RequestParam("id") Long id) { + return success(contractService.submitErp(id)); + } + + @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/ApprovalReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ApprovalReqVO.java new file mode 100644 index 0000000..92e166d --- /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/ApprovalReqVO.java @@ -0,0 +1,23 @@ +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 jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 合同审核请求对象 Request VO") +@Data +public class ApprovalReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + private String reviewOpinion; + + @Schema(description = "状态:待推送 WAIT_PUSH,已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核状态不能为空") + private String status; +} 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/CoefficientRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/CoefficientRespVO.java new file mode 100644 index 0000000..cd5c769 --- /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/CoefficientRespVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 基础系数配置 Response VO") +@Data +public class CoefficientRespVO { + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "系数上限") + private BigDecimal coefficientUp; + + @Schema(description = "系数下限") + private BigDecimal coefficientDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "类型") + private String type; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; +} 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/ContractCoefficientSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/CoefficientSaveReqVO.java similarity index 53% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractCoefficientSaveReqVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/CoefficientSaveReqVO.java index 77402c0..91c91bc 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractCoefficientSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/CoefficientSaveReqVO.java @@ -1,23 +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.NotEmpty; -import jakarta.validation.constraints.NotNull; import lombok.Data; + import java.math.BigDecimal; @Schema(description = "管理后台 - 基础系数配置新增/修改 Request VO") @Data -public class ContractCoefficientSaveReqVO { +public class CoefficientSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31657") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "27478") private Long id; - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6534") - @NotNull(message = "配置主键不能为空") - private Long parameterId; - - @Schema(description = "条款主键", example = "29652") + @Schema(description = "条款主键", example = "13898") private Long formulaId; @Schema(description = "金属元素编码") @@ -29,25 +24,21 @@ public class ContractCoefficientSaveReqVO { @Schema(description = "金属元素名称", example = "芋艿") private String elementName; - @Schema(description = "系数值") - private String settlementCoefficient; - @Schema(description = "系数上限") private BigDecimal coefficientUp; @Schema(description = "系数下限") private BigDecimal coefficientDown; - @Schema(description = "是否包含上限") - private String isInUp; + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") private String inState; - @Schema(description = "类型", example = "1") + @Schema(description = "类型(字典:STLM_COEF)", example = "1") private String type; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; } \ 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/controller/admin/contract/vo/contract/ContractDeductSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDeductSaveReqVO.java deleted file mode 100644 index 1714714..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDeductSaveReqVO.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 调整价配置新增/修改 Request VO") -@Data -public class ContractDeductSaveReqVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25312") - private Long id; - - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21114") - @NotNull(message = "配置主键不能为空") - private Long parameterId; - - @Schema(description = "条款主键", example = "29909") - private Long formulaId; - - @Schema(description = "物料编码;推送ERP") - private String materialNumber; - - @Schema(description = "物料名称", example = "张三") - private String materialName; - - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") - private BigDecimal gradeUp; - - @Schema(description = "下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限") - private String isInUp; - - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "方式") - private String way; - - @Schema(description = "类型", example = "1") - private String type; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; - - @Schema(description = "调整价") - private BigDecimal gradeAmount; -} \ 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/controller/admin/contract/vo/contract/ContractGradeSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractGradeSaveReqVO.java deleted file mode 100644 index 83d23da..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractGradeSaveReqVO.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 品位等级价配置新增/修改 Request VO") -@Data -public class ContractGradeSaveReqVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15414") - private Long id; - - @Schema(description = "配置主键", example = "16734") - private Long parameterId; - - @Schema(description = "条款主键", example = "15344") - private Long formulaId; - - @Schema(description = "金属元素编码") - private String elementNumber; - - @Schema(description = "金属元素缩写") - private String elementAbbreviation; - - @Schema(description = "金属元素名称", example = "芋艿") - private String elementName; - - @Schema(description = "品位单位") - private String gradeUnit; - - @Schema(description = "品位上限") - private BigDecimal gradeUp; - - @Schema(description = "品位下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限;包含则是大于等于,不包含则是大于") - private String isInUp; - - @Schema(description = "是否包含下限;包含则是小于等于,不包含则是小于") - private String isInDown; - - @Schema(description = "默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写") - private BigDecimal gradeDefault; - - @Schema(description = "系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款") - private BigDecimal settlementCoefficient; - - @Schema(description = "不足系数值按比例计算") - private String useCoefficient; - - @Schema(description = "计价类型", example = "2") - private String priceType; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; - - @Schema(description = "等级单价", example = "26237") - private BigDecimal unitPrice; -} \ 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/controller/admin/contract/vo/contract/ContractNotSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractNotSaveReqVO.java deleted file mode 100644 index 2f8a793..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractNotSaveReqVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 品位不计价配置新增/修改 Request VO") -@Data -public class ContractNotSaveReqVO { - - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21132") - private Long id; - - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "3781") - @NotNull(message = "配置主键不能为空") - private Long parameterId; - - @Schema(description = "条款主键", example = "5722") - private Long formulaId; - - @Schema(description = "金属元素编码") - private String elementNumber; - - @Schema(description = "金属元素缩写") - private String elementAbbreviation; - - @Schema(description = "金属元素名称", example = "张三") - private String elementName; - - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") - private BigDecimal gradeUp; - - @Schema(description = "下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限") - private String isInUp; - - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; -} \ 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/controller/admin/contract/vo/contract/ContractPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPageReqVO.java index c451e11..73b4347 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPageReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPageReqVO.java @@ -20,6 +20,9 @@ public class ContractPageReqVO extends PageParam { @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") private String contractPaperNumber; + @Schema(description = "状态", example = "DRAFT") + private String status; + @Schema(description = "甲方公司名称", example = "王五") private String purchaseCompanyName; @@ -35,4 +38,7 @@ public class ContractPageReqVO extends PageParam { @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") private BigDecimal basicAmount; + + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; } \ 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/controller/admin/contract/vo/contract/ContractRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractRespVO.java index f6bdac4..b12ffe3 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractRespVO.java @@ -1,215 +1,257 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; +import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; 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") +@Schema(description = "管理后台 - 合同详情 Response VO") @Data @ExcelIgnoreUnannotated public class ContractRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "2090") - @ExcelProperty("主键") + @Schema(description = "主键") private Long id; - @Schema(description = "模板实例主键", example = "10196") - @ExcelProperty("模板实例主键") + @Schema(description = "模板实例主键") private Long instanceId; @Schema(description = "系统合同编号;自动生成,校验唯一") - @ExcelProperty("系统合同编号;自动生成,校验唯一") private String systemContractNumber; - @Schema(description = "状态", example = "1") - @ExcelProperty("状态") + @Schema(description = "状态") private String status; - @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "芋艿") - @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") + @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一") private String contractName; @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一") - @ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一") private String contractPaperNumber; @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应") - @ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应") private String contractVirtual; @Schema(description = "是否先款后货") - @ExcelProperty("是否先款后货") private String hasPayable; @Schema(description = "收支性质;与ERP(SZXZ)对应") - @ExcelProperty("收支性质;与ERP(SZXZ)对应") private String direction; - @Schema(description = "合同类型", example = "1") - @ExcelProperty("合同类型") + @Schema(description = "合同类型") private String contractType; @Schema(description = "签署日期;与ERP(HTQDRQ)对应") - @ExcelProperty("签署日期;与ERP(HTQDRQ)对应") private LocalDateTime signDate; @Schema(description = "开始日期;与ERP(HTQSRQ)对应") - @ExcelProperty("开始日期;与ERP(HTQSRQ)对应") private LocalDateTime startDate; @Schema(description = "结束日期;与ERP(HTZZRQ)对应") - @ExcelProperty("结束日期;与ERP(HTZZRQ)对应") private LocalDateTime endDate; @Schema(description = "签署地") - @ExcelProperty("签署地") private String signPlace; @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") - @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") private String purchaseCompanyNumber; - @Schema(description = "甲方公司名称", example = "王五") - @ExcelProperty("甲方公司名称") + @Schema(description = "甲方公司名称") private String purchaseCompanyName; @Schema(description = "甲方地址") - @ExcelProperty("甲方地址") private String purchaseAddress; @Schema(description = "甲方法定代表人") - @ExcelProperty("甲方法定代表人") private String purchaseLeader; @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") - @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") private String salesCompanyNumber; - @Schema(description = "乙方公司名称", example = "王五") - @ExcelProperty("乙方公司名称") + @Schema(description = "乙方公司名称") private String salesCompanyName; @Schema(description = "乙方地址") - @ExcelProperty("乙方地址") private String salesAddress; @Schema(description = "乙方企业负责人") - @ExcelProperty("乙方企业负责人") private String salesPurchaseLeader; @Schema(description = "币种;与ERP(BZBH)对应") - @ExcelProperty("币种;与ERP(BZBH)对应") private String currency; @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmount; @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") - @ExcelProperty("本币金额;与ERP(HTBWBZJE)对应") private BigDecimal basicAmount; @Schema(description = "是否有履约保证金;为是,则保证金必填。") - @ExcelProperty("是否有履约保证金;为是,则保证金必填。") private String hasDeposit; @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmountDeposit; @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") - @ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应") private BigDecimal basicAmountDeposit; @Schema(description = "是否有预付款;与ERP(SFYYFK)对应") - @ExcelProperty("是否有预付款;与ERP(SFYYFK)对应") private String hasPrepayment; @Schema(description = "预付款比例;与ERP(YFKBL)对应") - @ExcelProperty("预付款比例;与ERP(YFKBL)对应") private BigDecimal prepaymentRatio; @Schema(description = "预付款金额;与ERP(YFKJE)对应") - @ExcelProperty("预付款金额;与ERP(YFKJE)对应") private BigDecimal prepaymentAmount; @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应") - @ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应") private String hasQualityAmount; @Schema(description = "质保金比例;与ERP(ZBJBL)对应") - @ExcelProperty("质保金比例;与ERP(ZBJBL)对应") private BigDecimal qualityRatio; @Schema(description = "质保金金额;与ERP(BZJJE)对应") - @ExcelProperty("质保金金额;与ERP(BZJJE)对应") private BigDecimal qualityAmount; - @Schema(description = "补充协议类型;变更协议/增加条款", example = "1") - @ExcelProperty("补充协议类型;变更协议/增加条款") + @Schema(description = "补充协议类型;变更协议/增加条款") private String replenishAgreementType; @Schema(description = "备注;与ERP(BZXX)对应") - @ExcelProperty("备注;与ERP(BZXX)对应") private String remark; @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息") - @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") private String constructionTypeNumber; - @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "张三") - @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") + @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息") private String constructionTypeName; @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息") - @ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息") private String agent; @Schema(description = "类别;与ERP(HTLB)对应,拓展信息") - @ExcelProperty("类别;与ERP(HTLB)对应,拓展信息") private String category; @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") - @ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") - @ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") private BigDecimal changeBasicAmount; @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") - @ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") private BigDecimal changeCooAmountDeposit; @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") - @ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") private BigDecimal changeBasicAmountDeposit; @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息") - @ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息") private String isFramework; @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息") - @ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息") private String isDomestic; @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") - @ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private String architectureServicePlace; @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") - @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; @Schema(description = "创建时间") - @ExcelProperty("创建时间") private LocalDateTime createTime; @Schema(description = "步骤") - @ExcelProperty("步骤") private Integer step; -} \ No newline at end of file + + @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; + + @Schema(description = "ERP甲方公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP甲方公司名称") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP乙方公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP乙方公司名称") + private String erpSalesCompanyName; + + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + + // 物料信息 + private List detail; + + // 合同动态表单 + private List dynamicsFields; + + // 合同动态条款 + private List dynamicsItems; + + // 价款结算条款 + private List formulas; + + // 参数降级规则 + private List demotes; + + // 品位不计价规则 + private List nots; +} 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 6dfdf33..8854836 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; @@ -21,199 +22,206 @@ public class ContractSaveReqVO { @NotNull(message = "步骤不能为空") @Schema(description = "步骤", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") - @ExcelProperty("步骤") private Integer step; - // 合同基本信息 + @Schema(description = "交货地点") + private String deliveryAddress; + + @Schema(description = "交货方式(字典:FRCST_ASN)") + private String deliveryWay; + + @Schema(description = "附件对象存储") + private JSONArray fileObject; + + @Schema(description = "其它附件对象存储") + private JSONArray fileObjectOther; + @Schema(description = "甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。", example = "甲方公司编号") - @ExcelProperty("甲方公司编号;如果是采购合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是销售合同,手动选择,且与ERP(WLDWBH)对应。") private String purchaseCompanyNumber; @Schema(description = "甲方公司名称", example = "甲方公司名称") - @ExcelProperty("甲方公司名称") private String purchaseCompanyName; @Schema(description = "甲方地址", example = "甲方地址") - @ExcelProperty("甲方地址") private String purchaseAddress; @Schema(description = "甲方法定代表人", example = "甲方法定代表人") - @ExcelProperty("甲方法定代表人") private String purchaseLeader; + @Schema(description = "甲方联系人", example = "甲方联系人") + private String purchaseHuman; + + @Schema(description = "甲方电话", example = "甲方电话") + private String purchaseTel; + + @Schema(description = "甲方邮箱", example = "甲方邮箱") + private String purchaseEmail; + + @Schema(description = "甲方传真", example = "甲方传真") + private String purchaseFax; + + @Schema(description = "甲方联系地址", example = "甲方联系地址") + private String purchaseContactAddress; + @Schema(description = "乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。", example = "乙方公司编号") - @ExcelProperty("乙方公司编号;如果是销售合同,查询组织机构自动带出,且与ERP(HTQDZTBH)对应,如果是采购合同,手动选择,且与ERP(WLDWBH)对应。") private String salesCompanyNumber; @Schema(description = "乙方公司名称", example = "乙方公司名称") - @ExcelProperty("乙方公司名称") private String salesCompanyName; @Schema(description = "乙方地址", example = "乙方地址") - @ExcelProperty("乙方地址") private String salesAddress; @Schema(description = "乙方企业负责人", example = "乙方企业负责人") - @ExcelProperty("乙方企业负责人") private String salesPurchaseLeader; + @Schema(description = "乙方联系人", example = "乙方联系人") + private String salesHuman; + + @Schema(description = "乙方电话", example = "乙方电话") + private String salesTel; + + @Schema(description = "乙方邮箱", example = "乙方邮箱") + private String salesEmail; + + @Schema(description = "乙方传真", example = "乙方传真") + private String salesFax; + + @Schema(description = "乙方联系地址", example = "乙方联系地址") + private String salesContactAddress; + @NotBlank(message = "合同名称不能为空") @Size(max = 90, message = "合同名称长度不能超过90个字符") @Schema(description = "合同名称;与ERP(HTMC)对应,校验唯一", example = "合同名称") - @ExcelProperty("合同名称;与ERP(HTMC)对应,校验唯一") private String contractName; @Schema(description = "合同编号;与ERP(HTBH)对应,校验唯一", example = "合同编号") - @ExcelProperty("合同编号;与ERP(HTBH)对应,校验唯一") private String contractPaperNumber; - @NotBlank(message = "合同类型不能为空") @Schema(description = "合同类型", example = "PRCH") - @ExcelProperty("合同类型") private String contractType; @Schema(description = "收支性质;与ERP(SZXZ)对应", example = "EXPENSES") - @ExcelProperty("收支性质;与ERP(SZXZ)对应") private String direction; @Schema(description = "签署日期;与ERP(HTQDRQ)对应") - @ExcelProperty("签署日期;与ERP(HTQDRQ)对应") private String signDate; @Schema(description = "开始日期;与ERP(HTQSRQ)对应") - @ExcelProperty("开始日期;与ERP(HTQSRQ)对应") private String startDate; @Schema(description = "结束日期;与ERP(HTZZRQ)对应") - @ExcelProperty("结束日期;与ERP(HTZZRQ)对应") private String endDate; @Schema(description = "签署地", example = "签署地") - @ExcelProperty("签署地") private String signPlace; - // 金额信息 @Schema(description = "币种;与ERP(BZBH)对应", example = "CNY") - @ExcelProperty("币种;与ERP(BZBH)对应") private String currency; @Schema(description = "本币金额;与ERP(HTBWBZJE)对应") - @ExcelProperty("本币金额;与ERP(HTBWBZJE)对应") private BigDecimal basicAmount; @Schema(description = "原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币金额;与ERP(HTYBZJE)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmount; @Schema(description = "是否有履约保证金;为是,则保证金必填。", example = "1") - @ExcelProperty("是否有履约保证金;为是,则保证金必填。") private String hasDeposit; @Schema(description = "原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") - @ExcelProperty("原币履约保证金;与ERP(LYBZJBGQYB)对应,币种不是人民币时,显示并手动填写,如果是人民币,隐藏且等于本币金额") private BigDecimal cooAmountDeposit; @Schema(description = "本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") - @ExcelProperty("本币履约保证金-变更后;与ERP(LYBZJBGHBWB)对应,拓展信息") private BigDecimal changeBasicAmountDeposit; @Schema(description = "是否有预付款;与ERP(SFYYFK)对应", example = "1") - @ExcelProperty("是否有预付款;与ERP(SFYYFK)对应") private String hasPrepayment; @Schema(description = "预付款比例;与ERP(YFKBL)对应") - @ExcelProperty("预付款比例;与ERP(YFKBL)对应") private BigDecimal prepaymentRatio; @Schema(description = "预付款金额;与ERP(YFKJE)对应") - @ExcelProperty("预付款金额;与ERP(YFKJE)对应") private BigDecimal prepaymentAmount; @Schema(description = "是否有质保金;与ERP(SFHZBJ)对应", example = "1") - @ExcelProperty("是否有质保金;与ERP(SFHZBJ)对应") private String hasQualityAmount; @Schema(description = "质保金比例;与ERP(ZBJBL)对应") - @ExcelProperty("质保金比例;与ERP(ZBJBL)对应") private BigDecimal qualityRatio; @Schema(description = "质保金金额;与ERP(BZJJE)对应") - @ExcelProperty("质保金金额;与ERP(BZJJE)对应") private BigDecimal qualityAmount; @Schema(description = "是否先款后货", example = "1") - @ExcelProperty("是否先款后货") private String hasPayable; @Schema(description = "备注;与ERP(BZXX)对应", example = "备注") - @ExcelProperty("备注;与ERP(BZXX)对应") private String remark; - // 物料信息 - private List detail; - - // 扩展信息 @Schema(description = "原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") - @ExcelProperty("原币金额-变更后;与ERP(BGHHTYBZJE)对应,拓展信息") private BigDecimal changeCooAmount; @Schema(description = "本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") - @ExcelProperty("本币金额-变更后;与ERP(BGHHTBWBZJE)对应,拓展信息") private BigDecimal changeBasicAmount; @Schema(description = "原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") - @ExcelProperty("原币履约保证金-变更后;与ERP(LYBZJBGHYB)对应,拓展信息") private BigDecimal changeCooAmountDeposit; @Schema(description = "本币履约保证金;与ERP(LYBZJBGQBWB)对应") - @ExcelProperty("本币履约保证金;与ERP(LYBZJBGQBWB)对应") private BigDecimal basicAmountDeposit; @Schema(description = "是否框架合同;与ERP(SFKJHT)对应,拓展信息", example = "1") - @ExcelProperty("是否框架合同;与ERP(SFKJHT)对应,拓展信息") private String isFramework; @Schema(description = "境内/境外;与ERP(JNJW)对应,拓展信息", example = "DOMESTIC") - @ExcelProperty("境内/境外;与ERP(JNJW)对应,拓展信息") private String isDomestic; @Schema(description = "施工类型编号;与ERP(HTLXBH)对应,拓展信息", example = "施工类型编号") - @ExcelProperty("施工类型编号;与ERP(HTLXBH)对应,拓展信息") private String constructionTypeNumber; @Schema(description = "施工类型名称;与ERP(HTLXMC)对应,拓展信息", example = "施工类型名称") - @ExcelProperty("施工类型名称;与ERP(HTLXMC)对应,拓展信息") private String constructionTypeName; @Schema(description = "代理方;与ERP(ZLIFNR)对应,拓展信息", example = "代理方") - @ExcelProperty("代理方;与ERP(ZLIFNR)对应,拓展信息") private String agent; + @NotBlank(message = "合同类别不能为空") @Schema(description = "类别;与ERP(HTLB)对应,拓展信息", example = "PROCESSING") - @ExcelProperty("类别;与ERP(HTLB)对应,拓展信息") private String category; @Schema(description = "是否虚拟合同;与ERP(SFXNHT)对应", example = "1") - @ExcelProperty("是否虚拟合同;与ERP(SFXNHT)对应") private String contractVirtual; @Schema(description = "补充协议类型;变更协议/增加条款", example = "补充协议类型") - @ExcelProperty("补充协议类型;变更协议/增加条款") private String replenishAgreementType; @Schema(description = "建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填", example = "建筑服务发生地") - @ExcelProperty("建筑服务发生地;与ERP(JZFWFSD)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private String architectureServicePlace; @Schema(description = "达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") - @ExcelProperty("达到收款条件金额;与ERP(DDSKJE)对应,拓展信息,销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; - // 模板部分查询 + @Schema(description = "是否内部企业(字典:ERP_CTRT_YN)") + private String isInternal; + @Schema(description = "模板实例主键", example = "10196") - @ExcelProperty("模板实例主键") private Long instanceId; + @Schema(description = "合同分类(字典:SPLY_BSN_TP)") + private String businessType; + + // 物料信息 + private List detail; + // 合同动态表单 private List dynamicsFields; + + // 价款结算条款 + private List formulas; + + // 参数降级规则 + private List demotes; + + // 品位不计价规则 + private List nots; } \ 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/controller/admin/contract/vo/contract/ContractViewCoefficientRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewCoefficientRespVO.java deleted file mode 100644 index 65938f4..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewCoefficientRespVO.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 基础系数配置 Response VO") -@Data -public class ContractViewCoefficientRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31657") - private Long id; - - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6534") - private Long parameterId; - - @Schema(description = "条款主键", example = "29652") - private Long formulaId; - - @Schema(description = "金属元素编码") - private String elementNumber; - - @Schema(description = "金属元素缩写") - private String elementAbbreviation; - - @Schema(description = "金属元素名称", example = "芋艿") - private String elementName; - - @Schema(description = "系数值") - private String settlementCoefficient; - - @Schema(description = "系数上限") - private BigDecimal coefficientUp; - - @Schema(description = "系数下限") - private BigDecimal coefficientDown; - - @Schema(description = "是否包含上限") - private String isInUp; - - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; - - @Schema(description = "类型", example = "1") - private String type; -} 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/ContractViewDeductRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDeductRespVO.java deleted file mode 100644 index 4594537..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDeductRespVO.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 调整价配置 Response VO") -@Data -public class ContractViewDeductRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "25312") - private Long id; - - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21114") - @NotNull(message = "配置主键不能为空") - private Long parameterId; - - @Schema(description = "条款主键", example = "29909") - private Long formulaId; - - @Schema(description = "物料编码;推送ERP") - private String materialNumber; - - @Schema(description = "物料名称", example = "张三") - private String materialName; - - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") - private BigDecimal gradeUp; - - @Schema(description = "下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限") - private String isInUp; - - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "方式") - private String way; - - @Schema(description = "类型", example = "1") - private String type; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; - - @Schema(description = "调整价") - private BigDecimal gradeAmount; -} 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/ContractViewGradeRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewGradeRespVO.java deleted file mode 100644 index ccc3813..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewGradeRespVO.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 品位等级价配置 Response VO") -@Data -public class ContractViewGradeRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "15414") - private Long id; - - @Schema(description = "配置主键", example = "16734") - private Long parameterId; - - @Schema(description = "条款主键", example = "15344") - private Long formulaId; - - @Schema(description = "金属元素编码") - private String elementNumber; - - @Schema(description = "金属元素缩写") - private String elementAbbreviation; - - @Schema(description = "金属元素名称", example = "芋艿") - private String elementName; - - @Schema(description = "品位单位") - private String gradeUnit; - - @Schema(description = "品位上限") - private BigDecimal gradeUp; - - @Schema(description = "品位下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限;包含则是大于等于,不包含则是大于") - private String isInUp; - - @Schema(description = "是否包含下限;包含则是小于等于,不包含则是小于") - private String isInDown; - - @Schema(description = "默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写") - private BigDecimal gradeDefault; - - @Schema(description = "系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款") - private BigDecimal settlementCoefficient; - - @Schema(description = "不足系数值按比例计算") - private String useCoefficient; - - @Schema(description = "计价类型", example = "2") - private String priceType; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; - - @Schema(description = "等级单价", example = "26237") - private BigDecimal unitPrice; -} 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/ContractViewNotRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewNotRespVO.java deleted file mode 100644 index 5899f95..0000000 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewNotRespVO.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; - -import io.swagger.v3.oas.annotations.media.Schema; -import jakarta.validation.constraints.NotEmpty; -import jakarta.validation.constraints.NotNull; -import lombok.Data; - -import java.math.BigDecimal; - -@Schema(description = "管理后台 - 品位不计价配置 Response VO") -@Data -public class ContractViewNotRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "21132") - private Long id; - - @Schema(description = "配置主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "3781") - @NotNull(message = "配置主键不能为空") - private Long parameterId; - - @Schema(description = "条款主键", example = "5722") - private Long formulaId; - - @Schema(description = "金属元素编码") - private String elementNumber; - - @Schema(description = "金属元素缩写") - private String elementAbbreviation; - - @Schema(description = "金属元素名称", example = "张三") - private String elementName; - - @Schema(description = "上限", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "上限不能为空") - private BigDecimal gradeUp; - - @Schema(description = "下限") - private BigDecimal gradeDown; - - @Schema(description = "是否包含上限") - private String isInUp; - - @Schema(description = "是否包含下限") - private String isInDown; - - @Schema(description = "是否省内", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "是否省内不能为空") - private String inState; -} 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/DeductRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductRespVO.java new file mode 100644 index 0000000..e544e2b --- /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/DeductRespVO.java @@ -0,0 +1,44 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.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 DeductRespVO { + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "调整价") + private BigDecimal gradeAmount; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private BigDecimal up; + + @Schema(description = "下限") + private BigDecimal down; + + @Schema(description = "类型(字典:STLM_COEF)") + private String type; + + @Schema(description = "创建时间") + private LocalDateTime createTime; +} 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/DeductSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DeductSaveReqVO.java new file mode 100644 index 0000000..fa796e3 --- /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/DeductSaveReqVO.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 调整价配置新增/修改 Request VO") +@Data +public class DeductSaveReqVO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; + + @Schema(description = "是否省内") + private String inState; + + @Schema(description = "调整价") + private BigDecimal gradeAmount; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "上限") + private BigDecimal up; + + @Schema(description = "下限") + private BigDecimal down; + + @Schema(description = "类型(字典:STLM_COEF)") + private String type; +} \ 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/controller/admin/contract/vo/contract/DemoteRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DemoteRespVO.java new file mode 100644 index 0000000..2c98340 --- /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/DemoteRespVO.java @@ -0,0 +1,53 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 参数降级规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class DemoteRespVO { + + @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; +} 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/DemoteSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DemoteSaveReqVO.java new file mode 100644 index 0000000..a5808f1 --- /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/DemoteSaveReqVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 参数降级规则新增/修改 Request VO") +@Data +public class DemoteSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "31818") + private Long id; + + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "14971") + @NotNull(message = "合同主键不能为空") + private Long contractId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "王五") + private String elementName; + + @Schema(description = "上限") + private BigDecimal gradeUp; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "下限") + private BigDecimal gradeDown; + + @Schema(description = "降级后物料名称", example = "李四") + private String materialName; + + @Schema(description = "降级后物料编码") + private String materialNumber; +} \ 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/controller/admin/contract/vo/contract/DemotesQueryReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DemotesQueryReqVO.java new file mode 100644 index 0000000..4a2f0e0 --- /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/DemotesQueryReqVO.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 lombok.Data; + +@Schema(description = "管理后台 - 查询参数降级规则列表 Request VO") +@Data +public class DemotesQueryReqVO { + + @Schema(description = "合同名称") + private String contractName; + @Schema(description = "合同编码") + private String contractPaperNumber; + @Schema(description = "物料名称") + private String materialName; + @Schema(description = "金属元素") + private String elementName; +} 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/ContractViewDetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailRespVO.java similarity index 50% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailRespVO.java index 9385e22..be4af9b 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewDetailRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailRespVO.java @@ -8,37 +8,34 @@ import java.util.List; @Schema(description = "管理后台 - 合同明细 Response VO") @Data -public class ContractViewDetailRespVO { +public class DetailRespVO { @Schema(description = "主键") private Long id; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称") private String materialName; - @Schema(description = "物料编码", example = "物料编码") + @Schema(description = "物料编码") private String materialNumber; @Schema(description = "数量") private BigDecimal quantity; - @Schema(description = "计量单位", example = "吨") + @Schema(description = "计量单位") private String unit; - @Schema(description = "含税单价", example = "28579") + @Schema(description = "含税单价") private BigDecimal inTaxUnitPrice; - @Schema(description = "金属元素缩写", example = "金属元素缩写") + @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称") private String elementName; - @Schema(description = "金属元素编码", example = "金属元素编码") + @Schema(description = "金属元素编码") private String elementNumber; // 交货计划 - private List plans; - - // 价款结算条款 - private List formulas; + private List plans; } 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/ContractDetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailSaveReqVO.java similarity index 87% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailSaveReqVO.java index 6055b01..d6453c4 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractDetailSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/DetailSaveReqVO.java @@ -8,7 +8,7 @@ import java.util.List; @Schema(description = "管理后台 - 合同明细新增/修改 Request VO") @Data -public class ContractDetailSaveReqVO { +public class DetailSaveReqVO { @Schema(description = "主键") private Long id; @@ -28,6 +28,9 @@ public class ContractDetailSaveReqVO { @Schema(description = "含税单价", example = "28579") private BigDecimal inTaxUnitPrice; + @Schema(description = "含税总价") + private BigDecimal allInTaxUnitPrice; + @Schema(description = "金属元素缩写", example = "金属元素缩写") private String elementAbbreviation; @@ -38,8 +41,5 @@ public class ContractDetailSaveReqVO { private String elementNumber; // 交货计划 - private List plans; - - // 价款结算条款 - private List formulas; + private List plans; } \ 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/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaRespVO.java similarity index 57% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaRespVO.java index ae04390..75d20b0 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewFormulaRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaRespVO.java @@ -7,14 +7,14 @@ import java.util.List; @Schema(description = "管理后台 - 价款结算条款 Response VO") @Data -public class ContractViewFormulaRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28539") +public class FormulaRespVO { + @Schema(description = "主键") private Long id; - @Schema(description = "合同明细主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8181") - private Long contractDetailId; + @Schema(description = "合同主键") + private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "UNIT_PRICE") + @Schema(description = "公式类型;单价/总价/水扣款/加工费") private String formulaType; @Schema(description = "公式") @@ -23,7 +23,7 @@ public class ContractViewFormulaRespVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称") private String materialName; @Schema(description = "物料编码") @@ -38,17 +38,24 @@ public class ContractViewFormulaRespVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称") private String elementName; + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)") + private String settlementType; + + @Schema(description = "合同名称") + private String contractName; + + @Schema(description = "合同编码") + private String contractPaperNumber; + // 基础系数配置 - private List coefficients; + private List coefficients; // 品位等级价配置 - private List grades; + private List grades; // 调整价配置 - private List deducts; + private List deducts; // 市场价配置 - private List prices; - // 品位不计价配置 - private List nots; + private List prices; } 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/ContractFormulaSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java similarity index 59% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java index f96295c..aed20f9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractFormulaSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulaSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; +import cn.hutool.json.JSONArray; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotNull; import lombok.Data; @@ -8,16 +9,16 @@ import java.util.List; @Schema(description = "管理后台 - 价款结算条款新增/修改 Request VO") @Data -public class ContractFormulaSaveReqVO { +public class FormulaSaveReqVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28539") + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "22933") private Long id; - @Schema(description = "合同明细主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "8181") - @NotNull(message = "合同明细主键不能为空") - private Long contractDetailId; + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9162") + @NotNull(message = "合同主键不能为空") + private Long contractId; - @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "UNIT_PRICE") + @Schema(description = "公式类型;单价/总价/水扣款/加工费", example = "1") private String formulaType; @Schema(description = "公式") @@ -26,7 +27,7 @@ public class ContractFormulaSaveReqVO { @Schema(description = "编码公式") private String numberFormula; - @Schema(description = "物料名称", example = "物料名称") + @Schema(description = "物料名称", example = "赵六") private String materialName; @Schema(description = "物料编码") @@ -41,20 +42,18 @@ public class ContractFormulaSaveReqVO { @Schema(description = "金属元素缩写") private String elementAbbreviation; - @Schema(description = "金属元素名称", example = "金属元素名称") + @Schema(description = "金属元素名称", example = "赵六") private String elementName; - @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "LST") - private String settlementType; + @Schema(description = "结算类型,多条使用逗号分隔(字典:PRCH_STLM_TP)", example = "1") + private JSONArray settlementType; // 基础系数配置 - private List coefficients; + private List coefficients; // 品位等级价配置 - private List grades; + private List grades; // 调整价配置 - private List deducts; + private List deducts; // 市场价配置 - private List prices; - // 品位不计价配置 - private List nots; + private List prices; } \ 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/controller/admin/contract/vo/contract/FormulasQueryReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/FormulasQueryReqVO.java new file mode 100644 index 0000000..85e49d1 --- /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/FormulasQueryReqVO.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 lombok.Data; + +@Schema(description = "管理后台 - 查询结算公式列表 Request VO") +@Data +public class FormulasQueryReqVO { + + @Schema(description = "合同名称") + private String contractName; + @Schema(description = "合同编码") + private String contractPaperNumber; + @Schema(description = "物料名称") + private String materialName; + @Schema(description = "金属元素") + private String elementName; +} 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/GradeRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/GradeRespVO.java new file mode 100644 index 0000000..fca29ec --- /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/GradeRespVO.java @@ -0,0 +1,63 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.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 GradeRespVO { + + @Schema(description = "主键") + private Long id; + + @Schema(description = "条款主键") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称") + private String elementName; + + @Schema(description = "品位单位") + private String gradeUnit; + + @Schema(description = "品位上限") + private BigDecimal gradeUp; + + @Schema(description = "品位下限") + private BigDecimal gradeDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "默认计价品位") + private BigDecimal gradeDefault; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; + + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") + private String useCoefficient; + + @Schema(description = "计价类型(字典:STLM_GRD_TP)") + private String priceType; + + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") + private String inState; + + @Schema(description = "等级单价", example = "3565") + private BigDecimal unitPrice; + + @Schema(description = "创建时间") + private LocalDateTime createTime; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)") + private String configType; +} 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/GradeSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/GradeSaveReqVO.java new file mode 100644 index 0000000..3dbc60f --- /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/GradeSaveReqVO.java @@ -0,0 +1,59 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 品位等级价配置新增/修改 Request VO") +@Data +public class GradeSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6211") + private Long id; + + @Schema(description = "条款主键", example = "2426") + private Long formulaId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "王五") + private String elementName; + + @Schema(description = "品位单位") + private String gradeUnit; + + @Schema(description = "品位上限") + private BigDecimal gradeUp; + + @Schema(description = "品位下限") + private BigDecimal gradeDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "默认计价品位") + private BigDecimal gradeDefault; + + @Schema(description = "系数值") + private BigDecimal settlementCoefficient; + + @Schema(description = "是否比例计算(字典:ERP_CTRT_YN)") + private String useCoefficient; + + @Schema(description = "计价类型(字典:STLM_GRD_TP)", example = "2") + private String priceType; + + @Schema(description = "是否省内(字典:ERP_CTRT_YN)") + private String inState; + + @Schema(description = "等级单价", example = "3565") + private BigDecimal unitPrice; + + @Schema(description = "数据项类型(字典:GRD_CFG_TP)", example = "1") + private String configType; +} \ 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/controller/admin/contract/vo/contract/NotRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/NotRespVO.java new file mode 100644 index 0000000..1f918fa --- /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/NotRespVO.java @@ -0,0 +1,53 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 品位不计价规则 Response VO") +@Data +@ExcelIgnoreUnannotated +public class NotRespVO { + + @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; +} \ 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/controller/admin/contract/vo/contract/NotSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/NotSaveReqVO.java new file mode 100644 index 0000000..78afc87 --- /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/NotSaveReqVO.java @@ -0,0 +1,43 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 品位不计价规则新增/修改 Request VO") +@Data +public class NotSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "18545") + private Long id; + + @Schema(description = "合同主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "5333") + @NotNull(message = "合同主键不能为空") + private Long contractId; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "王五") + private String elementName; + + @Schema(description = "上限") + private BigDecimal gradeUp; + + @Schema(description = "下限") + private BigDecimal gradeDown; + + @Schema(description = "区间方式(字典:STLM_RNG_WY)") + private String rangeWay; + + @Schema(description = "物料名称", example = "芋艿") + private String materialName; + + @Schema(description = "物料编码") + private String materialNumber; +} \ 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/controller/admin/contract/vo/contract/NotsQueryReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/NotsQueryReqVO.java new file mode 100644 index 0000000..e8709bf --- /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/NotsQueryReqVO.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 lombok.Data; + +@Schema(description = "管理后台 - 查询不计价规则列表 Request VO") +@Data +public class NotsQueryReqVO { + + @Schema(description = "合同名称") + private String contractName; + @Schema(description = "合同编码") + private String contractPaperNumber; + @Schema(description = "物料名称") + private String materialName; + @Schema(description = "金属元素") + private String elementName; +} 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/ContractViewPlanRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanRespVO.java similarity index 81% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewPlanRespVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanRespVO.java index 27bd099..517ca47 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewPlanRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanRespVO.java @@ -7,14 +7,14 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 交货计划 Response VO") @Data -public class ContractViewPlanRespVO { +public class PlanRespVO { @Schema(description = "主键") private Long id; - @Schema(description = "交货年份", example = "2025") + @Schema(description = "交货年份") private Long contractDeliveryYear; - @Schema(description = "交货月份", example = "9") + @Schema(description = "交货月份") private Long contractPlanDeliveryMonth; @Schema(description = "计划交货数量") 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/ContractPlanSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanSaveReqVO.java similarity index 95% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPlanSaveReqVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanSaveReqVO.java index 5d39bc0..6ee919d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPlanSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PlanSaveReqVO.java @@ -7,7 +7,7 @@ import java.math.BigDecimal; @Schema(description = "管理后台 - 交货计划条款新增/修改 Request VO") @Data -public class ContractPlanSaveReqVO { +public class PlanSaveReqVO { @Schema(description = "主键") private Long id; 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/ContractViewPriceRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceRespVO.java similarity index 73% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewPriceRespVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceRespVO.java index ad519ee..da35f5d 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractViewPriceRespVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceRespVO.java @@ -8,14 +8,11 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 市场价配置新 Response VO") @Data -public class ContractViewPriceRespVO { - @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13654") +public class PriceRespVO { + @Schema(description = "主键") private Long id; - @Schema(description = "配置主键", example = "1590") - private Long parameterId; - - @Schema(description = "条款主键", example = "24677") + @Schema(description = "条款主键") private Long formulaId; @Schema(description = "市场价") @@ -42,10 +39,10 @@ public class ContractViewPriceRespVO { @Schema(description = "价格品种元素的明细分类") private String priceGrade; - @Schema(description = "品种分类", example = "1") + @Schema(description = "品种分类") private String gradeType; - @Schema(description = "取价方式;区间价/固定价", example = "2") + @Schema(description = "取价方式;区间价/固定价") private String averageType; @Schema(description = "网价小数位") 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/ContractPriceSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceSaveReqVO.java similarity index 92% rename from zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPriceSaveReqVO.java rename to zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceSaveReqVO.java index 6a0c197..06501e2 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/ContractPriceSaveReqVO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/PriceSaveReqVO.java @@ -7,14 +7,11 @@ import java.time.LocalDateTime; @Schema(description = "管理后台 - 市场价配置新增/修改 Request VO") @Data -public class ContractPriceSaveReqVO { +public class PriceSaveReqVO { @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "13654") private Long id; - @Schema(description = "配置主键", example = "1590") - private Long parameterId; - @Schema(description = "条款主键", example = "24677") private Long formulaId; 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/controller/admin/contract/vo/contract/RelationRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/contract/vo/contract/RelationRespVO.java new file mode 100644 index 0000000..9e87427 --- /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/RelationRespVO.java @@ -0,0 +1,15 @@ +package com.zt.plat.module.contractorder.controller.admin.contract.vo.contract; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Schema(description = "管理后台 - 合同关联 Response VO") +@Data +public class RelationRespVO { + + @Schema(description = "上游主键") + private Long upId; + + @Schema(description = "下游主键") + private Long downId; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PrchOrdDtlController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PrchOrdDtlController.java new file mode 100644 index 0000000..0754aa0 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PrchOrdDtlController.java @@ -0,0 +1,110 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import com.zt.plat.module.contractorder.service.purchaseorder.PrchOrdDtlService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 采购订单明细") +@RestController +@RequestMapping("/base/prch-ord-dtl") +@Validated +public class PrchOrdDtlController implements BusinessControllerMarker { + + + @Resource + private PrchOrdDtlService prchOrdDtlService; + + @PostMapping("/create") + @Operation(summary = "创建采购订单明细") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:create')") + public CommonResult createPrchOrdDtl(@Valid @RequestBody PrchOrdDtlSaveReqVO createReqVO) { + return success(prchOrdDtlService.createPrchOrdDtl(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新采购订单明细") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:update')") + public CommonResult updatePrchOrdDtl(@Valid @RequestBody PrchOrdDtlSaveReqVO updateReqVO) { + prchOrdDtlService.updatePrchOrdDtl(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除采购订单明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:delete')") + public CommonResult deletePrchOrdDtl(@RequestParam("id") Long id) { + prchOrdDtlService.deletePrchOrdDtl(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除采购订单明细") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:delete')") + public CommonResult deletePrchOrdDtlList(@RequestBody BatchDeleteReqVO req) { + prchOrdDtlService.deletePrchOrdDtlListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得采购订单明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:query')") + public CommonResult getPrchOrdDtl(@RequestParam("id") Long id) { + PrchOrdDtlDO prchOrdDtl = prchOrdDtlService.getPrchOrdDtl(id); + return success(BeanUtils.toBean(prchOrdDtl, PrchOrdDtlRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得采购订单明细分页") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:query')") + public CommonResult> getPrchOrdDtlPage(@Valid PrchOrdDtlPageReqVO pageReqVO) { + PageResult pageResult = prchOrdDtlService.getPrchOrdDtlPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, PrchOrdDtlRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出采购订单明细 Excel") + @PreAuthorize("@ss.hasPermission('bse:prch-ord-dtl:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportPrchOrdDtlExcel(@Valid PrchOrdDtlPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = prchOrdDtlService.getPrchOrdDtlPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "采购订单明细.xls", "数据", PrchOrdDtlRespVO.class, + BeanUtils.toBean(list, PrchOrdDtlRespVO.class)); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java new file mode 100644 index 0000000..339592c --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/PurchaseOrderController.java @@ -0,0 +1,207 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder; + +import com.zt.plat.module.contractorder.api.ContractApiImpl; +import com.zt.plat.module.contractorder.api.dto.PurchaseOrderWithDetailsDTO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; +import io.swagger.v3.oas.annotations.media.Schema; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; + +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; + +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + + +@Tag(name = "管理后台 - 采购订单") +@RestController +@RequestMapping("/base/purchase-order") +@Validated +public class PurchaseOrderController implements BusinessControllerMarker { + + + @Resource + private PurchaseOrderService purchaseOrderService; + @Resource + private ContractApiImpl contractApi; + + + @PostMapping("/create") + @Operation(summary = "创建采购订单") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:create')") + public CommonResult createPurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO createReqVO) { + return success(purchaseOrderService.createPurchaseOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新采购订单") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult updatePurchaseOrder(@Valid @RequestBody PurchaseOrderSaveReqVO updateReqVO) { + purchaseOrderService.updatePurchaseOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除采购订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") + public CommonResult deletePurchaseOrder(@RequestParam("id") Long id) { + purchaseOrderService.deletePurchaseOrder(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除采购订单") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:delete')") + public CommonResult deletePurchaseOrderList(@RequestBody BatchDeleteReqVO req) { + purchaseOrderService.deletePurchaseOrderListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得采购订单") + @Parameter(name = "id", description = "id是订单主键,splyBsnTp是订单类型采购或者是消费", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") + public CommonResult getPurchaseOrder(@RequestParam("id") Long id, @RequestParam(value = "splyBsnTp", required = false) String splyBsnTp) { + PurchaseOrderDO purchaseOrder = purchaseOrderService.getPurchaseOrder(id, splyBsnTp); + PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + if (purchaseOrderRespVO == null) { + return success(null); + } + purchaseOrderService.setOrderDetails(purchaseOrderRespVO); + return success(purchaseOrderRespVO); + } + + @GetMapping("/page") + @Operation(summary = "获得采购订单分页") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:query')") + public CommonResult> getPurchaseOrderPage(@Valid PurchaseOrderPageReqVO pageReqVO) { + PageResult pageResult = purchaseOrderService.getPurchaseOrderPage(pageReqVO); + PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, PurchaseOrderRespVO.class); + purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> purchaseOrderService.setOrderDetails(purchaseOrderRespVO)); + return success(purchaseOrderRespVOPageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出采购订单 Excel") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportPurchaseOrderExcel(@Valid PurchaseOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = purchaseOrderService.getPurchaseOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class, + BeanUtils.toBean(list, PurchaseOrderRespVO.class)); + } + + //提交订单审核 + @PostMapping("/submit-order") + @Operation(summary = "提交订单审核") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitOrder(@RequestParam("id") Long id) { + purchaseOrderService.submitOrder(id); + return success(true); + } + + @PostMapping("/submit-order-batch") + @Operation(summary = "批量提交订单审核") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitOrder(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { + System.out.println("ids:" + ids); + ids.forEach(id -> purchaseOrderService.submitOrder(Long.valueOf(id))); + return success(true); + } + + //提交ERP订单 + @PostMapping("/submit-erp061") + @Operation(summary = "推送ERP订单", description = "061')") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitErp061(@RequestBody @Validated @NotEmpty(message = "采购订单id不能为空") List ids) { + return success(purchaseOrderService.submitErp061(ids)); + } + + @PostMapping("/submit-erp062") + @Operation(summary = "推送ERP订单", description = "062当每次调更新接口后都需要调此接口") + @PreAuthorize("@ss.hasPermission('bse:purchase-order:update')") + public CommonResult submitErp062(@RequestParam @Validated @NotNull(message = "采购订单id不能为空") Long id) { + return success(purchaseOrderService.submitErp062(id)); + } + + //通过订单号查询订单信息 + @PostMapping("/get-order-by-order-no") + @Operation(summary = "通过订单号查询订单信息", description = "通过订单号查询订单信息") + public CommonResult> getOrderByOrderNo(@RequestBody @Validated @NotEmpty(message = "采购订单不能为空") List orderNos) { + return success(purchaseOrderService.getOrderByOrderNo(orderNos)); + } + + //根据订单id修改订单状态 + @PutMapping("/update-order-status") + @Operation(summary = "批量修改订单状态", description = "sts取值于字典名称'采购订单状态',字典类型'PRCH_ORD_STS' 可以根据订单号和订单id修改") + public CommonResult updateOrderStatus(@RequestBody @Validated PurchaseOrderStsReqVO req) { + purchaseOrderService.updateOrderStatusByIdOrOrderNo(req); + return success(true); + } + + //查询物料接口 + @GetMapping("/material") + @Operation(summary = "查询物料接口") + public CommonResult getMaterialList(@RequestParam + @Schema(description = "采购订单号") + @Validated + @NotEmpty(message = "采购订单号不能为空") + String orderNo) { + return purchaseOrderService.getMaterial(orderNo); + } + + //关联订单 + @PostMapping("/link-order") + @Operation(summary = "关联订单") + public CommonResult linkOrder(@RequestBody @Validated LinkOrderReqVO req) { + return success(purchaseOrderService.linkOrder(req)); + } + + @PostMapping("/order-pass-reject") + @Operation(summary = "订单审核") + public CommonResult orderPassReject(@RequestBody PurchaseorderReqVO reqVO) { + return success(purchaseOrderService.orderPassReject(reqVO)); + } + + //根据订单id和方式获取上或下游订单 + @PostMapping("/order-by-order-id-and-type") + @Operation(summary = "根据订单id和方式获取上或下游订单") + public CommonResult> getOrderByOrderIdAndType(@RequestBody DownOrUpOrderReqVO reqVO) { + Map map = new HashMap<>(); + map.put("unBindOrder", purchaseOrderService.getOrderByOrderIdAndType(reqVO)); + map.put("bindOrder", purchaseOrderService.getBindOrderByOrder(reqVO)); + return success(map); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderReqVO.java new file mode 100644 index 0000000..afc47e6 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderReqVO.java @@ -0,0 +1,19 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; +import org.springframework.validation.annotation.Validated; + +@Data +@Schema(description = "上下级订单 请求 VO") +@Validated +public class DownOrUpOrderReqVO { + @Schema(description = "订单id") + private Long orderId; + @Schema(description = "订单类型") + @NotEmpty(message = "订单类型不能为空(上游 up ,下游 down)") + private String orderType; + @Schema(description = "订单号") + private String orderNo; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java new file mode 100644 index 0000000..01f8a93 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/DownOrUpOrderRespVO.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "上下游订单 响应 VO") +public class DownOrUpOrderRespVO { + /** + * 订单编号 + */ + @Schema(description = "订单编号") + private String orderNo; + /** + * 订单ID + */ + @Schema(description = "订单ID") + private String orderId; + /** + * 订单类型 + */ + @Schema(description = "订单类型") + private String orderType; + /** + * 合同名称 + */ + @Schema(description = "合同名称") + private String contractName; + /** + * 合同id + */ + @Schema(description = "合同id") + private String contractId; + /** + * 合同号 + */ + @Schema(description = "合同号") + private String contractNumber; + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/LinkOrderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/LinkOrderReqVO.java new file mode 100644 index 0000000..74e6b13 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/LinkOrderReqVO.java @@ -0,0 +1,15 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +@Data +@Schema(description = "关联订单请求参数 VO") +public class LinkOrderReqVO { + @Schema(description = "上游订单号") + private Long upOrderId; + @Schema(description = "下游订单号") + private Long downOrderId; + @Schema(description = "关联订单类型") + private String linkOrderType; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java new file mode 100644 index 0000000..f0b562e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/MaterialRespVO.java @@ -0,0 +1,34 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +@Data +@Schema(description = "管理后台 - 物料响应 VO") +public class MaterialRespVO { + @Schema(description = "订单号") + private String orderNo; + @Schema(description = "订单id") + private String id; + @Schema(description = "物料类型") + private String materialType; + @Schema(description = "物料单位") + private String materialUnit; + @Schema(description = "物料明细") + private List materialDetails; + + @Data + public static class MaterialDetails { + @Schema(description = "物料名称") + private String materialName; + @Schema(description = "物料编码") + private String materialCode; + @Schema(description = "物料类型") + private String materialType; + @Schema(description = "物料单位") + private String materialUnit; + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlDetailsRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlDetailsRespVO.java new file mode 100644 index 0000000..13ac33b --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlDetailsRespVO.java @@ -0,0 +1,246 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +@Data +public class PrchOrdDtlDetailsRespVO { + + + /** + * 主键 + */ + + private Long id; + /** + * 采购订单主键 + */ + + private Long ordId; + /** + * 行项目;推送ERP(必须) + */ + private Long lineNum; + /** + * 物料编码;推送ERP + */ + + private String mtrlNum; + /** + * 物料名称 + */ + + private String mtrlName; + /** + * 收货工厂名称 + */ + + private String rcvFactName; + /** + * 收货工厂编码;推送ERP(必须) + */ + + private String rcvFactNum; + /** + * 收货库位名称 + */ + + private String rcvWrhName; + /** + * 收货库位编码;推送ERP + */ + + private String rcvWrhNum; + /** + * 暂估数量;推送ERP(必须) + */ + + private String qty; + /** + * 计量单位;推送ERP(必须) + */ + + private String unt; + /** + * 含税单价;推送ERP(必须) + */ + + private BigDecimal inTaxUprc; + /** + * 价格单位;推送ERP + */ + + private BigDecimal prcUnt; + /** + * 税码(字典: PRCH_TAX);推送ERP + */ + + private BigDecimal taxNum; + /** + * 是否基于GR的发票校验;推送ERP + */ + + private String isGrInv; + /** + * 是否允许无限制收货;推送ERP + */ + + private String isUnlRcv; + /** + * 批次;推送ERP + */ + + private String bat; + /** + * 项目类别;推送ERP:委托加工L + */ + + private String prjCtgr; + /** + * 科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单 + */ + + private String actsCtgr; + /** + * 物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传 + */ + + private String mtrlCpntNum; + /** + * 物料组描述;推送ERP:联动订单类型,服务订单必传 + */ + + private String mtrlCpntDsp; + /** + * 短文本 + */ + + private String shrtTxt; + /** + * 退货标识X标识退货;推送ERP + */ + + private String isRlbkCgo; + /** + * 是否免费收货标识X;推送ERP + */ + + private String isFreeRcv; + /** + * 外部行项目号;推送ERP + */ + + private Long outLineNum; + /** + * 备注信息-需求单位;推送ERP + */ + + private String rmkUnt; + /** + * 备注信息-物料详细;推送ERP + */ + + private String rmkMtrl; + /** + * 交货起始日期;推送ERP + */ + + private LocalDateTime bgnDt; + /** + * 交货截止日期;推送ERP + */ + + private LocalDateTime ddlDt; + /** + * 已收货量 + */ + + private BigDecimal lstQty; + /** + * 已移库量库;存针对该订单产生的移库量 + */ + + private BigDecimal trfQty; + /** + * 小协议号 + */ + + private String agrNum; + /** + * 移库工厂名称 + */ + + private String trfFactName; + /** + * 移库工厂编码 + */ + + private String trfFactNum; + /** + * 移库库位名称 + */ + + private String trfWrhName; + /** + * 移库库位编码 + */ + + private String trfWrhNum; + /** + * 备注 + */ + + private String rmk; + /** + * 原料湿重;推送ERP + */ + + private BigDecimal origWet; + /** + * 销售物料号;推送ERP:科目分配类别为S时必填 + */ + + private String saleMtrlNum; + /** + * 统计型内部订单;推送ERP + */ + + private String inOrd; + /** + * 采购类别;推送ERP:0-生产性物资类1-项目投资类 + */ + + private String prchCtgr; + /** + * 是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用 + */ + + private String isEnb; + /** + * 科目分配详情;科目分配类别为K或P时使用(JSON) + */ + + private String actsCtgrDtl; + /** + * 委托加工详情;委托加工订单使用(JSON) + */ + + private String enttDtl; + /** + * 金属元素缩写 + */ + + private String elemAbbr; + /** + * 金属元素名称 + */ + + private String elemName; + /** + * 金属元素编码 + */ + + private String elemCdg; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlPageReqVO.java new file mode 100644 index 0000000..eef7567 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlPageReqVO.java @@ -0,0 +1,161 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 采购订单明细分页 Request VO") +@Data +public class PrchOrdDtlPageReqVO extends PageParam { + + @Schema(description = "采购订单主键", example = "29258") + private Long ordId; + + @Schema(description = "行项目;推送ERP(必须)") + private Long lineNum; + + @Schema(description = "物料编码;推送ERP") + private String mtrlNum; + + @Schema(description = "物料名称", example = "赵六") + private String mtrlName; + + @Schema(description = "收货工厂名称", example = "李四") + private String rcvFactName; + + @Schema(description = "收货工厂编码;推送ERP(必须)") + private String rcvFactNum; + + @Schema(description = "收货库位名称", example = "王五") + private String rcvWrhName; + + @Schema(description = "收货库位编码;推送ERP") + private String rcvWrhNum; + + @Schema(description = "暂估数量;推送ERP(必须)") + private String qty; + + @Schema(description = "计量单位;推送ERP(必须)") + private String unt; + + @Schema(description = "含税单价;推送ERP(必须)") + private BigDecimal inTaxUprc; + + @Schema(description = "价格单位;推送ERP") + private BigDecimal prcUnt; + + @Schema(description = "税码(字典: PRCH_TAX);推送ERP") + private BigDecimal taxNum; + + @Schema(description = "是否基于GR的发票校验;推送ERP") + private String isGrInv; + + @Schema(description = "是否允许无限制收货;推送ERP") + private String isUnlRcv; + + @Schema(description = "批次;推送ERP") + private String bat; + + @Schema(description = "项目类别;推送ERP:委托加工L") + private String prjCtgr; + + @Schema(description = "科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单") + private String actsCtgr; + + @Schema(description = "物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntNum; + + @Schema(description = "物料组描述;推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntDsp; + + @Schema(description = "短文本") + private String shrtTxt; + + @Schema(description = "退货标识X标识退货;推送ERP") + private String isRlbkCgo; + + @Schema(description = "是否免费收货标识X;推送ERP") + private String isFreeRcv; + + @Schema(description = "外部行项目号;推送ERP") + private Long outLineNum; + + @Schema(description = "备注信息-需求单位;推送ERP") + private String rmkUnt; + + @Schema(description = "备注信息-物料详细;推送ERP") + private String rmkMtrl; + + @Schema(description = "交货起始日期;推送ERP") + private LocalDateTime bgnDt; + + @Schema(description = "交货截止日期;推送ERP") + private LocalDateTime ddlDt; + + @Schema(description = "已收货量") + private BigDecimal lstQty; + + @Schema(description = "已移库量库;存针对该订单产生的移库量") + private BigDecimal trfQty; + + @Schema(description = "小协议号") + private String agrNum; + + @Schema(description = "移库工厂名称", example = "张三") + private String trfFactName; + + @Schema(description = "移库工厂编码") + private String trfFactNum; + + @Schema(description = "移库库位名称", example = "李四") + private String trfWrhName; + + @Schema(description = "移库库位编码") + private String trfWrhNum; + + @Schema(description = "备注") + private String rmk; + + @Schema(description = "原料湿重;推送ERP") + private BigDecimal origWet; + + @Schema(description = "销售物料号;推送ERP:科目分配类别为S时必填") + private String saleMtrlNum; + + @Schema(description = "统计型内部订单;推送ERP") + private String inOrd; + + @Schema(description = "采购类别;推送ERP:0-生产性物资类1-项目投资类") + private String prchCtgr; + + @Schema(description = "是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用") + private String isEnb; + + @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)") + private String actsCtgrDtl; + + @Schema(description = "委托加工详情;委托加工订单使用(JSON)") + private String enttDtl; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "金属元素缩写") + private String elemAbbr; + + @Schema(description = "金属元素名称", example = "李四") + private String elemName; + + @Schema(description = "金属元素编码") + private String elemCdg; + + @Schema(description = "订单类型") + private String splyBsnTp; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlRespVO.java new file mode 100644 index 0000000..7dc1aa0 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlRespVO.java @@ -0,0 +1,208 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 采购订单明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PrchOrdDtlRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "采购订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29258") + @ExcelProperty("采购订单主键") + private Long ordId; + + @Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("行项目;推送ERP(必须)") + private Long lineNum; + + @Schema(description = "物料编码;推送ERP") + @ExcelProperty("物料编码;推送ERP") + private String mtrlNum; + + @Schema(description = "物料名称", example = "赵六") + @ExcelProperty("物料名称") + private String mtrlName; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @ExcelProperty("收货工厂名称") + private String rcvFactName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货工厂编码;推送ERP(必须)") + private String rcvFactNum; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("收货库位名称") + private String rcvWrhName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货库位编码;推送ERP") + private String rcvWrhNum; + + @Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("暂估数量;推送ERP(必须)") + private String qty; + + @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位;推送ERP(必须)") + private String unt; + + @Schema(description = "含税单价;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("含税单价;推送ERP(必须)") + private BigDecimal inTaxUprc; + + @Schema(description = "价格单位;推送ERP") + @ExcelProperty("价格单位;推送ERP") + private BigDecimal prcUnt; + + @Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("税码(字典: PRCH_TAX);推送ERP") + private String taxNum; + + @Schema(description = "是否基于GR的发票校验;推送ERP") + @ExcelProperty("是否基于GR的发票校验;推送ERP") + private String isGrInv; + + @Schema(description = "是否允许无限制收货;推送ERP") + @ExcelProperty("是否允许无限制收货;推送ERP") + private String isUnlRcv; + + @Schema(description = "批次;推送ERP") + @ExcelProperty("批次;推送ERP") + private String bat; + + @Schema(description = "项目类别;推送ERP:委托加工L") + @ExcelProperty("项目类别;推送ERP:委托加工L") + private String prjCtgr; + + @Schema(description = "科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单") + @ExcelProperty("科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单") + private String actsCtgr; + + @Schema(description = "物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传") + @ExcelProperty("物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntNum; + + @Schema(description = "物料组描述;推送ERP:联动订单类型,服务订单必传") + @ExcelProperty("物料组描述;推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntDsp; + + @Schema(description = "短文本") + @ExcelProperty("短文本") + private String shrtTxt; + + @Schema(description = "退货标识X标识退货;推送ERP") + @ExcelProperty("退货标识X标识退货;推送ERP") + private String isRlbkCgo; + + @Schema(description = "是否免费收货标识X;推送ERP") + @ExcelProperty("是否免费收货标识X;推送ERP") + private String isFreeRcv; + + @Schema(description = "外部行项目号;推送ERP") + @ExcelProperty("外部行项目号;推送ERP") + private Long outLineNum; + + @Schema(description = "备注信息-需求单位;推送ERP") + @ExcelProperty("备注信息-需求单位;推送ERP") + private String rmkUnt; + + @Schema(description = "备注信息-物料详细;推送ERP") + @ExcelProperty("备注信息-物料详细;推送ERP") + private String rmkMtrl; + + @Schema(description = "交货起始日期;推送ERP") + @ExcelProperty("交货起始日期;推送ERP") + private LocalDateTime bgnDt; + + @Schema(description = "交货截止日期;推送ERP") + @ExcelProperty("交货截止日期;推送ERP") + private LocalDateTime ddlDt; + + @Schema(description = "已收货量") + @ExcelProperty("已收货量") + private BigDecimal lstQty; + + @Schema(description = "已移库量库;存针对该订单产生的移库量") + @ExcelProperty("已移库量库;存针对该订单产生的移库量") + private BigDecimal trfQty; + + @Schema(description = "小协议号") + @ExcelProperty("小协议号") + private String agrNum; + + @Schema(description = "移库工厂名称", example = "张三") + @ExcelProperty("移库工厂名称") + private String trfFactName; + + @Schema(description = "移库工厂编码") + @ExcelProperty("移库工厂编码") + private String trfFactNum; + + @Schema(description = "移库库位名称", example = "李四") + @ExcelProperty("移库库位名称") + private String trfWrhName; + + @Schema(description = "移库库位编码") + @ExcelProperty("移库库位编码") + private String trfWrhNum; + + @Schema(description = "备注") + @ExcelProperty("备注") + private String rmk; + + @Schema(description = "原料湿重;推送ERP") + @ExcelProperty("原料湿重;推送ERP") + private BigDecimal origWet; + + @Schema(description = "销售物料号;推送ERP:科目分配类别为S时必填") + @ExcelProperty("销售物料号;推送ERP:科目分配类别为S时必填") + private String saleMtrlNum; + + @Schema(description = "统计型内部订单;推送ERP") + @ExcelProperty("统计型内部订单;推送ERP") + private String inOrd; + + @Schema(description = "采购类别;推送ERP:0-生产性物资类1-项目投资类") + @ExcelProperty("采购类别;推送ERP:0-生产性物资类1-项目投资类") + private String prchCtgr; + + @Schema(description = "是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用") + @ExcelProperty("是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用") + private String isEnb; + + @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)") + @ExcelProperty("科目分配详情;科目分配类别为K或P时使用(JSON)") + private String actsCtgrDtl; + + @Schema(description = "委托加工详情;委托加工订单使用(JSON)") + @ExcelProperty("委托加工详情;委托加工订单使用(JSON)") + private String enttDtl; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "金属元素缩写") + @ExcelProperty("金属元素缩写") + private String elemAbbr; + + @Schema(description = "金属元素名称", example = "李四") + @ExcelProperty("金属元素名称") + private String elemName; + + @Schema(description = "金属元素编码") + @ExcelProperty("金属元素编码") + private String elemCdg; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java new file mode 100644 index 0000000..dc61f2d --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PrchOrdDtlSaveReqVO.java @@ -0,0 +1,169 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.alibaba.fastjson2.JSONObject; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 采购订单明细新增/修改 Request VO") +@Data +public class PrchOrdDtlSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419") + private Long id; + + @Schema(description = "采购订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "29258") + @NotNull(message = "采购订单主键不能为空") + private Long ordId; + + @Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "行项目;推送ERP(必须)不能为空") + private Long lineNum; + + @Schema(description = "物料编码;推送ERP") + private String mtrlNum; + + @Schema(description = "物料名称", example = "赵六") + private String mtrlName; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "李四") + @NotEmpty(message = "收货工厂名称不能为空") + private String rcvFactName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货工厂编码;推送ERP(必须)不能为空") + private String rcvFactNum; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "收货库位名称不能为空") + private String rcvWrhName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货库位编码;推送ERP不能为空") + private String rcvWrhNum; + + @Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "暂估数量;推送ERP(必须)不能为空") + private String qty; + + @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位;推送ERP(必须)不能为空") + private String unt; + + @Schema(description = "含税单价;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "含税单价;推送ERP(必须)不能为空") + private BigDecimal inTaxUprc; + + @Schema(description = "价格单位;推送ERP") + private BigDecimal prcUnt; + + @Schema(description = "税码(字典: PRCH_TAX);推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "税码(字典: PRCH_TAX);推送ERP不能为空") + private String taxNum; + + @Schema(description = "是否基于GR的发票校验;推送ERP") + private String isGrInv; + + @Schema(description = "是否允许无限制收货;推送ERP") + private String isUnlRcv; + + @Schema(description = "批次;推送ERP") + private String bat; + + @Schema(description = "项目类别;推送ERP:委托加工L") + private String prjCtgr; + + @Schema(description = "科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单") + private String actsCtgr; + + @Schema(description = "物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntNum; + + @Schema(description = "物料组描述;推送ERP:联动订单类型,服务订单必传") + private String mtrlCpntDsp; + + @Schema(description = "短文本") + private String shrtTxt; + + @Schema(description = "退货标识X标识退货;推送ERP") + private String isRlbkCgo; + + @Schema(description = "是否免费收货标识X;推送ERP") + private String isFreeRcv; + + @Schema(description = "外部行项目号;推送ERP") + private Long outLineNum; + + @Schema(description = "备注信息-需求单位;推送ERP") + private String rmkUnt; + + @Schema(description = "备注信息-物料详细;推送ERP") + private String rmkMtrl; + + @Schema(description = "交货起始日期;推送ERP") + private LocalDateTime bgnDt; + + @Schema(description = "交货截止日期;推送ERP") + private LocalDateTime ddlDt; + + @Schema(description = "已收货量") + private BigDecimal lstQty; + + @Schema(description = "已移库量库;存针对该订单产生的移库量") + private BigDecimal trfQty; + + @Schema(description = "小协议号") + private String agrNum; + + @Schema(description = "移库工厂名称", example = "张三") + private String trfFactName; + + @Schema(description = "移库工厂编码") + private String trfFactNum; + + @Schema(description = "移库库位名称", example = "李四") + private String trfWrhName; + + @Schema(description = "移库库位编码") + private String trfWrhNum; + + @Schema(description = "备注") + private String rmk; + + @Schema(description = "原料湿重;推送ERP") + private BigDecimal origWet; + + @Schema(description = "销售物料号;推送ERP:科目分配类别为S时必填") + private String saleMtrlNum; + + @Schema(description = "统计型内部订单;推送ERP") + private String inOrd; + + @Schema(description = "采购类别;推送ERP:0-生产性物资类1-项目投资类") + private String prchCtgr; + + @Schema(description = "是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用") + private String isEnb; + + @Schema(description = "科目分配详情;科目分配类别为K或P时使用(JSON)") + private JSONObject actsCtgrDtl; + + @Schema(description = "委托加工详情;委托加工订单使用(JSON)") + private String enttDtl; + + @Schema(description = "金属元素缩写") + private String elemAbbr; + + @Schema(description = "金属元素名称", example = "李四") + private String elemName; + + @Schema(description = "金属元素编码") + private String elemCdg; + @Schema(description = "税点") + private String taxRte; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderDetailsRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderDetailsRespVO.java new file mode 100644 index 0000000..df04503 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderDetailsRespVO.java @@ -0,0 +1,195 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.zt.plat.module.contractorder.api.dto.PrchOrdDtlDTO; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class PurchaseOrderDetailsRespVO { + /** + * 主键 + */ + private Long id; + /** + * ERP订单号 + */ + private String orderSAPNumber; + /** + * 订单号 + */ + private String systemOrderNumber; + /** + * 公司名称 + */ + private String cpName; + /** + * 公司编码;推送ERP(必须) + */ + private String companyNumber; + /** + * 客商编码;推送ERP(必须) + */ + private String supplierNumber; + /** + * 客商名称 + */ + private String supplierName; + /** + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ + private String type; + /** + * 凭证日期;推送ERP(必须) + */ + private LocalDateTime voucherDate; + /** + * 采购组织编码;推送ERP(必须) + */ + private String purchaseOrganizationCustomsDeclaration; + /** + * 收货工厂名称 + */ + private String receiveFactoryName; + /** + * 收货工厂编码;推送ERP(必须) + */ + private String receiveFactoryNumber; + /** + * 收货库位名称 + */ + private String receiveWarehouseName; + /** + * 收货库位编码;推送ERP + */ + private String receiveWarehouseNumber; + /** + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ + private String purchaseGroup; + /** + * 货币码(字典:CUR);推送ERP(必须) + */ + private String currencyNumber; + /** + * 汇率;推送ERP + */ + private BigDecimal exchangeRate; + /** + * 合同纸质合同号;推送ERP(必须) + */ + private String paperContractNumber; + /** + * 小协议号;推送ERP + */ + private String agreementNumber; + /** + * 备注;推送ERP + */ + private String remark; + /** + * 代理方编码;推送ERP + */ + private String agentNumber; + /** + * 代理方名称 + */ + private String agentName; + /** + * 订单编码 + */ + private String orderNumber; + /** + * 系统合同编号 + */ + private String contractNumber; + /** + * 物料编码 + */ + private String materialNumber; + /** + * 物料名称 + */ + private String materialName; + /** + * 合同名称 + */ + private String contractName; + /** + * 小户头号 + */ + private String tenantNumber; + /** + * ERP公司编号 + */ + private String erpPurchaseCompanyNumber; + /** + * ERP公司名称 + */ + private String erpPurchaseCompanyName; + /** + * ERP客商公司编码 + */ + private String erpSalesCompanyNumber; + /** + * ERP客商公司名称 + */ + private String erpSalesCompanyName; + /** + * 采购组织名称 + */ + private String purchaseOrganizationName; + /** + * ERP状态(字典: ERP_REQ_STS) + */ + private String erpStatus; + /** + * 请求ERP失败原因 + */ + private String cause; + /** + * 订单状态(字典:PRCH_ORD_STS) + */ + + private String status; + /** + * 采购组名称 + */ + private String purchaseGroupName; + + /** + * 流程实例编号 + */ + + private String processInstanceId; + + /** + * 流程当前任务节点id + */ + + private String taskId; + + /** + * 审批意见 + */ + + private String reviewOpinion; + + /** + * 是否需要审批 + */ + private int isPush; + + /** + * 物料类型 + */ + private String mtrlTp; + + /** + * 采购订单行项目 + */ + private List orderDetails; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java new file mode 100644 index 0000000..264bec3 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderPageReqVO.java @@ -0,0 +1,137 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 采购订单分页 Request VO") +@Data +public class PurchaseOrderPageReqVO extends PageParam { + + @Schema(description = "ERP订单号") + private String orderSAPNumber; + + @Schema(description = "订单号") + private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)") + private String supplierNumber; + + @Schema(description = "客商名称", example = "芋艿") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", example = "2") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", example = "芋艿") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", example = "王五") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP") + private String receiveWarehouseNumber; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)") + private String purchaseGroup; + + @Schema(description = "计量单位") + private String unt; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + private String agentName; + + @Schema(description = "订单编码") + private String orderNumber; + + @Schema(description = "系统合同编号") + private String contractNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + private String contractName; + + @Schema(description = "小户头号") + private String tenantNumber; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "ERP公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", example = "王五") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", example = "芋艿") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + private String status; + + @Schema(description = "采购组名称", example = "张三") + private String purchaseGroupName; + + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + private String mtrlTp; + + @Schema(description = "订单分类") + private String splyBsnTp; + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java new file mode 100644 index 0000000..efe6331 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderRespVO.java @@ -0,0 +1,199 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 采购订单 Response VO") +@Data +@ExcelIgnoreUnannotated +public class PurchaseOrderRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP订单号") + @ExcelProperty("ERP订单号") + private String orderSAPNumber; + + @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单号") + private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;推送ERP(必须)") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("客商编码;推送ERP(必须)") + private String supplierNumber; + + @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("客商名称") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("订单类型(字典:PRCH_ORD_TP);推送ERP(必须)") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("凭证日期;推送ERP(必须)") + private LocalDateTime voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组织编码;推送ERP(必须)") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("收货工厂名称") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货工厂编码;推送ERP(必须)") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("收货库位名称") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货库位编码;推送ERP") + private String receiveWarehouseNumber; + + @Schema(description = "计量单位") + private String unt; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)") + private String purchaseGroup; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("货币码(字典:CUR);推送ERP(必须)") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + @ExcelProperty("汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同纸质合同号;推送ERP(必须)") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + @ExcelProperty("小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + @ExcelProperty("备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + @ExcelProperty("代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + @ExcelProperty("代理方名称") + private String agentName; + + @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单编码") + private String orderNumber; + + @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("系统合同编号") + private String contractNumber; + + @Schema(description = "物料编码") + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + @ExcelProperty("合同名称") + private String contractName; + + @Schema(description = "小户头号") + @ExcelProperty("小户头号") + private String tenantNumber; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("ERP公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("ERP公司名称") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("ERP客商公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("ERP客商公司名称") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + @ExcelProperty("采购组织名称") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + @ExcelProperty("ERP状态(字典: ERP_REQ_STS)") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + @ExcelProperty("请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + @ExcelProperty("订单状态(字典:PRCH_ORD_STS)") + private String status; + + @Schema(description = "采购组名称", example = "张三") + @ExcelProperty("采购组名称") + private String purchaseGroupName; + + @Schema(description = "订单明细") + @ExcelProperty("订单明细") + private List prchOrdDtlRespVOS; + + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + @ExcelProperty("物料类型(字典:MTRL_TP)") + private String mtrlTp; + + @Schema(description = "订单分类", example = "2") + @ExcelProperty("订单分类") + private String splyBsnTp; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("公司名称") + private String cpName; + + @Schema(description = "是否提交审核,value为0或1") + @ExcelProperty("是否提交审核") + private int isPush; + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "流程当前任务节点id") + @ExcelProperty("流程当前任务节点id") + private String taskId; + + @Schema(description = " 审批意见") + @ExcelProperty(" 审批意见") + private String reviewOpinion; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java new file mode 100644 index 0000000..76ae5c9 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderSaveReqVO.java @@ -0,0 +1,181 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 采购订单新增/修改 Request VO") +@Data +public class PurchaseOrderSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074") + private Long id; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "公司名称不能为空") + private String cpName; + + @Schema(description = "ERP订单号") + private String orderSAPNumber; + +// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单号不能为空") +// private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;推送ERP(必须)不能为空") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "客商编码;推送ERP(必须)不能为空") + private String supplierNumber; + + @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "客商名称不能为空") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)不能为空") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "凭证日期;推送ERP(必须)不能为空") + private LocalDateTime voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织编码;推送ERP(必须)不能为空") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "收货工厂名称不能为空") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货工厂编码;推送ERP(必须)不能为空") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "收货库位名称不能为空") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货库位编码;推送ERP不能为空") + private String receiveWarehouseNumber; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)不能为空") + private String purchaseGroup; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "货币码(字典:CUR);推送ERP(必须)不能为空") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同纸质合同号;推送ERP(必须)不能为空") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + private String agentName; +// +// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单编码不能为空") +// private String orderNumber; + + + @Schema(description = "计量单位") + @NotEmpty(message = "计量单位(unt)不能为空") + private String unt; + + @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "系统合同编号不能为空") + private String contractNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + private String contractName; + + @Schema(description = "小户头号") + private String tenantNumber; + + @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "ERP公司编号不能为空") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "ERP公司名称不能为空") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "ERP客商公司编码不能为空") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "ERP客商公司名称不能为空") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + private String status; + + @Schema(description = "采购组名称", example = "张三") + private String purchaseGroupName; + + @Schema(description = "订单明细") + @ExcelProperty("订单明细") + private List prchOrdDtlSaveReqVOS; + + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "流程当前任务节点id") + @ExcelProperty("流程当前任务节点id") + private String taskId; + + @Schema(description = " 审批意见") + @ExcelProperty(" 审批意见") + private String reviewOpinion; + + @Schema(description = "是否提交审核,value为0或1") + @ExcelProperty("是否提交审核") + private int isPush; + @Schema(description = "物料类别(字典:MTRL_TP)", example = "1") + @ExcelProperty("物料类别") + private String mtrlTp; + + @Schema(description = "订单分类", example = "2") + @ExcelProperty("订单分类") + private String splyBsnTp; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java new file mode 100644 index 0000000..84c5605 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderStsReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + + +import java.util.List; + + +@Schema(description = "管理后台 - 采购订单状态 Request VO") +@Data +@ExcelIgnoreUnannotated +public class PurchaseOrderStsReqVO { + @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419") + private List ids; + @Schema(description = "采购订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "采购订单状态不能为空") + private String sts; + @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private List orderNos; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderWithDetailsVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderWithDetailsVO.java new file mode 100644 index 0000000..e015160 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseOrderWithDetailsVO.java @@ -0,0 +1,28 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import lombok.Data; +import java.util.List; + +/** + * 采购订单及明细查询结果 VO + */ +@Data +public class PurchaseOrderWithDetailsVO { + + /** + * 采购订单信息 + */ + private PurchaseOrderDO purchaseOrder; + + /** + * 订单明细列表 + */ + private List orderDetails; + + /** + * 订单号(用于分组) + */ + private String systemOrderNumber; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java new file mode 100644 index 0000000..a8778e7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/purchaseorder/vo/PurchaseorderReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 订单审核请求对象 Request VO") +@Data +public class PurchaseorderReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + private String reviewOpinion; + + @Schema(description = "状态:待推送 WAIT_PUSH,已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核状态不能为空") + private String status; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java new file mode 100644 index 0000000..02cff48 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderController.java @@ -0,0 +1,124 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder; + +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; +import com.zt.plat.framework.common.pojo.PageParam; +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.ContractApiImpl; +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; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import com.zt.plat.module.contractorder.service.purchaseorder.PurchaseOrderService; +import com.zt.plat.module.contractorder.service.salesorder.SalesOrderService; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.annotation.Resource; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +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 static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.EXPORT; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + + +@Tag(name = "管理后台 - 销售订单") +@RestController +@RequestMapping("/base/sales-order") +@Validated +public class SalesOrderController implements BusinessControllerMarker { + + + @Resource + private SalesOrderService salesOrderService; + @Resource + private ContractApiImpl contractApi; + + + @PostMapping("/create") + @Operation(summary = "创建采购订单") + @PreAuthorize("@ss.hasPermission('base:sales-order:create')") + public CommonResult createSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO createReqVO) { + return success(salesOrderService.createSalesOrder(createReqVO)); + } + + @PutMapping("/update") + @Operation(summary = "更新采购订单") + @PreAuthorize("@ss.hasPermission('base:sales-order:update')") + public CommonResult updateSalesOrder(@Valid @RequestBody SalesOrderSaveReqVO updateReqVO) { + salesOrderService.updateSalesOrder(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除采购订单") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:sales-order:delete')") + public CommonResult deleteSalesOrder(@RequestParam("id") Long id) { + salesOrderService.deleteSalesOrder(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除采购订单") + @PreAuthorize("@ss.hasPermission('base:sales-order:delete')") + public CommonResult deleteSalesOrderList(@RequestBody BatchDeleteReqVO req) { + salesOrderService.deleteSalesOrderListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得采购订单") + @Parameter(name = "id", description = "id是订单主键,splyBsnTp是订单类型采购或者是消费", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:sales-order:query')") + public CommonResult 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){ + return success(null); + } + // + return success(salesOrderRespVO); + } + + @GetMapping("/page") + @Operation(summary = "获得采购订单分页") + @PreAuthorize("@ss.hasPermission('base:sales-order:query')") + public CommonResult> getSalesOrderPage(@Valid SalesOrderPageReqVO pageReqVO) { + PageResult pageResult = salesOrderService.getSalesOrderPage(pageReqVO); + PageResult purchaseOrderRespVOPageResult = BeanUtils.toBean(pageResult, SalesOrderRespVO.class); + // purchaseOrderRespVOPageResult.getList().forEach(purchaseOrderRespVO -> salesOrderService.setOrderDetails(purchaseOrderRespVO)); + return success(purchaseOrderRespVOPageResult); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出采购订单 Excel") + @PreAuthorize("@ss.hasPermission('base:sales-order:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSalesOrderExcel(@Valid SalesOrderPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = salesOrderService.getSalesOrderPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "采购订单.xls", "数据", PurchaseOrderRespVO.class, + BeanUtils.toBean(list, PurchaseOrderRespVO.class)); + } + + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderDetailController.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderDetailController.java new file mode 100644 index 0000000..823305c --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/SalesOrderDetailController.java @@ -0,0 +1,118 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder; + +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO; +import com.zt.plat.module.contractorder.service.salesorder.SalesOrderDetailService; +import org.springframework.web.bind.annotation.*; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.security.access.prepost.PreAuthorize; +import com.zt.plat.framework.business.interceptor.BusinessControllerMarker; + +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.Operation; + +import jakarta.validation.constraints.*; +import jakarta.validation.*; +import jakarta.servlet.http.*; +import java.util.*; +import java.io.IOException; + +import com.zt.plat.framework.common.pojo.vo.BatchDeleteReqVO; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import static com.zt.plat.framework.common.pojo.CommonResult.success; + +import com.zt.plat.framework.excel.core.util.ExcelUtils; + +import com.zt.plat.framework.apilog.core.annotation.ApiAccessLog; +import static com.zt.plat.framework.apilog.core.enums.OperateTypeEnum.*; + + + +@Tag(name = "管理后台 - 销售订单明细") +@RestController +@RequestMapping("/base/sales-order-detail") +@Validated +public class SalesOrderDetailController implements BusinessControllerMarker { + + + @Resource + private SalesOrderDetailService salesOrderDetailService; + + @PostMapping("/create") + @Operation(summary = "创建销售订单明细") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:create')") + public CommonResult createSalesOrderDetail(@Valid @RequestBody SalesOrderDetailSaveReqVO createReqVO) { + return success(salesOrderDetailService.createSalesOrderDetail(createReqVO)); + } + + @PostMapping("/create-batch") + @Operation(summary = "批量创建销售订单明细") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:create')") + public CommonResult> createSalesOrderDetail(@Valid @NotEmpty(message = "需要保存的数据为空") @RequestBody List createReqVOS) { + return success(salesOrderDetailService.createSalesOrderDetail(createReqVOS)); + } + + @PutMapping("/update") + @Operation(summary = "更新销售订单明细") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:update')") + public CommonResult updateSalesOrderDetail(@Valid @RequestBody SalesOrderDetailSaveReqVO updateReqVO) { + salesOrderDetailService.updateSalesOrderDetail(updateReqVO); + return success(true); + } + + @DeleteMapping("/delete") + @Operation(summary = "删除销售订单明细") + @Parameter(name = "id", description = "编号", required = true) + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:delete')") + public CommonResult deleteSalesOrderDetail(@RequestParam("id") Long id) { + salesOrderDetailService.deleteSalesOrderDetail(id); + return success(true); + } + + @DeleteMapping("/delete-list") + @Parameter(name = "ids", description = "编号", required = true) + @Operation(summary = "批量删除销售订单明细") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:delete')") + public CommonResult deleteSalesOrderDetailList(@RequestBody BatchDeleteReqVO req) { + salesOrderDetailService.deleteSalesOrderDetailListByIds(req.getIds()); + return success(true); + } + + @GetMapping("/get") + @Operation(summary = "获得销售订单明细") + @Parameter(name = "id", description = "编号", required = true, example = "1024") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:query')") + public CommonResult getSalesOrderDetail(@RequestParam("id") Long id) { + SalesOrderDetailDO salesOrderDetail = salesOrderDetailService.getSalesOrderDetail(id); + return success(BeanUtils.toBean(salesOrderDetail, SalesOrderDetailRespVO.class)); + } + + @GetMapping("/page") + @Operation(summary = "获得销售订单明细分页") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:query')") + public CommonResult> getSalesOrderDetailPage(@Valid SalesOrderDetailPageReqVO pageReqVO) { + PageResult pageResult = salesOrderDetailService.getSalesOrderDetailPage(pageReqVO); + return success(BeanUtils.toBean(pageResult, SalesOrderDetailRespVO.class)); + } + + @GetMapping("/export-excel") + @Operation(summary = "导出销售订单明细 Excel") + @PreAuthorize("@ss.hasPermission('base:sales-order-detail:export')") + @ApiAccessLog(operateType = EXPORT) + public void exportSalesOrderDetailExcel(@Valid SalesOrderDetailPageReqVO pageReqVO, + HttpServletResponse response) throws IOException { + pageReqVO.setPageSize(PageParam.PAGE_SIZE_NONE); + List list = salesOrderDetailService.getSalesOrderDetailPage(pageReqVO).getList(); + // 导出 Excel + ExcelUtils.write(response, "销售订单明细.xls", "数据", SalesOrderDetailRespVO.class, + BeanUtils.toBean(list, SalesOrderDetailRespVO.class)); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SaleOrderDetailsRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SaleOrderDetailsRespVO.java new file mode 100644 index 0000000..573fca7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SaleOrderDetailsRespVO.java @@ -0,0 +1,194 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class SaleOrderDetailsRespVO { + /** + * 主键 + */ + private Long id; + /** + * ERP订单号 + */ + private String orderSAPNumber; + /** + * 订单号 + */ + private String systemOrderNumber; + /** + * 公司名称 + */ + private String cpName; + /** + * 公司编码;推送ERP(必须) + */ + private String companyNumber; + /** + * 客商编码;推送ERP(必须) + */ + private String supplierNumber; + /** + * 客商名称 + */ + private String supplierName; + /** + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ + private String type; + /** + * 凭证日期;推送ERP(必须) + */ + private LocalDateTime voucherDate; + /** + * 采购组织编码;推送ERP(必须) + */ + private String purchaseOrganizationCustomsDeclaration; + /** + * 收货工厂名称 + */ + private String receiveFactoryName; + /** + * 收货工厂编码;推送ERP(必须) + */ + private String receiveFactoryNumber; + /** + * 收货库位名称 + */ + private String receiveWarehouseName; + /** + * 收货库位编码;推送ERP + */ + private String receiveWarehouseNumber; + /** + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ + private String purchaseGroup; + /** + * 货币码(字典:CUR);推送ERP(必须) + */ + private String currencyNumber; + /** + * 汇率;推送ERP + */ + private BigDecimal exchangeRate; + /** + * 合同纸质合同号;推送ERP(必须) + */ + private String paperContractNumber; + /** + * 小协议号;推送ERP + */ + private String agreementNumber; + /** + * 备注;推送ERP + */ + private String remark; + /** + * 代理方编码;推送ERP + */ + private String agentNumber; + /** + * 代理方名称 + */ + private String agentName; + /** + * 订单编码 + */ + private String orderNumber; + /** + * 系统合同编号 + */ + private String contractNumber; + /** + * 物料编码 + */ + private String materialNumber; + /** + * 物料名称 + */ + private String materialName; + /** + * 合同名称 + */ + private String contractName; + /** + * 小户头号 + */ + private String tenantNumber; + /** + * ERP公司编号 + */ + private String erpPurchaseCompanyNumber; + /** + * ERP公司名称 + */ + private String erpPurchaseCompanyName; + /** + * ERP客商公司编码 + */ + private String erpSalesCompanyNumber; + /** + * ERP客商公司名称 + */ + private String erpSalesCompanyName; + /** + * 采购组织名称 + */ + private String purchaseOrganizationName; + /** + * ERP状态(字典: ERP_REQ_STS) + */ + private String erpStatus; + /** + * 请求ERP失败原因 + */ + private String cause; + /** + * 订单状态(字典:PRCH_ORD_STS) + */ + + private String status; + /** + * 采购组名称 + */ + private String purchaseGroupName; + + /** + * 流程实例编号 + */ + + private String processInstanceId; + + /** + * 流程当前任务节点id + */ + + private String taskId; + + /** + * 审批意见 + */ + + private String reviewOpinion; + + /** + * 是否需要审批 + */ + private int isPush; + + /** + * 物料类型 + */ + private String mtrlTp; + + /** + * 消费订单行项目 + */ + private List orderDetails; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailPageReqVO.java new file mode 100644 index 0000000..d6bea5d --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailPageReqVO.java @@ -0,0 +1,90 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import lombok.*; +import java.util.*; +import io.swagger.v3.oas.annotations.media.Schema; +import com.zt.plat.framework.common.pojo.PageParam; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; + +import static com.zt.plat.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; + +@Schema(description = "管理后台 - 销售订单明细分页 Request VO") +@Data +public class SalesOrderDetailPageReqVO extends PageParam { + + @Schema(description = "订单主键", example = "9072") + private Long orderId; + + @Schema(description = "行项目;推送ERP(必须)") + private Long lineNumber; + + @Schema(description = "物料名称", example = "芋艿") + private String materialName; + + @Schema(description = "物料编码;推送ERP(必须)") + private String materialNumber; + + @Schema(description = "工厂名称", example = "芋艿") + private String factoryName; + + @Schema(description = "工厂编码;推送ERP(必须)") + private String factoryNumber; + + @Schema(description = "库位名称", example = "赵六") + private String warehouseName; + + @Schema(description = "库位编码;推送ERP(必须)") + private String warehouseNumber; + + @Schema(description = "计量单位;推送ERP(必须)") + private String unit; + + @Schema(description = "开票类型;推送ERP(必须)", example = "2") + private String invoiceType; + + @Schema(description = "暂估数量;推送ERP(必须)") + private BigDecimal quantity; + + @Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)") + private String taxAcctasscat; + + @Schema(description = "项目类别;推送ERP") + private String projectCategory; + + @Schema(description = "装运地点;推送ERP") + private String shippingPlace; + + @Schema(description = "物料科目分配组;推送ERP(必须)") + private String metalAcctasscatGroup; + + @Schema(description = "小协议号") + private String agreementNumber; + + @Schema(description = "总价") + private BigDecimal gross; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "张三") + private String elementName; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用") + private String isEnable; + + @Schema(description = "价格条件详情;推送ERP(必须):JSON") + private String priceConditionDetail; + + @Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)") + private String originDetail; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailRespVO.java new file mode 100644 index 0000000..59daf0b --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailRespVO.java @@ -0,0 +1,119 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import java.math.BigDecimal; +import org.springframework.format.annotation.DateTimeFormat; +import java.time.LocalDateTime; +import com.alibaba.excel.annotation.*; + +@Schema(description = "管理后台 - 销售订单明细 Response VO") +@Data +@ExcelIgnoreUnannotated +public class SalesOrderDetailRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28517") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072") + @ExcelProperty("订单主键") + private Long orderId; + + @Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("行项目;推送ERP(必须)") + private Long lineNumber; + + @Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "物料编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("物料编码;推送ERP(必须)") + private String materialNumber; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("工厂名称") + private String factoryName; + + @Schema(description = "工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("工厂编码;推送ERP(必须)") + private String factoryNumber; + + @Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @ExcelProperty("库位名称") + private String warehouseName; + + @Schema(description = "库位编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("库位编码;推送ERP(必须)") + private String warehouseNumber; + + @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("计量单位;推送ERP(必须)") + private String unit; + + @Schema(description = "开票类型;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("开票类型;推送ERP(必须)") + private String invoiceType; + + @Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("暂估数量;推送ERP(必须)") + private BigDecimal quantity; + + @Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("稅分类(字典:SALE_TAX);推送ERP(必须)") + private String taxAcctasscat; + + @Schema(description = "项目类别;推送ERP") + @ExcelProperty("项目类别;推送ERP") + private String projectCategory; + + @Schema(description = "装运地点;推送ERP") + @ExcelProperty("装运地点;推送ERP") + private String shippingPlace; + + @Schema(description = "物料科目分配组;推送ERP(必须)") + @ExcelProperty("物料科目分配组;推送ERP(必须)") + private String metalAcctasscatGroup; + + @Schema(description = "小协议号") + @ExcelProperty("小协议号") + private String agreementNumber; + + @Schema(description = "总价") + @ExcelProperty("总价") + private BigDecimal gross; + + @Schema(description = "金属元素缩写") + @ExcelProperty("金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "张三") + @ExcelProperty("金属元素名称") + private String elementName; + + @Schema(description = "金属元素编码") + @ExcelProperty("金属元素编码") + private String elementNumber; + + @Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("是否启用;处理明细中多个相同物料,只能允许一种物料启用") + private String isEnable; + + @Schema(description = "价格条件详情;推送ERP(必须):JSON", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("价格条件详情;推送ERP(必须):JSON") + private String priceConditionDetail; + + @Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)") + @ExcelProperty("来料加工原料详情;推送ERP:订单类型(JSON)") + private String originDetail; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "税率", requiredMode = Schema.RequiredMode.REQUIRED) + private String taxRte; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailSaveReqVO.java new file mode 100644 index 0000000..b1bf4f7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderDetailSaveReqVO.java @@ -0,0 +1,102 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.*; +import java.util.*; +import jakarta.validation.constraints.*; +import java.math.BigDecimal; + +@Schema(description = "管理后台 - 销售订单明细新增/修改 Request VO") +@Data +public class SalesOrderDetailSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "28517") + private Long id; + + @Schema(description = "订单主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "9072") + @NotNull(message = "订单主键不能为空") + private Long orderId; + + @Schema(description = "行项目;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "行项目;推送ERP(必须)不能为空") + private Long lineNumber; + + @Schema(description = "物料名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "物料名称不能为空") + private String materialName; + + @Schema(description = "物料编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "物料编码;推送ERP(必须)不能为空") + private String materialNumber; + + @Schema(description = "工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "工厂名称不能为空") + private String factoryName; + + @Schema(description = "工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂编码;推送ERP(必须)不能为空") + private String factoryNumber; + + @Schema(description = "库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六") + @NotEmpty(message = "库位名称不能为空") + private String warehouseName; + + @Schema(description = "库位编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "库位编码;推送ERP(必须)不能为空") + private String warehouseNumber; + + @Schema(description = "计量单位;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位;推送ERP(必须)不能为空") + private String unit; + + @Schema(description = "开票类型;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "开票类型;推送ERP(必须)不能为空") + private String invoiceType; + + @Schema(description = "暂估数量;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "暂估数量;推送ERP(必须)不能为空") + private BigDecimal quantity; + + @Schema(description = "稅分类(字典:SALE_TAX);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "稅分类(字典:SALE_TAX);推送ERP(必须)不能为空") + private String taxAcctasscat; + + @Schema(description = "项目类别;推送ERP") + private String projectCategory; + + @Schema(description = "装运地点;推送ERP") + private String shippingPlace; + + @Schema(description = "物料科目分配组;推送ERP(必须)") + private String metalAcctasscatGroup; + + @Schema(description = "小协议号") + private String agreementNumber; + + @Schema(description = "总价") + private BigDecimal gross; + + @Schema(description = "金属元素缩写") + private String elementAbbreviation; + + @Schema(description = "金属元素名称", example = "张三") + private String elementName; + + @Schema(description = "金属元素编码") + private String elementNumber; + + @Schema(description = "是否启用;处理明细中多个相同物料,只能允许一种物料启用", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "是否启用;处理明细中多个相同物料,只能允许一种物料启用不能为空") + private String isEnable; + + @Schema(description = "价格条件详情;推送ERP(必须):JSON", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "价格条件详情;推送ERP(必须):JSON不能为空") + private String priceConditionDetail; + + @Schema(description = "来料加工原料详情;推送ERP:订单类型(JSON)") + private String originDetail; + + @Schema(description = "税率") + private String taxRte; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderPageReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderPageReqVO.java new file mode 100644 index 0000000..a2b7179 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderPageReqVO.java @@ -0,0 +1,137 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import com.zt.plat.framework.common.pojo.PageParam; +import io.swagger.v3.oas.annotations.media.Schema; +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; + +@Schema(description = "管理后台 - 采购订单分页 Request VO") +@Data +public class SalesOrderPageReqVO extends PageParam { + + @Schema(description = "ERP订单号") + private String orderSAPNumber; + + @Schema(description = "订单号") + private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)") + private String supplierNumber; + + @Schema(description = "客商名称", example = "芋艿") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", example = "2") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", example = "芋艿") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", example = "王五") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP") + private String receiveWarehouseNumber; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)") + private String purchaseGroup; + + @Schema(description = "计量单位") + private String unt; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + private String agentName; + + @Schema(description = "订单编码") + private String orderNumber; + + @Schema(description = "系统合同编号") + private String contractNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + private String contractName; + + @Schema(description = "小户头号") + private String tenantNumber; + + @Schema(description = "创建时间") + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) + private LocalDateTime[] createTime; + + @Schema(description = "ERP公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", example = "王五") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", example = "芋艿") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + private String status; + + @Schema(description = "采购组名称", example = "张三") + private String purchaseGroupName; + + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + private String mtrlTp; + + @Schema(description = "订单分类") + private String splyBsnTp; + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderReqVO.java new file mode 100644 index 0000000..a214ebf --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderReqVO.java @@ -0,0 +1,23 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Schema(description = "管理后台 - 订单审核请求对象 Request VO") +@Data +public class SalesOrderReqVO { + + @Schema(description = "合同主键ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "合同主键ID不能为空") + private Long id; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核意见不能为空") + private String reviewOpinion; + + @Schema(description = "状态:待推送 WAIT_PUSH,已驳回 REJECTED", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "审核状态不能为空") + private String status; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java new file mode 100644 index 0000000..f85582b --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderRespVO.java @@ -0,0 +1,201 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; +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 +@ExcelIgnoreUnannotated +public class SalesOrderRespVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074") + @ExcelProperty("主键") + private Long id; + + @Schema(description = "ERP订单号") + @ExcelProperty("ERP订单号") + private String orderSAPNumber; + + @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单号") + private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("公司编码;推送ERP(必须)") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("客商编码;推送ERP(必须)") + private String supplierNumber; + + @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("客商名称") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @ExcelProperty("订单类型(字典:PRCH_ORD_TP);推送ERP(必须)") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("凭证日期;推送ERP(必须)") + private LocalDateTime voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组织编码;推送ERP(必须)") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("收货工厂名称") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货工厂编码;推送ERP(必须)") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("收货库位名称") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("收货库位编码;推送ERP") + private String receiveWarehouseNumber; + + @Schema(description = "计量单位") + private String unt; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)") + private String purchaseGroup; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("货币码(字典:CUR);推送ERP(必须)") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + @ExcelProperty("汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("合同纸质合同号;推送ERP(必须)") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + @ExcelProperty("小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + @ExcelProperty("备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + @ExcelProperty("代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + @ExcelProperty("代理方名称") + private String agentName; + + @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("订单编码") + private String orderNumber; + + @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("系统合同编号") + private String contractNumber; + + @Schema(description = "物料编码") + @ExcelProperty("物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + @ExcelProperty("物料名称") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + @ExcelProperty("合同名称") + private String contractName; + + @Schema(description = "小户头号") + @ExcelProperty("小户头号") + private String tenantNumber; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("创建时间") + private LocalDateTime createTime; + + @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("ERP公司编号") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @ExcelProperty("ERP公司名称") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @ExcelProperty("ERP客商公司编码") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("ERP客商公司名称") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + @ExcelProperty("采购组织名称") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + @ExcelProperty("ERP状态(字典: ERP_REQ_STS)") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + @ExcelProperty("请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + @ExcelProperty("订单状态(字典:PRCH_ORD_STS)") + private String status; + + @Schema(description = "采购组名称", example = "张三") + @ExcelProperty("采购组名称") + private String purchaseGroupName; + + @Schema(description = "订单明细") + @ExcelProperty("订单明细") + private List prchOrdDtlRespVOS; + + @Schema(description = "物料类型(字典:MTRL_TP)", example = "2") + @ExcelProperty("物料类型(字典:MTRL_TP)") + private String mtrlTp; + + @Schema(description = "订单分类", example = "2") + @ExcelProperty("订单分类") + private String splyBsnTp; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @ExcelProperty("公司名称") + private String cpName; + + @Schema(description = "是否提交审核,value为0或1") + @ExcelProperty("是否提交审核") + private int isPush; + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "流程当前任务节点id") + @ExcelProperty("流程当前任务节点id") + private String taskId; + + @Schema(description = " 审批意见") + @ExcelProperty(" 审批意见") + private String reviewOpinion; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderSaveReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderSaveReqVO.java new file mode 100644 index 0000000..ade2eae --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderSaveReqVO.java @@ -0,0 +1,182 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlSaveReqVO; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Schema(description = "管理后台 - 采购订单新增/修改 Request VO") +@Data +public class SalesOrderSaveReqVO { + + @Schema(description = "主键", requiredMode = Schema.RequiredMode.REQUIRED, example = "6074") + private Long id; + + @Schema(description = "公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "公司名称不能为空") + private String cpName; + + @Schema(description = "ERP订单号") + private String orderSAPNumber; + +// @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单号不能为空") +// private String systemOrderNumber; + + @Schema(description = "公司编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司编码;推送ERP(必须)不能为空") + private String companyNumber; + + @Schema(description = "客商编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "客商编码;推送ERP(必须)不能为空") + private String supplierNumber; + + @Schema(description = "客商名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "客商名称不能为空") + private String supplierName; + + @Schema(description = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") + @NotEmpty(message = "订单类型(字典:PRCH_ORD_TP);推送ERP(必须)不能为空") + private String type; + + @Schema(description = "凭证日期;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "凭证日期;推送ERP(必须)不能为空") + private LocalDateTime voucherDate; + + @Schema(description = "采购组织编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织编码;推送ERP(必须)不能为空") + private String purchaseOrganizationCustomsDeclaration; + + @Schema(description = "收货工厂名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "收货工厂名称不能为空") + private String receiveFactoryName; + + @Schema(description = "收货工厂编码;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货工厂编码;推送ERP(必须)不能为空") + private String receiveFactoryNumber; + + @Schema(description = "收货库位名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "收货库位名称不能为空") + private String receiveWarehouseName; + + @Schema(description = "收货库位编码;推送ERP", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "收货库位编码;推送ERP不能为空") + private String receiveWarehouseNumber; + + @Schema(description = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组编码(字典:PRCH_GRP_TP);推送ERP(必须)不能为空") + private String purchaseGroup; + + @Schema(description = "货币码(字典:CUR);推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "货币码(字典:CUR);推送ERP(必须)不能为空") + private String currencyNumber; + + @Schema(description = "汇率;推送ERP") + private BigDecimal exchangeRate; + + @Schema(description = "合同纸质合同号;推送ERP(必须)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "合同纸质合同号;推送ERP(必须)不能为空") + private String paperContractNumber; + + @Schema(description = "小协议号;推送ERP") + private String agreementNumber; + + @Schema(description = "备注;推送ERP") + private String remark; + + @Schema(description = "代理方编码;推送ERP") + private String agentNumber; + + @Schema(description = "代理方名称", example = "张三") + private String agentName; +// +// @Schema(description = "订单编码", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotEmpty(message = "订单编码不能为空") +// private String orderNumber; + + + @Schema(description = "计量单位") + @NotEmpty(message = "计量单位(unt)不能为空") + private String unt; + + @Schema(description = "系统合同编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "系统合同编号不能为空") + private String contractNumber; + + @Schema(description = "物料编码") + private String materialNumber; + + @Schema(description = "物料名称", example = "王五") + private String materialName; + + @Schema(description = "合同名称", example = "赵六") + private String contractName; + + @Schema(description = "小户头号") + private String tenantNumber; + + @Schema(description = "ERP公司编号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "ERP公司编号不能为空") + private String erpPurchaseCompanyNumber; + + @Schema(description = "ERP公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "王五") + @NotEmpty(message = "ERP公司名称不能为空") + private String erpPurchaseCompanyName; + + @Schema(description = "ERP客商公司编码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "ERP客商公司编码不能为空") + private String erpSalesCompanyNumber; + + @Schema(description = "ERP客商公司名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿") + @NotEmpty(message = "ERP客商公司名称不能为空") + private String erpSalesCompanyName; + + @Schema(description = "采购组织名称", example = "赵六") + private String purchaseOrganizationName; + + @Schema(description = "ERP状态(字典: ERP_REQ_STS)", example = "2") + private String erpStatus; + + @Schema(description = "请求ERP失败原因") + private String cause; + + @Schema(description = "订单状态(字典:PRCH_ORD_STS)", example = "2") + private String status; + + @Schema(description = "采购组名称", example = "张三") + private String purchaseGroupName; + + @Schema(description = "订单明细") + @ExcelProperty("订单明细") + private List salesOrderDetailSaveReqVOS; + + + @Schema(description = "流程实例编号") + @ExcelProperty("流程实例编号") + private String processInstanceId; + + @Schema(description = "流程当前任务节点id") + @ExcelProperty("流程当前任务节点id") + private String taskId; + + @Schema(description = " 审批意见") + @ExcelProperty(" 审批意见") + private String reviewOpinion; + + @Schema(description = "是否提交审核,value为0或1") + @ExcelProperty("是否提交审核") + private int isPush; + @Schema(description = "物料类别(字典:MTRL_TP)", example = "1") + @ExcelProperty("物料类别") + private String mtrlTp; + + @Schema(description = "订单分类", example = "2") + @ExcelProperty("订单分类") + private String splyBsnTp; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderStsReqVO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderStsReqVO.java new file mode 100644 index 0000000..e037907 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/controller/admin/salesorder/vo/SalesOrderStsReqVO.java @@ -0,0 +1,22 @@ +package com.zt.plat.module.contractorder.controller.admin.salesorder.vo; + +import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; + + +@Schema(description = "管理后台 - 采购订单状态 Request VO") +@Data +@ExcelIgnoreUnannotated +public class SalesOrderStsReqVO { + @Schema(description = "采购订单编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "26419") + private List ids; + @Schema(description = "采购订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotEmpty(message = "采购订单状态不能为空") + private String sts; + @Schema(description = "采购订单号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + private List orderNos; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractCoefficientDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractCoefficientDO.java index c945db3..3e3a4e9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractCoefficientDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractCoefficientDO.java @@ -29,11 +29,6 @@ public class ContractCoefficientDO extends BusinessBaseDO { */ @TableId(type = IdType.ASSIGN_ID) private Long id; - /** - * 配置主键 - */ - @TableField("PRM_ID") - private Long parameterId; /** * 条款主键 */ @@ -54,11 +49,6 @@ public class ContractCoefficientDO extends BusinessBaseDO { */ @TableField("ELEM_NAME") private String elementName; - /** - * 系数值 - */ - @TableField("STLM_COEF") - private String settlementCoefficient; /** * 系数上限 */ @@ -70,23 +60,23 @@ public class ContractCoefficientDO extends BusinessBaseDO { @TableField("COEF_DOWN") private BigDecimal coefficientDown; /** - * 是否包含上限 + * 区间方式(字典:STLM_RNG_WY) */ - @TableField("IS_IN_UP") - private String isInUp; + @TableField("RNG_WY") + private String rangeWay; /** - * 是否包含下限 - */ - @TableField("IS_IN_DOWN") - private String isInDown; - /** - * 是否省内 + * 是否省内(字典:ERP_CTRT_YN) */ @TableField("IN_STA") private String inState; /** - * 类型 + * 类型(字典:STLM_COEF) */ @TableField("TP") private String type; + /** + * 系数值 + */ + @TableField("STLM_COEF") + private BigDecimal settlementCoefficient; } \ 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/dataobject/contract/ContractDeductDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java index c80521e..1c9c94c 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDeductDO.java @@ -29,56 +29,21 @@ public class ContractDeductDO extends BusinessBaseDO { */ @TableId(type = IdType.ASSIGN_ID) private Long id; - /** - * 配置主键 - */ - @TableField("PRM_ID") - private Long parameterId; /** * 条款主键 */ @TableField("FMU_ID") private Long formulaId; /** - * 物料编码;推送ERP + * 金属元素缩写(Cu\Au\Ag) */ - @TableField("MTRL_NUM") - private String materialNumber; + @TableField("ELEM_ABBR") + private String elementAbbreviation; /** - * 物料名称 + * 数据项类型(字典:GRD_CFG_TP) */ - @TableField("MTRL_NAME") - private String materialName; - /** - * 上限 - */ - @TableField("GRD_UP") - private BigDecimal gradeUp; - /** - * 下限 - */ - @TableField("GRD_DOWN") - private BigDecimal gradeDown; - /** - * 是否包含上限 - */ - @TableField("IS_IN_UP") - private String isInUp; - /** - * 是否包含下限 - */ - @TableField("IS_IN_DOWN") - private String isInDown; - /** - * 方式 - */ - @TableField("WY") - private String way; - /** - * 类型 - */ - @TableField("TP") - private String type; + @TableField("CFG_TP") + private String configType; /** * 是否省内 */ @@ -89,4 +54,24 @@ public class ContractDeductDO extends BusinessBaseDO { */ @TableField("GRD_AMT") private BigDecimal gradeAmount; + /** + * 区间方式(字典:STLM_RNG_WY) + */ + @TableField("RNG_WY") + private String rangeWay; + /** + * 上限 + */ + @TableField("UP") + private BigDecimal up; + /** + * 下限 + */ + @TableField("DOWN") + private BigDecimal down; + /** + * 类型(字典:STLM_COEF) + */ + @TableField("TP") + private String type; } \ 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/dataobject/contract/ContractDemoteDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDemoteDO.java new file mode 100644 index 0000000..569ff75 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDemoteDO.java @@ -0,0 +1,77 @@ +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.*; + +import java.math.BigDecimal; + +/** + * 参数降级规则 DO + * + * @author 后台管理-1 + */ +@TableName("bse_ctrt_dmot") +@KeySequence("bse_ctrt_dmot_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractDemoteDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 合同主键 + */ + @TableField("CTRT_ID") + private Long contractId; + /** + * 金属元素编码 + */ + @TableField("ELEM_NUM") + private String elementNumber; + /** + * 金属元素缩写 + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; + /** + * 金属元素名称 + */ + @TableField("ELEM_NAME") + private String elementName; + /** + * 上限 + */ + @TableField("GRD_UP") + private BigDecimal gradeUp; + /** + * 区间方式(字典:STLM_RNG_WY) + */ + @TableField("RNG_WY") + private String rangeWay; + /** + * 下限 + */ + @TableField("GRD_DOWN") + private BigDecimal gradeDown; + /** + * 降级后物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 降级后物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; +} \ 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/dataobject/contract/ContractDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java index 2aa35fe..6b03ee6 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractDetailDO.java @@ -73,4 +73,9 @@ public class ContractDetailDO extends BusinessBaseDO { */ @TableField("ELEM_NUM") private String elementNumber; + /** + * 含税总价 + */ + @TableField("ALL_IN_TAX_UPRC") + private BigDecimal allInTaxUnitPrice; } diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java index 2c92df2..5fb92d1 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractFormulaDO.java @@ -28,10 +28,10 @@ public class ContractFormulaDO extends BusinessBaseDO { @TableId(type = IdType.ASSIGN_ID) private Long id; /** - * 合同明细主键 + * 合同主键 */ - @TableField("CTRT_DTL_ID") - private Long contractDetailId; + @TableField("CTRT_ID") + private Long contractId; /** * 公式类型;单价/总价/水扣款/加工费 */ diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractGradeDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractGradeDO.java index 47403a4..0c9c9dc 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractGradeDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractGradeDO.java @@ -29,11 +29,6 @@ public class ContractGradeDO extends BusinessBaseDO { */ @TableId(type = IdType.ASSIGN_ID) private Long id; - /** - * 配置主键 - */ - @TableField("PRM_ID") - private Long parameterId; /** * 条款主键 */ @@ -70,37 +65,32 @@ public class ContractGradeDO extends BusinessBaseDO { @TableField("GRD_DOWN") private BigDecimal gradeDown; /** - * 是否包含上限;包含则是大于等于,不包含则是大于 + * 区间方式(字典:STLM_RNG_WY) */ - @TableField("IS_IN_UP") - private String isInUp; + @TableField("RNG_WY") + private String rangeWay; /** - * 是否包含下限;包含则是小于等于,不包含则是小于 - */ - @TableField("IS_IN_DOWN") - private String isInDown; - /** - * 默认计价品位;计价方式为加时,默认为为下限,计价方式为减时,默认为为上限,可手动填写 + * 默认计价品位 */ @TableField("GRD_DFT") private BigDecimal gradeDefault; /** - * 系数;计价类型为阶梯价使用,标识没上升多少系数进行加款还是减款 + * 系数值 */ @TableField("STLM_COEF") private BigDecimal settlementCoefficient; /** - * 不足系数值按比例计算 + * 是否比例计算(字典:ERP_CTRT_YN) */ @TableField("USE_COEF") private String useCoefficient; /** - * 计价类型 + * 计价类型(字典:STLM_GRD_TP) */ @TableField("PRC_TP") private String priceType; /** - * 是否省内 + * 是否省内(字典:ERP_CTRT_YN) */ @TableField("IN_STA") private String inState; @@ -109,4 +99,9 @@ public class ContractGradeDO extends BusinessBaseDO { */ @TableField("UPRC") private BigDecimal unitPrice; + /** + * 数据项类型(字典:GRD_CFG_TP) + */ + @TableField("CFG_TP") + private String configType; } \ 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/dataobject/contract/ContractMainDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java index 3bad913..ea05762 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractMainDO.java @@ -40,7 +40,7 @@ public class ContractMainDO extends BusinessBaseDO { @TableField("SYS_CTRT_NUM") private String systemContractNumber; /** - * 状态 + * 状态(字典: BSE_CTRT_STS) */ @TableField("STS") private String status; @@ -60,7 +60,7 @@ public class ContractMainDO extends BusinessBaseDO { @TableField("CTRT_VRTL") private String contractVirtual; /** - * 是否先款后货 + * 交易方式(字典: HS_PYBL_TP) */ @TableField("HS_PYBL") private String hasPayable; @@ -270,7 +270,7 @@ public class ContractMainDO extends BusinessBaseDO { @TableField("STP") private Integer step; /** - * ERP请求状态 + * ERP请求状态(字典: ERP_REQ_STS) */ @TableField("ERP_STS") private String erpStatus; @@ -279,4 +279,119 @@ public class ContractMainDO extends BusinessBaseDO { */ @TableField("CAUS") private String cause; + /** + * 流程实例编号 + */ + @TableField("PRCS_INSC_ID") + private String processInstanceId; + /** + * 审批意见 + */ + @TableField("RVW_ONN") + private String reviewOpinion; + /** + * 任务节点主键 + */ + @TableField("TSK_NDE_ID") + private String taskNodeId; + /** + * 交货地点 + */ + @TableField("DLVY_ADR") + private String deliveryAddress; + /** + * 交货方式(字典:FRCST_ASN) + */ + @TableField("DLVY_WY") + private String deliveryWay; + /** + * 甲方联系人 + */ + @TableField("PRCH_HMN") + private String purchaseHuman; + /** + * 甲方电话 + */ + @TableField("PRCH_TEL") + private String purchaseTel; + /** + * 甲方邮箱 + */ + @TableField("PRCH_EM") + private String purchaseEmail; + /** + * 甲方传真 + */ + @TableField("PRCH_FAX") + private String purchaseFax; + /** + * 甲方联系地址 + */ + @TableField("PRCH_CTCT_ADR") + private String purchaseContactAddress; + /** + * 乙方联系人 + */ + @TableField("SALE_HMN") + private String salesHuman; + /** + * 乙方电话 + */ + @TableField("SALE_TEL") + private String salesTel; + /** + * 乙方邮箱 + */ + @TableField("SALE_EM") + private String salesEmail; + /** + * 乙方传真 + */ + @TableField("SALE_FAX") + private String salesFax; + /** + * 乙方联系地址 + */ + @TableField("SALE_CTCT_ADR") + private String salesContactAddress; + /** + * ERP甲方公司编号 + */ + @TableField("ERP_PRCH_CPN_NUM") + private String erpPurchaseCompanyNumber; + /** + * ERP甲方公司名称 + */ + @TableField("ERP_PRCH_CPN_NAME") + private String erpPurchaseCompanyName; + /** + * ERP乙方公司编码 + */ + @TableField("ERP_SALE_CPN_NUM") + private String erpSalesCompanyNumber; + /** + * ERP乙方公司名称 + */ + @TableField("ERP_SALE_CPN_NAME") + private String erpSalesCompanyName; + /** + * 是否内部企业(字典:ERP_CTRT_YN) + */ + @TableField("IS_INTL") + private String isInternal; + /** + * 其它附件对象存储 + */ + @TableField("FILE_OBJ_OTH") + private String fileObjectOther; + /** + * 模板附件对象存储 + */ + @TableField("FILE_OBJ") + private String fileObject; + /** + * 合同分类(字典:SPLY_BSN_TP) + */ + @TableField("BSN_TP") + private String businessType; } \ 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/dataobject/contract/ContractNotDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractNotDO.java index 642a7b6..60dd9b9 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractNotDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractNotDO.java @@ -7,9 +7,9 @@ import lombok.*; import java.math.BigDecimal; /** - * 品位不计价配置 DO + * 品位不计价规则 DO * - * @author 后台管理 + * @author 后台管理-1 */ @TableName("bse_ctrt_nt") @KeySequence("bse_ctrt_nt_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @@ -30,15 +30,10 @@ public class ContractNotDO extends BusinessBaseDO { @TableId(type = IdType.ASSIGN_ID) private Long id; /** - * 配置主键 + * 合同主键 */ - @TableField("PRM_ID") - private Long parameterId; - /** - * 条款主键 - */ - @TableField("FMU_ID") - private Long formulaId; + @TableField("CTRT_ID") + private Long contractId; /** * 金属元素编码 */ @@ -65,18 +60,18 @@ public class ContractNotDO extends BusinessBaseDO { @TableField("GRD_DOWN") private BigDecimal gradeDown; /** - * 是否包含上限 + * 区间方式(字典:STLM_RNG_WY) */ - @TableField("IS_IN_UP") - private String isInUp; + @TableField("RNG_WY") + private String rangeWay; /** - * 是否包含下限 + * 物料名称 */ - @TableField("IS_IN_DOWN") - private String isInDown; + @TableField("MTRL_NAME") + private String materialName; /** - * 是否省内 + * 物料编码 */ - @TableField("IN_STA") - private String inState; + @TableField("MTRL_NUM") + private String materialNumber; } \ 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/dataobject/contract/ContractOtherFieldDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFieldDO.java new file mode 100644 index 0000000..e93f150 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFieldDO.java @@ -0,0 +1,70 @@ +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_ctrt_oth_fld") +@KeySequence("bse_ctrt_oth_fld_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractOtherFieldDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 动态条款主键 + */ + @TableField("REL_ID") + private Long relativityId; + /** + * 字段编码 + */ + @TableField("FLD_NUM") + private String fieldNumber; + /** + * 字段名称 + */ + @TableField("FLD_NAME") + private String fieldName; + /** + * 字段值关联合同或条款 + */ + @TableField("FLD_VAL") + private String fieldValue; + /** + * 字段描述 + */ + @TableField("FLD_DSP") + private String fieldDescription; + /** + * 类型 + */ + @TableField("TP") + private String type; + /** + * 状态 + */ + @TableField("STS") + private String status; + /** + * 合同主键 + */ + @TableField("CTRT_MAIN_ID") + private String contractMainId; +} \ 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/dataobject/contract/ContractOtherFormDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFormDO.java new file mode 100644 index 0000000..db6a613 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractOtherFormDO.java @@ -0,0 +1,67 @@ +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.*; + +import java.math.BigDecimal; + +/** + * 动态条款 DO + * + * @author 后台管理-1 + */ +@TableName("bse_ctrt_oth_form") +@KeySequence("bse_ctrt_oth_form_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ContractOtherFormDO extends BusinessBaseDO { + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 合同主键 + */ + @TableField("CTRT_MAIN_ID") + private Long contractMainId; + /** + * 类型;运输方式/费用 + */ + @TableField("TP") + private String type; + /** + * 条款编码 + */ + @TableField("FORM_NUM") + private String formNumber; + /** + * 条款名称 + */ + @TableField("FORM_NAME") + private String formName; + /** + * 条款值 + */ + @TableField("FORM_VAL") + private BigDecimal formValue; + /** + * 条款描述 + */ + @TableField("FORM_DSP") + private String formDescription; + /** + * 状态 + */ + @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/dataobject/contract/ContractPriceDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractPriceDO.java index f7f2017..29a66ed 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractPriceDO.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/contract/ContractPriceDO.java @@ -30,11 +30,6 @@ public class ContractPriceDO extends BusinessBaseDO { */ @TableId(type = IdType.ASSIGN_ID) private Long id; - /** - * 配置主键 - */ - @TableField("PRM_ID") - private Long parameterId; /** * 条款主键 */ 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/dataobject/purchaseorder/PrchOrdDtlDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java new file mode 100644 index 0000000..fab9a2b --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PrchOrdDtlDO.java @@ -0,0 +1,279 @@ +package com.zt.plat.module.contractorder.dal.dataobject.purchaseorder; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.time.LocalDateTime; + import java.time.LocalDateTime; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 采购订单明细 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_prch_ord_dtl") +@KeySequence("bse_prch_ord_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class PrchOrdDtlDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 采购订单主键 + */ + @TableField("ORD_ID") + private Long ordId; + /** + * 行项目;推送ERP(必须) + */ + @TableField("LINE_NUM") + private Long lineNum; + /** + * 物料编码;推送ERP + */ + @TableField("MTRL_NUM") + private String mtrlNum; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String mtrlName; + /** + * 收货工厂名称 + */ + @TableField("RCV_FACT_NAME") + private String rcvFactName; + /** + * 收货工厂编码;推送ERP(必须) + */ + @TableField("RCV_FACT_NUM") + private String rcvFactNum; + /** + * 收货库位名称 + */ + @TableField("RCV_WRH_NAME") + private String rcvWrhName; + /** + * 收货库位编码;推送ERP + */ + @TableField("RCV_WRH_NUM") + private String rcvWrhNum; + /** + * 暂估数量;推送ERP(必须) + */ + @TableField("QTY") + private BigDecimal qty; + /** + * 计量单位;推送ERP(必须) + */ + @TableField("UNT") + private String unt; + /** + * 含税单价;推送ERP(必须) + */ + @TableField("IN_TAX_UPRC") + private BigDecimal inTaxUprc; + /** + * 价格单位;推送ERP + */ + @TableField("PRC_UNT") + private BigDecimal prcUnt; + /** + * 税码(字典: PRCH_TAX);推送ERP + */ + @TableField("TAX_NUM") + private String taxNum; + /** + * 是否基于GR的发票校验;推送ERP + */ + @TableField("IS_GR_INV") + private String isGrInv; + /** + * 是否允许无限制收货;推送ERP + */ + @TableField("IS_UNL_RCV") + private String isUnlRcv; + /** + * 批次;推送ERP + */ + @TableField("BAT") + private String bat; + /** + * 项目类别;推送ERP:委托加工L + */ + @TableField("PRJ_CTGR") + private String prjCtgr; + /** + * 科目分配类别(字典: PRCH_ACTS_CTGR);推送ERP:联动订单类型,固定资产订单A,服务订单S-销售服务费K-成本中心F-订单 + */ + @TableField("ACTS_CTGR") + private String actsCtgr; + /** + * 物料组编码(字典: PRCH_MATERIAL_GROUP);推送ERP:联动订单类型,服务订单必传 + */ + @TableField("MTRL_CPNT_NUM") + private String mtrlCpntNum; + /** + * 物料组描述;推送ERP:联动订单类型,服务订单必传 + */ + @TableField("MTRL_CPNT_DSP") + private String mtrlCpntDsp; + /** + * 短文本 + */ + @TableField("SHRT_TXT") + private String shrtTxt; + /** + * 退货标识X标识退货;推送ERP + */ + @TableField("IS_RLBK_CGO") + private String isRlbkCgo; + /** + * 是否免费收货标识X;推送ERP + */ + @TableField("IS_FREE_RCV") + private String isFreeRcv; + /** + * 外部行项目号;推送ERP + */ + @TableField("OUT_LINE_NUM") + private Long outLineNum; + /** + * 备注信息-需求单位;推送ERP + */ + @TableField("RMK_UNT") + private String rmkUnt; + /** + * 备注信息-物料详细;推送ERP + */ + @TableField("RMK_MTRL") + private String rmkMtrl; + /** + * 交货起始日期;推送ERP + */ + @TableField("BGN_DT") + private LocalDateTime bgnDt; + /** + * 交货截止日期;推送ERP + */ + @TableField("DDL_DT") + private LocalDateTime ddlDt; + /** + * 已收货量 + */ + @TableField("LST_QTY") + private BigDecimal lstQty; + /** + * 已移库量库;存针对该订单产生的移库量 + */ + @TableField("TRF_QTY") + private BigDecimal trfQty; + /** + * 小协议号 + */ + @TableField("AGR_NUM") + private String agrNum; + /** + * 移库工厂名称 + */ + @TableField("TRF_FACT_NAME") + private String trfFactName; + /** + * 移库工厂编码 + */ + @TableField("TRF_FACT_NUM") + private String trfFactNum; + /** + * 移库库位名称 + */ + @TableField("TRF_WRH_NAME") + private String trfWrhName; + /** + * 移库库位编码 + */ + @TableField("TRF_WRH_NUM") + private String trfWrhNum; + /** + * 备注 + */ + @TableField("RMK") + private String rmk; + /** + * 原料湿重;推送ERP + */ + @TableField("ORIG_WET") + private BigDecimal origWet; + /** + * 销售物料号;推送ERP:科目分配类别为S时必填 + */ + @TableField("SALE_MTRL_NUM") + private String saleMtrlNum; + /** + * 统计型内部订单;推送ERP + */ + @TableField("IN_ORD") + private String inOrd; + /** + * 采购类别;推送ERP:0-生产性物资类1-项目投资类 + */ + @TableField("PRCH_CTGR") + private String prchCtgr; + /** + * 是否启用(字典:ERP_CTRT_YN);处理明细中多个相同物料,只能允许一种物料启用 + */ + @TableField("IS_ENB") + private String isEnb; + /** + * 科目分配详情;科目分配类别为K或P时使用(JSON) + */ + @TableField("ACTS_CTGR_DTL") + private String actsCtgrDtl; + /** + * 委托加工详情;委托加工订单使用(JSON) + */ + @TableField("ENTT_DTL") + private String enttDtl; + /** + * 金属元素缩写 + */ + @TableField("ELEM_ABBR") + private String elemAbbr; + /** + * 金属元素名称 + */ + @TableField("ELEM_NAME") + private String elemName; + /** + * 金属元素编码 + */ + @TableField("ELEM_CDG") + private String elemCdg; + /** + * 税率 + */ + @TableField("TAX_RTE") + private String taxRte; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java new file mode 100644 index 0000000..723a1e5 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/purchaseorder/PurchaseOrderDO.java @@ -0,0 +1,281 @@ +package com.zt.plat.module.contractorder.dal.dataobject.purchaseorder; + +import lombok.*; +import java.util.*; + import java.time.LocalDateTime; + import java.math.BigDecimal; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 采购订单 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_prch_ord") +@KeySequence("bse_prch_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class PurchaseOrderDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP订单号 + */ + @TableField("ORD_SAP_NUM") + private String orderSAPNumber; + /** + * 订单号 + */ + @TableField("SYS_ORD_NUM") + private String systemOrderNumber; + /** + * 公司名称 + */ + @TableField("CPN_NAME") + private String cpName; + /** + * 公司编码;推送ERP(必须) + */ + @TableField("CPN_NUM") + private String companyNumber; + /** + * 客商编码;推送ERP(必须) + */ + @TableField("SPLR_NUM") + private String supplierNumber; + /** + * 客商名称 + */ + @TableField("SPLR_NAME") + private String supplierName; + /** + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ + @TableField("TP") + private String type; + /** + * 凭证日期;推送ERP(必须) + */ + @TableField("VCHR_DT") + private LocalDateTime voucherDate; + /** + * 采购组织编码;推送ERP(必须) + */ + @TableField("PRCH_ORGZ_CD") + private String purchaseOrganizationCustomsDeclaration; + /** + * 收货工厂名称 + */ + @TableField("RCV_FACT_NAME") + private String receiveFactoryName; + /** + * 收货工厂编码;推送ERP(必须) + */ + @TableField("RCV_FACT_NUM") + private String receiveFactoryNumber; + /** + * 收货库位名称 + */ + @TableField("RCV_WRH_NAME") + private String receiveWarehouseName; + /** + * 收货库位编码;推送ERP + */ + @TableField("RCV_WRH_NUM") + private String receiveWarehouseNumber; + /** + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ + @TableField("PRCH_GRP") + private String purchaseGroup; + /** + * 货币码(字典:CUR);推送ERP(必须) + */ + @TableField("CUR_NUM") + private String currencyNumber; + /** + * 汇率;推送ERP + */ + @TableField("EXCH_RTE") + private BigDecimal exchangeRate; + /** + * 合同纸质合同号;推送ERP(必须) + */ + @TableField("PPR_CTRT_NUM") + private String paperContractNumber; + /** + * 小协议号;推送ERP + */ + @TableField("AGR_NUM") + private String agreementNumber; + /** + * 备注;推送ERP + */ + @TableField("RMK") + private String remark; + /** + * 代理方编码;推送ERP + */ + @TableField("AGT_NUM") + private String agentNumber; + /** + * 代理方名称 + */ + @TableField("AGT_NAME") + private String agentName; + /** + * 订单编码 + */ +// @TableField("ORD_NUM") +// private String orderNumber; + /** + * 系统合同编号 + */ + @TableField("CTRT_NUM") + private String contractNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 合同名称 + */ + @TableField("CTRT_NAME") + private String contractName; + /** + * 小户头号 + */ + @TableField("TNT_NUM") + private String tenantNumber; + /** + * ERP公司编号 + */ + @TableField("ERP_PRCH_CPN_NUM") + private String erpPurchaseCompanyNumber; + /** + * ERP公司名称 + */ + @TableField("ERP_PRCH_CPN_NAME") + private String erpPurchaseCompanyName; + /** + * ERP客商公司编码 + */ + @TableField("ERP_SALE_CPN_NUM") + private String erpSalesCompanyNumber; + /** + * ERP客商公司名称 + */ + @TableField("ERP_SALE_CPN_NAME") + private String erpSalesCompanyName; + /** + * 采购组织名称 + */ + @TableField("PRCH_ORGZ_NAME") + private String purchaseOrganizationName; + /** + * ERP状态(字典: ERP_REQ_STS) + */ + @TableField("ERP_STS") + private String erpStatus; + /** + * 请求ERP失败原因 + */ + @TableField("CAUS") + private String cause; + /** + * 订单状态(字典:PRCH_ORD_STS) + */ + @TableField("STS") + private String status; + /** + * 采购组名称 + */ + @TableField("PRCH_GRP_NAME") + private String purchaseGroupName; + + /** + * 流程实例编号 + */ + @TableField("PRCS_INSC_ID") + private String processInstanceId; + + /** + * 流程当前任务节点id + */ + @TableField("TSK_NDE_ID") + private String taskId; + + /** + * 审批意见 + */ + @TableField("RVW_ONN") + private String reviewOpinion; + + /** + * 是否需要审批 + */ + @TableField("IS_PUSH") + private int isPush; + + /** + * 计量单位 + */ + @TableField("UNT") + private String unt; + + /** + * 物料字典 + * + */ + @TableField("MTRL_TP") + private String mtrlTp; + + /** + * 订单分类 + * + */ + @TableField("SPLY_BSN_TP") + private String splyBsnTp; + /** + * 产品组编码 + */ + @TableField("PDT_GRP_CDG") + private String pdtGrpCdg; + /** + * 产品组名称 + */ + @TableField("PDT_GRP_NAME") + private String pdtGrpName; + /** + * 分销聚道编码 + */ + @TableField("SALE_ACS_CDG") + private String saleAcsCdg; + /** + * 分销聚道名称 + */ + @TableField("SALE_ACS_NAME") + private String saleAcsName; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java new file mode 100644 index 0000000..cf915da --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDO.java @@ -0,0 +1,268 @@ +package com.zt.plat.module.contractorder.dal.dataobject.salesorder; + +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +import lombok.*; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** +* 采购订单 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_prch_ord") +@KeySequence("bse_prch_ord_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class SalesOrderDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * ERP订单号 + */ + @TableField("ORD_SAP_NUM") + private String orderSAPNumber; + /** + * 订单号 + */ + @TableField("SYS_ORD_NUM") + private String systemOrderNumber; + /** + * 公司名称 + */ + @TableField("CPN_NAME") + private String cpName; + /** + * 公司编码;推送ERP(必须) + */ + @TableField("CPN_NUM") + private String companyNumber; + /** + * 客商编码;推送ERP(必须) + */ + @TableField("SPLR_NUM") + private String supplierNumber; + /** + * 客商名称 + */ + @TableField("SPLR_NAME") + private String supplierName; + /** + * 订单类型(字典:PRCH_ORD_TP);推送ERP(必须) + */ + @TableField("TP") + private String type; + /** + * 凭证日期;推送ERP(必须) + */ + @TableField("VCHR_DT") + private LocalDateTime voucherDate; + /** + * 采购组织编码;推送ERP(必须) + */ + @TableField("PRCH_ORGZ_CD") + private String purchaseOrganizationCustomsDeclaration; + /** + * 收货工厂名称 + */ + @TableField("RCV_FACT_NAME") + private String receiveFactoryName; + /** + * 收货工厂编码;推送ERP(必须) + */ + @TableField("RCV_FACT_NUM") + private String receiveFactoryNumber; + /** + * 收货库位名称 + */ + @TableField("RCV_WRH_NAME") + private String receiveWarehouseName; + /** + * 收货库位编码;推送ERP + */ + @TableField("RCV_WRH_NUM") + private String receiveWarehouseNumber; + /** + * 采购组编码(字典:PRCH_GRP_TP);推送ERP(必须) + */ + @TableField("PRCH_GRP") + private String purchaseGroup; + /** + * 货币码(字典:CUR);推送ERP(必须) + */ + @TableField("CUR_NUM") + private String currencyNumber; + /** + * 汇率;推送ERP + */ + @TableField("EXCH_RTE") + private BigDecimal exchangeRate; + /** + * 合同纸质合同号;推送ERP(必须) + */ + @TableField("PPR_CTRT_NUM") + private String paperContractNumber; + /** + * 小协议号;推送ERP + */ + @TableField("AGR_NUM") + private String agreementNumber; + /** + * 备注;推送ERP + */ + @TableField("RMK") + private String remark; + /** + * 代理方编码;推送ERP + */ + @TableField("AGT_NUM") + private String agentNumber; + /** + * 代理方名称 + */ + @TableField("AGT_NAME") + private String agentName; + /** + * 订单编码 + */ +// @TableField("ORD_NUM") +// private String orderNumber; + /** + * 系统合同编号 + */ + @TableField("CTRT_NUM") + private String contractNumber; + /** + * 物料编码 + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 合同名称 + */ + @TableField("CTRT_NAME") + private String contractName; + /** + * 小户头号 + */ + @TableField("TNT_NUM") + private String tenantNumber; + /** + * ERP公司编号 + */ + @TableField("ERP_PRCH_CPN_NUM") + private String erpPurchaseCompanyNumber; + /** + * ERP公司名称 + */ + @TableField("ERP_PRCH_CPN_NAME") + private String erpPurchaseCompanyName; + /** + * ERP客商公司编码 + */ + @TableField("ERP_SALE_CPN_NUM") + private String erpSalesCompanyNumber; + /** + * ERP客商公司名称 + */ + @TableField("ERP_SALE_CPN_NAME") + private String erpSalesCompanyName; + /** + * 采购组织名称 + */ + @TableField("PRCH_ORGZ_NAME") + private String purchaseOrganizationName; + /** + * ERP状态(字典: ERP_REQ_STS) + */ + @TableField("ERP_STS") + private String erpStatus; + /** + * 请求ERP失败原因 + */ + @TableField("CAUS") + private String cause; + /** + * 订单状态(字典:PRCH_ORD_STS) + */ + @TableField("STS") + private String status; + /** + * 采购组名称 + */ + @TableField("PRCH_GRP_NAME") + private String purchaseGroupName; + + /** + * 流程实例编号 + */ + @TableField("PRCS_INSC_ID") + private String processInstanceId; + + /** + * 流程当前任务节点id + */ + @TableField("TSK_NDE_ID") + private String taskId; + + /** + * 审批意见 + */ + @TableField("RVW_ONN") + private String reviewOpinion; + + /** + * 是否需要审批 + */ + @TableField("IS_PUSH") + private int isPush; + + /** + * 计量单位 + */ + @TableField("UNT") + private String unt; + + /** + * 物料字典 + * + */ + @TableField("MTRL_TP") + private String mtrlTp; + + /** + * 订单分类 + * + */ + @TableField("SPLY_BSN_TP") + private String splyBsnTp; + + @TableField("PDT_GRP_CDG") + private String pdtGrpCdg; + @TableField("PDT_GRP_NAME") + private String pdtGrpName; + @TableField("SALE_ACS_CDG") + private String saleAcsCdg; + @TableField("SALE_ACS_NAME") + private String saleAcsName; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java new file mode 100644 index 0000000..0ea6703 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/dataobject/salesorder/SalesOrderDetailDO.java @@ -0,0 +1,158 @@ +package com.zt.plat.module.contractorder.dal.dataobject.salesorder; + +import lombok.*; +import java.util.*; + import java.math.BigDecimal; + import java.math.BigDecimal; + import java.time.LocalDateTime; + import java.time.LocalDateTime; +import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; +/** +* 销售订单明细 DO +* +* @author 后台管理-1 +*/ +@TableName("bse_sale_ord_dtl") +@KeySequence("bse_sale_ord_dtl_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +@Builder +@NoArgsConstructor +@AllArgsConstructor +/** +* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO +*/ +public class SalesOrderDetailDO extends BusinessBaseDO { + + + + /** + * 主键 + */ + @TableId(type = IdType.ASSIGN_ID) + private Long id; + /** + * 订单主键 + */ + @TableField("ORD_ID") + private Long orderId; + /** + * 行项目;推送ERP(必须) + */ + @TableField("LINE_NUM") + private Long lineNumber; + /** + * 物料名称 + */ + @TableField("MTRL_NAME") + private String materialName; + /** + * 物料编码;推送ERP(必须) + */ + @TableField("MTRL_NUM") + private String materialNumber; + /** + * 工厂名称 + */ + @TableField("FACT_NAME") + private String factoryName; + /** + * 工厂编码;推送ERP(必须) + */ + @TableField("FACT_NUM") + private String factoryNumber; + /** + * 库位名称 + */ + @TableField("WRH_NAME") + private String warehouseName; + /** + * 库位编码;推送ERP(必须) + */ + @TableField("WRH_NUM") + private String warehouseNumber; + /** + * 计量单位;推送ERP(必须) + */ + @TableField("UNT") + private String unit; + /** + * 开票类型;推送ERP(必须) + */ + @TableField("INV_TP") + private String invoiceType; + /** + * 暂估数量;推送ERP(必须) + */ + @TableField("QTY") + private BigDecimal quantity; + /** + * 稅分类(字典:SALE_TAX);推送ERP(必须) + */ + @TableField("TAX_ACTS") + private String taxAcctasscat; + /** + * 项目类别;推送ERP + */ + @TableField("PRJ_CTGR") + private String projectCategory; + /** + * 装运地点;推送ERP + */ + @TableField("SHPP_PLCE") + private String shippingPlace; + /** + * 物料科目分配组;推送ERP(必须) + */ + @TableField("MTL_ACTS_GRP") + private String metalAcctasscatGroup; + /** + * 小协议号 + */ + @TableField("AGR_NUM") + private String agreementNumber; + /** + * 总价 + */ + @TableField("GRS") + private BigDecimal gross; + /** + * 金属元素缩写 + */ + @TableField("ELEM_ABBR") + private String elementAbbreviation; + /** + * 金属元素名称 + */ + @TableField("ELEM_NAME") + private String elementName; + /** + * 金属元素编码 + */ + @TableField("ELEM_NUM") + private String elementNumber; + /** + * 是否启用;处理明细中多个相同物料,只能允许一种物料启用 + */ + @TableField("IS_ENB") + private String isEnable; + /** + * 价格条件详情;推送ERP(必须):JSON + */ + @TableField("PRC_CND_DTL") + private String priceConditionDetail; + /** + * 来料加工原料详情;推送ERP:订单类型(JSON) + */ + @TableField("ORGN_DTL") + private String originDetail; + + /** + * 税率 + */ + @TableField("TAX_RTE") + private String taxRte; + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractDemoteMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractDemoteMapper.java new file mode 100644 index 0000000..15008e8 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractDemoteMapper.java @@ -0,0 +1,41 @@ +package com.zt.plat.module.contractorder.dal.mysql.contract; + +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.DemoteRespVO; +import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractDemoteDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; + +/** + * 参数降级规则 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ContractDemoteMapper extends BaseMapperX { + + @Select({ + "" + }) + List selectDemotes(List contractIds, String materialName, String elementName); +} \ 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/ContractFormulaMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractFormulaMapper.java index 793e5f4..39d3d6e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractFormulaMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractFormulaMapper.java @@ -1,8 +1,12 @@ package com.zt.plat.module.contractorder.dal.mysql.contract; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.FormulaRespVO; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractFormulaDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 价款结算条款 Mapper @@ -12,4 +16,26 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ContractFormulaMapper extends BaseMapperX { + @Select({ + "" + }) + List selectFormulas(List contractIds, String materialName, String elementName); } \ 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/ContractMainMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java index 9f7ab87..c3705fb 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractMainMapper.java @@ -22,6 +22,8 @@ public interface ContractMainMapper extends BaseMapperX { .betweenIfPresent(ContractMainDO::getSignDate, reqVO.getSignDate()) .likeIfPresent(ContractMainDO::getPurchaseCompanyName, reqVO.getPurchaseCompanyName()) .eqIfPresent(ContractMainDO::getBasicAmount, reqVO.getBasicAmount()) + .eqIfPresent(ContractMainDO::getStatus, reqVO.getStatus()) + .eqIfPresent(ContractMainDO::getBusinessType, reqVO.getBusinessType()) .orderByDesc(ContractMainDO::getCreateTime)); } } \ 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/ContractNotMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractNotMapper.java index 862e08e..d0ea42e 100644 --- a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractNotMapper.java +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractNotMapper.java @@ -1,8 +1,12 @@ package com.zt.plat.module.contractorder.dal.mysql.contract; import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.NotRespVO; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractNotDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Select; + +import java.util.List; /** * 品位不计价配置 Mapper @@ -11,4 +15,27 @@ import org.apache.ibatis.annotations.Mapper; */ @Mapper public interface ContractNotMapper extends BaseMapperX { + + @Select({ + "" + }) + List selectNots(List contractIds, String materialName, String elementName); } \ 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/ContractOtherFieldMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFieldMapper.java new file mode 100644 index 0000000..cd60742 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFieldMapper.java @@ -0,0 +1,15 @@ +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.ContractOtherFieldDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 动态条款明细 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ContractOtherFieldMapper 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/dal/mysql/contract/ContractOtherFormMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFormMapper.java new file mode 100644 index 0000000..f95e86c --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/contract/ContractOtherFormMapper.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.ContractOtherFormDO; +import org.apache.ibatis.annotations.Mapper; + +/** + * 动态条款 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface ContractOtherFormMapper 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/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/dal/mysql/purchaseorder/PrchOrdDtlMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PrchOrdDtlMapper.java new file mode 100644 index 0000000..d0d5e42 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PrchOrdDtlMapper.java @@ -0,0 +1,74 @@ +package com.zt.plat.module.contractorder.dal.mysql.purchaseorder; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlPageReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 采购订单明细 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface PrchOrdDtlMapper extends BaseMapperX { + + default PageResult selectPage(PrchOrdDtlPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PrchOrdDtlDO::getOrdId, reqVO.getOrdId()) + .eqIfPresent(PrchOrdDtlDO::getLineNum, reqVO.getLineNum()) + .eqIfPresent(PrchOrdDtlDO::getMtrlNum, reqVO.getMtrlNum()) + .likeIfPresent(PrchOrdDtlDO::getMtrlName, reqVO.getMtrlName()) + .likeIfPresent(PrchOrdDtlDO::getRcvFactName, reqVO.getRcvFactName()) + .eqIfPresent(PrchOrdDtlDO::getRcvFactNum, reqVO.getRcvFactNum()) + .likeIfPresent(PrchOrdDtlDO::getRcvWrhName, reqVO.getRcvWrhName()) + .eqIfPresent(PrchOrdDtlDO::getRcvWrhNum, reqVO.getRcvWrhNum()) + .eqIfPresent(PrchOrdDtlDO::getQty, reqVO.getQty()) + .eqIfPresent(PrchOrdDtlDO::getUnt, reqVO.getUnt()) + .eqIfPresent(PrchOrdDtlDO::getInTaxUprc, reqVO.getInTaxUprc()) + .eqIfPresent(PrchOrdDtlDO::getPrcUnt, reqVO.getPrcUnt()) + .eqIfPresent(PrchOrdDtlDO::getTaxNum, reqVO.getTaxNum()) + .eqIfPresent(PrchOrdDtlDO::getIsGrInv, reqVO.getIsGrInv()) + .eqIfPresent(PrchOrdDtlDO::getIsUnlRcv, reqVO.getIsUnlRcv()) + .eqIfPresent(PrchOrdDtlDO::getBat, reqVO.getBat()) + .eqIfPresent(PrchOrdDtlDO::getPrjCtgr, reqVO.getPrjCtgr()) + .eqIfPresent(PrchOrdDtlDO::getActsCtgr, reqVO.getActsCtgr()) + .eqIfPresent(PrchOrdDtlDO::getMtrlCpntNum, reqVO.getMtrlCpntNum()) + .eqIfPresent(PrchOrdDtlDO::getMtrlCpntDsp, reqVO.getMtrlCpntDsp()) + .eqIfPresent(PrchOrdDtlDO::getShrtTxt, reqVO.getShrtTxt()) + .eqIfPresent(PrchOrdDtlDO::getIsRlbkCgo, reqVO.getIsRlbkCgo()) + .eqIfPresent(PrchOrdDtlDO::getIsFreeRcv, reqVO.getIsFreeRcv()) + .eqIfPresent(PrchOrdDtlDO::getOutLineNum, reqVO.getOutLineNum()) + .eqIfPresent(PrchOrdDtlDO::getRmkUnt, reqVO.getRmkUnt()) + .eqIfPresent(PrchOrdDtlDO::getRmkMtrl, reqVO.getRmkMtrl()) + .eqIfPresent(PrchOrdDtlDO::getBgnDt, reqVO.getBgnDt()) + .eqIfPresent(PrchOrdDtlDO::getDdlDt, reqVO.getDdlDt()) + .eqIfPresent(PrchOrdDtlDO::getLstQty, reqVO.getLstQty()) + .eqIfPresent(PrchOrdDtlDO::getTrfQty, reqVO.getTrfQty()) + .eqIfPresent(PrchOrdDtlDO::getAgrNum, reqVO.getAgrNum()) + .likeIfPresent(PrchOrdDtlDO::getTrfFactName, reqVO.getTrfFactName()) + .eqIfPresent(PrchOrdDtlDO::getTrfFactNum, reqVO.getTrfFactNum()) + .likeIfPresent(PrchOrdDtlDO::getTrfWrhName, reqVO.getTrfWrhName()) + .eqIfPresent(PrchOrdDtlDO::getTrfWrhNum, reqVO.getTrfWrhNum()) + .eqIfPresent(PrchOrdDtlDO::getRmk, reqVO.getRmk()) + .eqIfPresent(PrchOrdDtlDO::getOrigWet, reqVO.getOrigWet()) + .eqIfPresent(PrchOrdDtlDO::getSaleMtrlNum, reqVO.getSaleMtrlNum()) + .eqIfPresent(PrchOrdDtlDO::getInOrd, reqVO.getInOrd()) + .eqIfPresent(PrchOrdDtlDO::getPrchCtgr, reqVO.getPrchCtgr()) + .eqIfPresent(PrchOrdDtlDO::getIsEnb, reqVO.getIsEnb()) + .eqIfPresent(PrchOrdDtlDO::getActsCtgrDtl, reqVO.getActsCtgrDtl()) + .eqIfPresent(PrchOrdDtlDO::getEnttDtl, reqVO.getEnttDtl()) + .betweenIfPresent(PrchOrdDtlDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(PrchOrdDtlDO::getElemAbbr, reqVO.getElemAbbr()) + .likeIfPresent(PrchOrdDtlDO::getElemName, reqVO.getElemName()) + .eqIfPresent(PrchOrdDtlDO::getElemCdg, reqVO.getElemCdg()) + .orderByDesc(PrchOrdDtlDO::getId)); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java new file mode 100644 index 0000000..44865af --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/purchaseorder/PurchaseOrderMapper.java @@ -0,0 +1,68 @@ +package com.zt.plat.module.contractorder.dal.mysql.purchaseorder; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PurchaseOrderWithDetailsVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + + +/** + * 采购订单 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface PurchaseOrderMapper extends BaseMapperX { + + default PageResult selectPage(PurchaseOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(PurchaseOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber()) + .likeIfPresent(PurchaseOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber()) + .eqIfPresent(PurchaseOrderDO::getCompanyNumber, reqVO.getCompanyNumber()) + .eqIfPresent(PurchaseOrderDO::getSupplierNumber, reqVO.getSupplierNumber()) + .likeIfPresent(PurchaseOrderDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(PurchaseOrderDO::getType, reqVO.getType()) + .betweenIfPresent(PurchaseOrderDO::getVoucherDate, reqVO.getVoucherDate()) + .eqIfPresent(PurchaseOrderDO::getPurchaseOrganizationCustomsDeclaration, reqVO.getPurchaseOrganizationCustomsDeclaration()) + .likeIfPresent(PurchaseOrderDO::getReceiveFactoryName, reqVO.getReceiveFactoryName()) + .eqIfPresent(PurchaseOrderDO::getReceiveFactoryNumber, reqVO.getReceiveFactoryNumber()) + .likeIfPresent(PurchaseOrderDO::getReceiveWarehouseName, reqVO.getReceiveWarehouseName()) + .eqIfPresent(PurchaseOrderDO::getReceiveWarehouseNumber, reqVO.getReceiveWarehouseNumber()) + .eqIfPresent(PurchaseOrderDO::getPurchaseGroup, reqVO.getPurchaseGroup()) + .eqIfPresent(PurchaseOrderDO::getCurrencyNumber, reqVO.getCurrencyNumber()) + .eqIfPresent(PurchaseOrderDO::getExchangeRate, reqVO.getExchangeRate()) + .eqIfPresent(PurchaseOrderDO::getPaperContractNumber, reqVO.getPaperContractNumber()) + .eqIfPresent(PurchaseOrderDO::getAgreementNumber, reqVO.getAgreementNumber()) + .eqIfPresent(PurchaseOrderDO::getRemark, reqVO.getRemark()) + .eqIfPresent(PurchaseOrderDO::getAgentNumber, reqVO.getAgentNumber()) + .likeIfPresent(PurchaseOrderDO::getAgentName, reqVO.getAgentName()) +// .eqIfPresent(PurchaseOrderDO::getOrderNumber, reqVO.getOrderNumber()) + .eqIfPresent(PurchaseOrderDO::getContractNumber, reqVO.getContractNumber()) + .eqIfPresent(PurchaseOrderDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(PurchaseOrderDO::getMaterialName, reqVO.getMaterialName()) + .likeIfPresent(PurchaseOrderDO::getContractName, reqVO.getContractName()) + .eqIfPresent(PurchaseOrderDO::getTenantNumber, reqVO.getTenantNumber()) + .betweenIfPresent(PurchaseOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(PurchaseOrderDO::getErpPurchaseCompanyNumber, reqVO.getErpPurchaseCompanyNumber()) + .likeIfPresent(PurchaseOrderDO::getErpPurchaseCompanyName, reqVO.getErpPurchaseCompanyName()) + .eqIfPresent(PurchaseOrderDO::getErpSalesCompanyNumber, reqVO.getErpSalesCompanyNumber()) + .likeIfPresent(PurchaseOrderDO::getErpSalesCompanyName, reqVO.getErpSalesCompanyName()) + .likeIfPresent(PurchaseOrderDO::getPurchaseOrganizationName, reqVO.getPurchaseOrganizationName()) + .eqIfPresent(PurchaseOrderDO::getErpStatus, reqVO.getErpStatus()) + .eqIfPresent(PurchaseOrderDO::getSplyBsnTp, reqVO.getSplyBsnTp()) + .eqIfPresent(PurchaseOrderDO::getCause, reqVO.getCause()) + .eqIfPresent(PurchaseOrderDO::getStatus, reqVO.getStatus()) + .likeIfPresent(PurchaseOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName()) + .orderByDesc(PurchaseOrderDO::getId)); + } + List selectOrderByOrderNos(@Param("orderNos") List orderNos); + List selectOrderByIds(@Param("ids") List id); + PurchaseOrderDO selectByOrderId(@Param("orderId") Long orderId); +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderDetailMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderDetailMapper.java new file mode 100644 index 0000000..60af871 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderDetailMapper.java @@ -0,0 +1,51 @@ +package com.zt.plat.module.contractorder.dal.mysql.salesorder; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; +import com.zt.plat.framework.mybatis.core.mapper.BaseMapperX; + +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 销售订单明细 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface SalesOrderDetailMapper extends BaseMapperX { + + default PageResult selectPage(SalesOrderDetailPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SalesOrderDetailDO::getOrderId, reqVO.getOrderId()) + .eqIfPresent(SalesOrderDetailDO::getLineNumber, reqVO.getLineNumber()) + .likeIfPresent(SalesOrderDetailDO::getMaterialName, reqVO.getMaterialName()) + .eqIfPresent(SalesOrderDetailDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(SalesOrderDetailDO::getFactoryName, reqVO.getFactoryName()) + .eqIfPresent(SalesOrderDetailDO::getFactoryNumber, reqVO.getFactoryNumber()) + .likeIfPresent(SalesOrderDetailDO::getWarehouseName, reqVO.getWarehouseName()) + .eqIfPresent(SalesOrderDetailDO::getWarehouseNumber, reqVO.getWarehouseNumber()) + .eqIfPresent(SalesOrderDetailDO::getUnit, reqVO.getUnit()) + .eqIfPresent(SalesOrderDetailDO::getInvoiceType, reqVO.getInvoiceType()) + .eqIfPresent(SalesOrderDetailDO::getQuantity, reqVO.getQuantity()) + .eqIfPresent(SalesOrderDetailDO::getTaxAcctasscat, reqVO.getTaxAcctasscat()) + .eqIfPresent(SalesOrderDetailDO::getProjectCategory, reqVO.getProjectCategory()) + .eqIfPresent(SalesOrderDetailDO::getShippingPlace, reqVO.getShippingPlace()) + .eqIfPresent(SalesOrderDetailDO::getMetalAcctasscatGroup, reqVO.getMetalAcctasscatGroup()) + .eqIfPresent(SalesOrderDetailDO::getAgreementNumber, reqVO.getAgreementNumber()) + .eqIfPresent(SalesOrderDetailDO::getGross, reqVO.getGross()) + .eqIfPresent(SalesOrderDetailDO::getElementAbbreviation, reqVO.getElementAbbreviation()) + .likeIfPresent(SalesOrderDetailDO::getElementName, reqVO.getElementName()) + .eqIfPresent(SalesOrderDetailDO::getElementNumber, reqVO.getElementNumber()) + .eqIfPresent(SalesOrderDetailDO::getIsEnable, reqVO.getIsEnable()) + .eqIfPresent(SalesOrderDetailDO::getPriceConditionDetail, reqVO.getPriceConditionDetail()) + .eqIfPresent(SalesOrderDetailDO::getOriginDetail, reqVO.getOriginDetail()) + .betweenIfPresent(SalesOrderDetailDO::getCreateTime, reqVO.getCreateTime()) + .orderByDesc(SalesOrderDetailDO::getId)); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderMapper.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderMapper.java new file mode 100644 index 0000000..a372de7 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/dal/mysql/salesorder/SalesOrderMapper.java @@ -0,0 +1,62 @@ +package com.zt.plat.module.contractorder.dal.mysql.salesorder; + +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.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import org.apache.ibatis.annotations.Mapper; + + +/** + * 采购订单 Mapper + * + * @author 后台管理-1 + */ +@Mapper +public interface SalesOrderMapper extends BaseMapperX { + + default PageResult selectPage(SalesOrderPageReqVO reqVO) { + return selectPage(reqVO, new LambdaQueryWrapperX() + .eqIfPresent(SalesOrderDO::getOrderSAPNumber, reqVO.getOrderSAPNumber()) + .eqIfPresent(SalesOrderDO::getSystemOrderNumber, reqVO.getSystemOrderNumber()) + .eqIfPresent(SalesOrderDO::getCompanyNumber, reqVO.getCompanyNumber()) + .eqIfPresent(SalesOrderDO::getSupplierNumber, reqVO.getSupplierNumber()) + .likeIfPresent(SalesOrderDO::getSupplierName, reqVO.getSupplierName()) + .eqIfPresent(SalesOrderDO::getType, reqVO.getType()) + .betweenIfPresent(SalesOrderDO::getVoucherDate, reqVO.getVoucherDate()) + .eqIfPresent(SalesOrderDO::getPurchaseOrganizationCustomsDeclaration, reqVO.getPurchaseOrganizationCustomsDeclaration()) + .likeIfPresent(SalesOrderDO::getReceiveFactoryName, reqVO.getReceiveFactoryName()) + .eqIfPresent(SalesOrderDO::getReceiveFactoryNumber, reqVO.getReceiveFactoryNumber()) + .likeIfPresent(SalesOrderDO::getReceiveWarehouseName, reqVO.getReceiveWarehouseName()) + .eqIfPresent(SalesOrderDO::getReceiveWarehouseNumber, reqVO.getReceiveWarehouseNumber()) + .eqIfPresent(SalesOrderDO::getPurchaseGroup, reqVO.getPurchaseGroup()) + .eqIfPresent(SalesOrderDO::getCurrencyNumber, reqVO.getCurrencyNumber()) + .eqIfPresent(SalesOrderDO::getExchangeRate, reqVO.getExchangeRate()) + .eqIfPresent(SalesOrderDO::getPaperContractNumber, reqVO.getPaperContractNumber()) + .eqIfPresent(SalesOrderDO::getAgreementNumber, reqVO.getAgreementNumber()) + .eqIfPresent(SalesOrderDO::getRemark, reqVO.getRemark()) + .eqIfPresent(SalesOrderDO::getAgentNumber, reqVO.getAgentNumber()) + .likeIfPresent(SalesOrderDO::getAgentName, reqVO.getAgentName()) +// .eqIfPresent(SalesOrderDO::getOrderNumber, reqVO.getOrderNumber()) + .eqIfPresent(SalesOrderDO::getContractNumber, reqVO.getContractNumber()) + .eqIfPresent(SalesOrderDO::getMaterialNumber, reqVO.getMaterialNumber()) + .likeIfPresent(SalesOrderDO::getMaterialName, reqVO.getMaterialName()) + .likeIfPresent(SalesOrderDO::getContractName, reqVO.getContractName()) + .eqIfPresent(SalesOrderDO::getTenantNumber, reqVO.getTenantNumber()) + .betweenIfPresent(SalesOrderDO::getCreateTime, reqVO.getCreateTime()) + .eqIfPresent(SalesOrderDO::getErpPurchaseCompanyNumber, reqVO.getErpPurchaseCompanyNumber()) + .likeIfPresent(SalesOrderDO::getErpPurchaseCompanyName, reqVO.getErpPurchaseCompanyName()) + .eqIfPresent(SalesOrderDO::getErpSalesCompanyNumber, reqVO.getErpSalesCompanyNumber()) + .likeIfPresent(SalesOrderDO::getErpSalesCompanyName, reqVO.getErpSalesCompanyName()) + .likeIfPresent(SalesOrderDO::getPurchaseOrganizationName, reqVO.getPurchaseOrganizationName()) + .eqIfPresent(SalesOrderDO::getErpStatus, reqVO.getErpStatus()) + .eqIfPresent(SalesOrderDO::getSplyBsnTp, reqVO.getSplyBsnTp()) + .eqIfPresent(SalesOrderDO::getCause, reqVO.getCause()) + .eqIfPresent(SalesOrderDO::getStatus, reqVO.getStatus()) + .likeIfPresent(SalesOrderDO::getPurchaseGroupName, reqVO.getPurchaseGroupName()) + .orderByDesc(SalesOrderDO::getId)); + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java new file mode 100644 index 0000000..10e0fa9 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/framework/rpc/config/RpcConfiguration.java @@ -0,0 +1,16 @@ +package com.zt.plat.module.contractorder.framework.rpc.config; + +import com.zt.plat.module.bpm.api.task.BpmProcessInstanceApi; +import com.zt.plat.module.bpm.api.task.BpmTaskApi; +import com.zt.plat.module.infra.api.businessfile.BusinessFileApi; +import com.zt.plat.module.infra.api.file.FileApi; +import com.zt.plat.module.system.api.dept.DeptApi; +import com.zt.plat.module.system.api.sequence.SequenceApi; +import com.zt.plat.module.system.api.user.AdminUserApi; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.Configuration; + +@Configuration(value = "contractorderRpcConfiguration", proxyBeanMethods = false) +@EnableFeignClients(clients = {DeptApi.class, SequenceApi.class, BpmProcessInstanceApi.class, AdminUserApi.class, BpmTaskApi.class, BusinessFileApi.class, FileApi.class}) +public class RpcConfiguration { +} 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 bcaeb4f..6b229bb 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 @@ -1,11 +1,16 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONObject; import com.zt.plat.framework.common.pojo.PageResult; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractPageReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractSaveReqVO; -import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractViewRespVO; +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.controller.admin.purchaseorder.vo.LinkOrderReqVO; import com.zt.plat.module.contractorder.dal.dataobject.contract.ContractMainDO; import jakarta.validation.Valid; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.ResponseEntity; + +import java.util.List; /** * 后台合同编制 Service 接口 @@ -36,7 +41,7 @@ public interface ContractService { * @param id 合同ID * @return 合同信息 */ - ContractViewRespVO get(Long id); + ContractRespVO get(Long id); /** * 修改合同 @@ -45,4 +50,159 @@ public interface ContractService { * @return 修改结果 */ Boolean update(@Valid ContractSaveReqVO reqVO); + + /** + * 合同提交审批 + * + * @param id 合同ID + * @return 提交审批结果 + */ + Boolean submitApproval(Long id); + + /** + * 合同审批 + * + * @param reqVO 审批信息 + * @return 审批结果 + */ + Boolean approval(@Valid ApprovalReqVO reqVO); + + /** + * 查询不计价规则列表 + * + * @param queryReqVO 查询参数 + * @return 不计价规则列表 + */ + List getNots(NotsQueryReqVO queryReqVO); + + /** + * 查询参数降级规则列表 + * + * @param queryReqVO 查询参数 + * @return 参数降级规则列表 + */ + List getDemotes(DemotesQueryReqVO queryReqVO); + + /** + * 查询结算公式列表 + * + * @param queryReqVO 查询参数 + * @return 结算公式列表 + */ + List getFormulas(FormulasQueryReqVO queryReqVO); + + /** + * 通过合同编号获取对应的合同信息 + * + * @param contractPaperNumber 合同编号 + * @return 结算条款数据 + */ + ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber); + + /** + * 提交ERP + * + * @param id 合同ID + * @return 提交结果 + */ + JSONObject submitErp(Long id); + + /** + * 删除合同 + * + * @param ids 合同ID集合 + * @return 删除结果 + */ + List delete(List ids); + + /** + * 根据系统合同编号获得合同详情 + * + * @param systemContractNumber 系统合同编号 + * @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); + + /** + * 根据合同ID获得关联合同 + * + * @param id 合同ID + * @return 上下游合同ID + */ + RelationRespVO getRelation(Long id); + + /** + * 下载文件 + * + * @param ids 合同ID集合 + * @return 压缩文件流 + */ + ResponseEntity download(List ids); + + /** + * 归档 + * + * @param ids 合同ID集合 + * @return 归档结果 + */ + Boolean archive(List ids); + + /** + * 作废 + * + * @param ids 合同ID集合 + * @return 作废结果 + */ + Boolean cancel(List ids); + + /** + * 完结 + * + * @param ids 合同ID集合 + * @return 完结结果 + */ + Boolean complete(List ids); + + + } 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 663604d..873e7fb 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 @@ -1,32 +1,66 @@ package com.zt.plat.module.contractorder.service.contract; +import cn.hutool.json.JSONArray; +import cn.hutool.json.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.zt.plat.framework.common.pojo.CommonResult; 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.framework.security.core.util.SecurityFrameworkUtils; import com.zt.plat.framework.tenant.core.context.CompanyContextHolder; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceDataRespVO; import com.zt.plat.module.base.controller.admin.templtp.vo.TemplateInstanceItemRespVO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceDataDO; import com.zt.plat.module.base.dal.dataobject.tmpltp.TemplateInstanceItemDO; +import com.zt.plat.module.base.dal.dataobject.tmpltp.TmplInscBsnRelDO; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceDataMapper; import com.zt.plat.module.base.dal.mysql.tmpltp.TemplateInstanceItemMapper; +import com.zt.plat.module.base.dal.mysql.tmpltp.TmplInscBsnRelMapper; import com.zt.plat.module.base.service.tmpltp.TemplateInstanceDataService; +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.*; +import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; +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.controller.admin.purchaseorder.vo.LinkOrderReqVO; import com.zt.plat.module.contractorder.dal.dataobject.contract.*; import com.zt.plat.module.contractorder.dal.mysql.contract.*; -import com.zt.plat.module.contractorder.enums.TableFieldConstants; -import com.zt.plat.module.contractorder.enums.contract.ContractStatusEnum; -import com.zt.plat.module.contractorder.enums.DateConstants; +import com.zt.plat.module.contractorder.enums.*; +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.controller.admin.erp.vo.ErpContractSaveReqVO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO; +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.infra.api.file.FileApi; +import com.zt.plat.module.infra.api.file.dto.FileRespDTO; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import java.io.ByteArrayOutputStream; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; +import java.util.*; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.contractorder.enums.ErrorCodeConstants.*; @@ -64,6 +98,24 @@ public class ContractServiceImpl implements ContractService { private ContractPriceMapper contractPriceMapper; @Resource private ContractNotMapper contractNotMapper; + @Resource + private AdminUserApi adminUserApi; + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource + private BpmTaskApi bpmTaskApi; + @Resource + private ContractDemoteMapper contractDemoteMapper; + @Resource + private ErpCompanyService erpCompanyService; + @Resource + private ErpContractService erpContractService; + @Resource + private SystemRelativityMapper systemRelativityMapper; + @Resource + private FileApi fileApi; + @Resource + private TmplInscBsnRelMapper tmplInscBsnRelMapper; @Override public PageResult getContractPage(ContractPageReqVO pageReqVO) { @@ -92,10 +144,39 @@ public class ContractServiceImpl implements ContractService { // 合同主信息 ContractMainDO contractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + + // 校验ERP的公司 + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) + || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE); + } else { + contractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber()); + contractMainDO.setErpPurchaseCompanyName(erpCompany.getName()); + } + } + if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES); + } else { + contractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber()); + contractMainDO.setErpSalesCompanyName(erpCompany.getName()); + } + } + } + + // 合同状态保存为草稿 - contractMainDO.setStatus(ContractStatusEnum.DRAFT.getCode()); + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DRAFT.getCode()); // 生成系统合同编号 - contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getContractType())); + contractMainDO.setSystemContractNumber(generateSystemContractNumber(reqVO.getBusinessType())); + // 原币金额-变更后 + if (contractMainDO.getChangeCooAmount() == null) contractMainDO.setChangeCooAmount(new BigDecimal(0)); + // 本币金额-变更后 + if (contractMainDO.getChangeBasicAmount() == null) contractMainDO.setChangeBasicAmount(new BigDecimal(0)); // 保存合同主信息 contractMainMapper.insert(contractMainDO); @@ -125,76 +206,89 @@ public class ContractServiceImpl implements ContractService { contractPlanMapper.insert(planDO); }); } + }); + } - // 价款结算条款 - if (detail.getFormulas() != null && !detail.getFormulas().isEmpty()) { - detail.getFormulas().forEach(formula -> { - // 价款结算条款DO - ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); - // 合同明细主键 - formulaDO.setContractDetailId(detailDOId); - // 保存价款结算条款 - contractFormulaMapper.insert(formulaDO); + // 价款结算条款 + if (reqVO.getFormulas() != null && !reqVO.getFormulas().isEmpty()) { + reqVO.getFormulas().forEach(formula -> { + // 价款结算条款DO + ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); + // 合同主键 + formulaDO.setContractId(contractId); + // 保存价款结算条款 + contractFormulaMapper.insert(formulaDO); - // 价款结算条款ID - Long formulaDOId = formulaDO.getId(); - // 基础系数配置 - if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { - formula.getCoefficients().forEach(coefficient -> { - // 基础系数配置DO - ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); - // 条款主键 - coefficientDO.setFormulaId(formulaDOId); - // 保存基础系数配置 - contractCoefficientMapper.insert(coefficientDO); - }); - } - // 品位等级价配置 - if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { - formula.getGrades().forEach(grade -> { - // 品位等级价配置DO - ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); - // 条款主键 - gradeDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractGradeMapper.insert(gradeDO); - }); - } - // 调整价配置 - if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { - formula.getDeducts().forEach(deduct -> { - // 调整价配置DO - ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); - // 条款主键 - deductDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractDeductMapper.insert(deductDO); - }); - } - // 市场价配置 - if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { - formula.getPrices().forEach(price -> { - // 市场价配置DO - ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); - // 条款主键 - priceDO.setFormulaId(formulaDOId); - // 保存市场价配置 - contractPriceMapper.insert(priceDO); - }); - } - // 品位不计价配置 - if (formula.getNots() != null && !formula.getNots().isEmpty()) { - formula.getNots().forEach(not -> { - // 品位不计价配置DO - ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); - // 条款主键 - notDO.setFormulaId(formulaDOId); - // 保存品位不计价配置 - contractNotMapper.insert(notDO); - }); - } + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + // 基础系数配置 + if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { + formula.getCoefficients().forEach(coefficient -> { + // 基础系数配置DO + ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); + // 条款主键 + coefficientDO.setFormulaId(formulaDOId); + // 保存基础系数配置 + contractCoefficientMapper.insert(coefficientDO); }); } + // 品位等级价配置 + if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { + formula.getGrades().forEach(grade -> { + // 品位等级价配置DO + ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); + // 条款主键 + gradeDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractGradeMapper.insert(gradeDO); + }); + } + // 调整价配置 + if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { + formula.getDeducts().forEach(deduct -> { + // 调整价配置DO + ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); + // 条款主键 + deductDO.setFormulaId(formulaDOId); + // 保存品位等级价配置 + contractDeductMapper.insert(deductDO); + }); + } + // 市场价配置 + if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { + formula.getPrices().forEach(price -> { + // 市场价配置DO + ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); + // 条款主键 + priceDO.setFormulaId(formulaDOId); + // 保存市场价配置 + contractPriceMapper.insert(priceDO); + }); + } + }); + } + + // 参数降级规则 + if (reqVO.getDemotes() != null && !reqVO.getDemotes().isEmpty()) { + reqVO.getDemotes().forEach(demote -> { + // 参数降级规则DO + ContractDemoteDO demoteDO = BeanUtils.toBean(demote, ContractDemoteDO.class); + // 设置合同主键 + demoteDO.setContractId(contractId); + // 保存参数降级规则 + contractDemoteMapper.insert(demoteDO); + }); + } + + // 品位不计价规则 + if (reqVO.getNots() != null && !reqVO.getNots().isEmpty()) { + reqVO.getNots().forEach(not -> { + // 品位不计价规则DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setContractId(contractId); + // 保存品位不计价规则 + contractNotMapper.insert(notDO); }); } @@ -217,10 +311,10 @@ public class ContractServiceImpl implements ContractService { } @Override - public ContractViewRespVO get(Long id) { + public ContractRespVO get(Long id) { // 返回结果 - ContractViewRespVO respVO = new ContractViewRespVO(); + ContractRespVO respVO = new ContractRespVO(); // 查询并设置合同主信息 ContractMainDO contractMainDO = contractMainMapper.selectById(id); @@ -229,63 +323,71 @@ public class ContractServiceImpl implements ContractService { } BeanUtils.copyProperties(contractMainDO, respVO); - // 查询并设置物料信息 + // 查询并设置合同明细 List detailDOS = contractDetailMapper .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId()); if (detailDOS != null && !detailDOS.isEmpty()) { - respVO.setDetail(BeanUtils.toBean(detailDOS, ContractViewDetailRespVO.class)); + respVO.setDetail(BeanUtils.toBean(detailDOS, DetailRespVO.class)); respVO.getDetail().forEach(detail -> { // 查询并设置交货计划 List planDOS = contractPlanMapper .selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId()); if (planDOS != null && !planDOS.isEmpty()) { - detail.setPlans(BeanUtils.toBean(planDOS, ContractViewPlanRespVO.class)); - } - - // 查询并设置价款结算条款 - List formulaDOS = contractFormulaMapper - .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detail.getId()); - if (formulaDOS != null && !formulaDOS.isEmpty()) { - detail.setFormulas(BeanUtils.toBean(formulaDOS, ContractViewFormulaRespVO.class)); - - detail.getFormulas().forEach(formula -> { - - // 查询并设置基础系数配置 - List coefficientDOS = contractCoefficientMapper - .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); - if (coefficientDOS != null && !coefficientDOS.isEmpty()) { - formula.setCoefficients(BeanUtils.toBean(coefficientDOS, ContractViewCoefficientRespVO.class)); - } - // 查询并设置品位等级价配置 - List gradeDOS = contractGradeMapper - .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); - if (gradeDOS != null && !gradeDOS.isEmpty()) { - formula.setGrades(BeanUtils.toBean(gradeDOS, ContractViewGradeRespVO.class)); - } - // 查询并设置调整价配置 - List deductDOS = contractDeductMapper - .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); - if (deductDOS != null && !deductDOS.isEmpty()) { - formula.setDeducts(BeanUtils.toBean(deductDOS, ContractViewDeductRespVO.class)); - } - // 查询并设置市场价配置 - List priceDOS = contractPriceMapper - .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); - if (priceDOS != null && !priceDOS.isEmpty()) { - formula.setPrices(BeanUtils.toBean(priceDOS, ContractViewPriceRespVO.class)); - } - // 查询并设置品位不计价配置 - List notDOS = contractNotMapper - .selectList(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formula.getId()); - if (notDOS != null && !notDOS.isEmpty()) { - formula.setNots(BeanUtils.toBean(notDOS, ContractViewNotRespVO.class)); - } - }); + detail.setPlans(BeanUtils.toBean(planDOS, PlanRespVO.class)); } }); } + // 查询并设置价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respVO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespVO.class)); + + respVO.getFormulas().forEach(formula -> { + + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespVO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespVO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespVO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespVO.class)); + } + }); + } + + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respVO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespVO.class)); + } + + // 查询并设置品位不计价规则 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); + } + // 查询并设置合同动态表单 List templateInstanceDataDOS = templateInstanceDataMapper .selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); @@ -303,6 +405,288 @@ public class ContractServiceImpl implements ContractService { return respVO; } + @Override + public ContractRespVO getBySystemContractNumber(String systemContractNumber) { + // 返回结果 + ContractRespVO respVO = new ContractRespVO(); + + // 查询并设置合同主信息 + ContractMainDO contractMainDO = contractMainMapper.selectOne(TableFieldConstants.BSE_CTRT_MAIN_SYS_CTRT_NUM,systemContractNumber); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + BeanUtils.copyProperties(contractMainDO, respVO); + + // 查询并设置合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, contractMainDO.getId()); + if (detailDOS != null && !detailDOS.isEmpty()) { + respVO.setDetail(BeanUtils.toBean(detailDOS, DetailRespVO.class)); + respVO.getDetail().forEach(detail -> { + + // 查询并设置交货计划 + List planDOS = contractPlanMapper + .selectList(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detail.getId()); + if (planDOS != null && !planDOS.isEmpty()) { + detail.setPlans(BeanUtils.toBean(planDOS, PlanRespVO.class)); + } + }); + } + + // 查询并设置价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractMainDO.getId()); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respVO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespVO.class)); + + respVO.getFormulas().forEach(formula -> { + + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespVO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespVO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespVO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespVO.class)); + } + }); + } + + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respVO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespVO.class)); + } + + // 查询并设置品位不计价规则 + List notDOS = contractNotMapper + .selectList(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, contractMainDO.getId()); + if (notDOS != null && !notDOS.isEmpty()) { + respVO.setNots(BeanUtils.toBean(notDOS, NotRespVO.class)); + } + + // 查询并设置合同动态表单 + List templateInstanceDataDOS = templateInstanceDataMapper + .selectList(TableFieldConstants.BSE_TMPL_INSC_DAT_INSC_ID, contractMainDO.getInstanceId()); + if (templateInstanceDataDOS != null && !templateInstanceDataDOS.isEmpty()) { + respVO.setDynamicsFields(BeanUtils.toBean(templateInstanceDataDOS, TemplateInstanceDataRespVO.class)); + } + + // 查询并设置合同动态条款 + List templateInstanceItemDOS = templateInstanceItemMapper + .selectList(TableFieldConstants.BSE_TMPL_INSC_ITM_INSC_ID, contractMainDO.getInstanceId()); + if (templateInstanceItemDOS != null && !templateInstanceItemDOS.isEmpty()) { + respVO.setDynamicsItems(BeanUtils.toBean(templateInstanceItemDOS, TemplateInstanceItemRespVO.class)); + } + + 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) { @@ -315,10 +699,21 @@ public class ContractServiceImpl implements ContractService { // 查询合同是否存在 ContractMainDO oldContractMainDO = contractMainMapper.selectById(id); - if (contractMainMapper.selectById(id) == null) { + if (oldContractMainDO == null) { throw exception(CONTRACT_NOT_EXISTS); } + // 合同状态校验 + if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()))) { + + throw exception(CONTRACT_STATUS_NOT_UPDATE, + DictEnum.getByCodeAndType(oldContractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + // 校验合同名称是否重复 ContractMainDO contract = contractMainMapper.selectOne(new QueryWrapper() .eq(TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME, reqVO.getContractName()) @@ -337,20 +732,32 @@ public class ContractServiceImpl implements ContractService { } } - // 合同状态校验 - if (ContractStatusEnum.DELETED.getCode().equals(oldContractMainDO.getStatus()) - || ContractStatusEnum.ARCHIVED.getCode().equals(oldContractMainDO.getStatus()) - || ContractStatusEnum.TERMINATED.getCode().equals(oldContractMainDO.getStatus()) - || ContractStatusEnum.IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus()) - || ContractStatusEnum.UNDER_REVIEW.getCode().equals(oldContractMainDO.getStatus())) { - - throw exception(CONTRACT_STATUS_NOT_UPDATE, - ContractStatusEnum.valueOf(oldContractMainDO.getStatus()).getLabel()); - } - // 请求更新的合同信息 ContractMainDO newContractMainDO = BeanUtils.toBean(reqVO, ContractMainDO.class); + // 校验ERP的公司 + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber()) + || StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + if (StringUtils.isNotEmpty(reqVO.getPurchaseCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getPurchaseCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.PURCHASE); + } else { + newContractMainDO.setErpPurchaseCompanyNumber(erpCompany.getNumber()); + newContractMainDO.setErpPurchaseCompanyName(erpCompany.getName()); + } + } + if (StringUtils.isNotEmpty(reqVO.getSalesCompanyNumber())) { + ErpCompanyDO erpCompany = erpCompanyService.getErpCompanyByNumber(reqVO.getSalesCompanyNumber()); + if (erpCompany == null) { + throw exception(CONTRACT_ERP_COMPANY_PLEASE_BIND, ApiConstants.SALES); + } else { + newContractMainDO.setErpSalesCompanyNumber(erpCompany.getNumber()); + newContractMainDO.setErpSalesCompanyName(erpCompany.getName()); + } + } + } + // 删除关联信息 // 查询合同明细 List detailDOS = contractDetailMapper @@ -361,37 +768,41 @@ public class ContractServiceImpl implements ContractService { // 删除交货计划 contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString()); - - // 查询价款结算条款 - List formulaDOS = contractFormulaMapper - .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detailDOId.toString()); - if (formulaDOS != null && !formulaDOS.isEmpty()) { - formulaDOS.forEach(formulaDO -> { - - // 价款结算条款ID - Long formulaDOId = formulaDO.getId(); - - // 删除基础系数配置 - contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString()); - // 删除品位等级价配置 - contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString()); - // 删除调整价配置 - contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString()); - // 删除市场价配置 - contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString()); - // 删除品位不计价配置 - contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_FMU_ID, formulaDOId.toString()); - }); - } - - // 删除价款结算条款 - contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_DTL_ID, detailDOId.toString()); }); // 删除合同明细 contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString()); } + // 查询价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + formulaDOS.forEach(formulaDO -> { + + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + + // 删除基础系数配置 + contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString()); + // 删除品位等级价配置 + contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString()); + // 删除调整价配置 + contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString()); + // 删除市场价配置 + contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + + // 删除参数降级规则 + contractDemoteMapper.delete(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, id.toString()); + + // 删除品位不计价规则 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString()); + // 重新插入关联信息 if (reqVO.getDetail() != null && !reqVO.getDetail().isEmpty()) { reqVO.getDetail().forEach(detail -> { @@ -399,6 +810,8 @@ public class ContractServiceImpl implements ContractService { ContractDetailDO detailDO = BeanUtils.toBean(detail, ContractDetailDO.class); // 设置合同主信息ID detailDO.setContractMainId(id); + // 主键 + detailDO.setId(null); // 保存合同明细 contractDetailMapper.insert(detailDO); @@ -411,80 +824,109 @@ public class ContractServiceImpl implements ContractService { ContractPlanDO planDO = BeanUtils.toBean(plan, ContractPlanDO.class); // 合同明细主键 planDO.setContractDetailId(detailDOId); + // 主键 + planDO.setId(null); // 保存交货计划 contractPlanMapper.insert(planDO); }); } + }); + } - // 价款结算条款 - if (detail.getFormulas() != null && !detail.getFormulas().isEmpty()) { - detail.getFormulas().forEach(formula -> { - // 价款结算条款DO - ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); - // 合同明细主键 - formulaDO.setContractDetailId(detailDOId); - // 保存价款结算条款 - contractFormulaMapper.insert(formulaDO); + // 价款结算条款 + if (reqVO.getFormulas() != null && !reqVO.getFormulas().isEmpty()) { + reqVO.getFormulas().forEach(formula -> { + // 价款结算条款DO + ContractFormulaDO formulaDO = BeanUtils.toBean(formula, ContractFormulaDO.class); + // 合同主键 + formulaDO.setContractId(id); + // 主键 + formulaDO.setId(null); + // 保存价款结算条款 + contractFormulaMapper.insert(formulaDO); - // 价款结算条款ID - Long formulaDOId = formulaDO.getId(); - // 基础系数配置 - if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { - formula.getCoefficients().forEach(coefficient -> { - // 基础系数配置DO - ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); - // 条款主键 - coefficientDO.setFormulaId(formulaDOId); - // 保存基础系数配置 - contractCoefficientMapper.insert(coefficientDO); - }); - } - // 品位等级价配置 - if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { - formula.getGrades().forEach(grade -> { - // 品位等级价配置DO - ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); - // 条款主键 - gradeDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractGradeMapper.insert(gradeDO); - }); - } - // 调整价配置 - if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { - formula.getDeducts().forEach(deduct -> { - // 调整价配置DO - ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); - // 条款主键 - deductDO.setFormulaId(formulaDOId); - // 保存品位等级价配置 - contractDeductMapper.insert(deductDO); - }); - } - // 市场价配置 - if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { - formula.getPrices().forEach(price -> { - // 市场价配置DO - ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); - // 条款主键 - priceDO.setFormulaId(formulaDOId); - // 保存市场价配置 - contractPriceMapper.insert(priceDO); - }); - } - // 品位不计价配置 - if (formula.getNots() != null && !formula.getNots().isEmpty()) { - formula.getNots().forEach(not -> { - // 品位不计价配置DO - ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); - // 条款主键 - notDO.setFormulaId(formulaDOId); - // 保存品位不计价配置 - contractNotMapper.insert(notDO); - }); - } + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + // 基础系数配置 + if (formula.getCoefficients() != null && !formula.getCoefficients().isEmpty()) { + formula.getCoefficients().forEach(coefficient -> { + // 基础系数配置DO + ContractCoefficientDO coefficientDO = BeanUtils.toBean(coefficient, ContractCoefficientDO.class); + // 条款主键 + coefficientDO.setFormulaId(formulaDOId); + // 主键 + coefficientDO.setId(null); + // 保存基础系数配置 + contractCoefficientMapper.insert(coefficientDO); }); } + // 品位等级价配置 + if (formula.getGrades() != null && !formula.getGrades().isEmpty()) { + formula.getGrades().forEach(grade -> { + // 品位等级价配置DO + ContractGradeDO gradeDO = BeanUtils.toBean(grade, ContractGradeDO.class); + // 条款主键 + gradeDO.setFormulaId(formulaDOId); + // 主键 + gradeDO.setId(null); + // 保存品位等级价配置 + contractGradeMapper.insert(gradeDO); + }); + } + // 调整价配置 + if (formula.getDeducts() != null && !formula.getDeducts().isEmpty()) { + formula.getDeducts().forEach(deduct -> { + // 调整价配置DO + ContractDeductDO deductDO = BeanUtils.toBean(deduct, ContractDeductDO.class); + // 条款主键 + deductDO.setFormulaId(formulaDOId); + // 主键 + deductDO.setId(null); + // 保存品位等级价配置 + contractDeductMapper.insert(deductDO); + }); + } + // 市场价配置 + if (formula.getPrices()!= null && !formula.getPrices().isEmpty()) { + formula.getPrices().forEach(price -> { + // 市场价配置DO + ContractPriceDO priceDO = BeanUtils.toBean(price, ContractPriceDO.class); + // 条款主键 + priceDO.setFormulaId(formulaDOId); + // 主键 + priceDO.setId(null); + // 保存市场价配置 + contractPriceMapper.insert(priceDO); + }); + } + }); + } + + // 参数降级规则 + if (reqVO.getDemotes() != null && !reqVO.getDemotes().isEmpty()) { + reqVO.getDemotes().forEach(demote -> { + // 参数降级规则DO + ContractDemoteDO demoteDO = BeanUtils.toBean(demote, ContractDemoteDO.class); + // 设置合同主键 + demoteDO.setContractId(id); + // 主键 + demoteDO.setId(null); + // 保存参数降级规则 + contractDemoteMapper.insert(demoteDO); + }); + } + + // 品位不计价规则 + if (reqVO.getNots() != null && !reqVO.getNots().isEmpty()) { + reqVO.getNots().forEach(not -> { + // 品位不计价规则DO + ContractNotDO notDO = BeanUtils.toBean(not, ContractNotDO.class); + // 条款主键 + notDO.setContractId(id); + // 主键 + notDO.setId(null); + // 保存品位不计价规则 + contractNotMapper.insert(notDO); }); } @@ -503,12 +945,977 @@ public class ContractServiceImpl implements ContractService { templateInstanceDataService.setTemplateInstanceData(templateInstanceDataDOS); } + // 合同状态更新 + if (DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode().equals(oldContractMainDO.getStatus())) { + // “推送失败”的状态编辑后状态变为“待推送” + newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode()); + } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(oldContractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(oldContractMainDO.getStatus())) { + // 其它状态编辑后都为“待审核” + newContractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode()); + } + // 更新合同主信息 int updateNum = contractMainMapper.updateById(newContractMainDO); - if (updateNum > 0) { - return true; + + return updateNum > 0; + } + + @Override + public List delete(List ids) { + + // 执行结果 + List result = new ArrayList<>(); + + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", id.toString() + ":" + CONTRACT_NOT_EXISTS)); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus())) { + String msg = id.toString() + + ":" + + CONTRACT_STATUS_NOT_DELETE.getMsg() + .replace("{}", DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + result.add(new JSONObject().putOnce("deleted", false).putOnce("msg", msg)); + } + + // 删除关联信息 + // 查询合同明细 + List detailDOS = contractDetailMapper + .selectList(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id); + if (detailDOS != null && !detailDOS.isEmpty()) { + detailDOS.forEach(detailDO -> { + Long detailDOId = detailDO.getId(); + + // 删除交货计划 + contractPlanMapper.delete(TableFieldConstants.BSE_CTRT_PLN_CTRT_DTL_ID, detailDOId.toString()); + }); + + // 删除合同明细 + contractDetailMapper.delete(TableFieldConstants.BSE_CTRT_DTL_CTRT_MAIN_ID, id.toString()); + } + + // 查询价款结算条款 + List formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + formulaDOS.forEach(formulaDO -> { + + // 价款结算条款ID + Long formulaDOId = formulaDO.getId(); + + // 删除基础系数配置 + contractCoefficientMapper.delete(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formulaDOId.toString()); + // 删除品位等级价配置 + contractGradeMapper.delete(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formulaDOId.toString()); + // 删除调整价配置 + contractDeductMapper.delete(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formulaDOId.toString()); + // 删除市场价配置 + contractPriceMapper.delete(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formulaDOId.toString()); + }); + + // 删除价款结算条款 + contractFormulaMapper.delete(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, id.toString()); + } + + // 删除参数降级规则 + contractDemoteMapper.delete(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, id.toString()); + + // 删除品位不计价规则 + contractNotMapper.delete(TableFieldConstants.BSE_CTRT_NT_CTRT_ID, id.toString()); + + // 更新合同状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_DELETED.getCode()); + contractMainMapper.updateById(contractMainDO); + // 删除合同数据 + contractMainMapper.deleteById(id); + + result.add(new JSONObject().putOnce("deleted", true).putOnce("msg", id.toString())); + }); + + return result; + } + + @Override + public Boolean submitApproval(Long id) { + + // 判断主键 + if (ObjectUtils.isEmpty(id)) { + throw exception(CONTRACT_ID_NOT_EXISTS); + } + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!(DictEnum.BSE_CTRT_STS_DRAFT.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_WAIT_AUDIT.getCode().equals(contractMainDO.getStatus()))) { + + throw exception(CONTRACT_STATUS_NOT_SUBMIT_APPROVAL, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 合同内容校验 + verifyContract(get(id)); + + // 查询登陆用户 + AdminUserRespDTO adminUserRespDTO = adminUserApi + .getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + + if (StringUtils.isNotBlank(contractMainDO.getProcessInstanceId())) { + + // 获取流程当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); + if (CollectionUtils.isNotEmpty(taskList)) { + BpmTaskRespDTO bpmTaskDto = taskList.get(taskList.size() - 1); + BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO(); + badrDto.setProcessInstanceId(contractMainDO.getProcessInstanceId()); // 流程实例id + badrDto.setTaskId(bpmTaskDto.getId()); // 当前审核任务节点id + BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData(); + + if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { + // 如果状态是驳回状态,需要重新创建一个流程实例 + BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO(); + pidtoNew.setProcessDefinitionKey(ProcessConstants.CONTRACT_APPROVAL_PROCESS); + pidtoNew.setBusinessKey(String.valueOf(id)); + String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData(); + if (StringUtils.isNotBlank(data)) { + // 获取流程当前审批的任务节点 + List taskListNew = bpmTaskApi.getTaskListByProcessInstanceId(data).getData(); + contractMainDO.setProcessInstanceId(data); + if (CollectionUtils.isNotEmpty(taskListNew)) { + BpmTaskRespDTO undoTask = taskListNew.get(taskListNew.size() - 1); + contractMainDO.setTaskNodeId(undoTask.getId()); + } + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); + contractMainMapper.updateById(contractMainDO); + return true; + } + } + } } else { - return false; + + // 未进入审批流程的合同,创建审批流程 + BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO(); + pidto.setProcessDefinitionKey(ProcessConstants.CONTRACT_APPROVAL_PROCESS); + pidto.setBusinessKey(String.valueOf(id)); + String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData(); + if (StringUtils.isNotBlank(data)) { + + // 获取流程当前审批的任务节点,更新合同审批状态 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(data).getData(); + contractMainDO.setProcessInstanceId(data); + if (CollectionUtils.isNotEmpty(taskList)) { + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); + contractMainDO.setTaskNodeId(undoTask.getId()); + } + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); + contractMainMapper.updateById(contractMainDO); + return true; + } + } + + return false; + } + + @Override + public Boolean approval(ApprovalReqVO reqVO) { + + // 合同主键ID + Long id = reqVO.getId(); + + // 判断主键 + if (ObjectUtils.isEmpty(id)) { + throw exception(CONTRACT_ID_NOT_EXISTS); + } + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode().equals(contractMainDO.getStatus())) { + + throw exception(CONTRACT_STATUS_NOT_APPROVAL, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 获取当前流程正在审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(contractMainDO.getProcessInstanceId()).getData(); + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); + + // 判断是否流程已经通过、驳回 + BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO(); + badrDto.setProcessInstanceId(contractMainDO.getProcessInstanceId()); // 流程实例id + badrDto.setTaskId(undoTask.getId()); // 当前审核任务节点id + BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData(); + + // 更新合同状态,状态需要根据流程的状态进行判断 + contractMainDO.setReviewOpinion(reqVO.getReviewOpinion()); + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.NOT_START.getStatus())) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); + } else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_UNDER_REVIEW.getCode()); + } else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.APPROVE.getStatus())) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode()); + } else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.REJECT.getStatus())) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_REJECTED.getCode()); + } else if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.CANCEL.getStatus())) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_REJECTED.getCode()); + } + + if (ObjectUtils.isNotEmpty(undoTask)) { + contractMainDO.setTaskNodeId(undoTask.getId()); + } + contractMainMapper.updateById(contractMainDO); + + // 需要调用bpm 审核接口更新审批中的状态 + if (DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(reqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskApproveReqDTO btarDto = new BpmTaskApproveReqDTO(); + btarDto.setId(undoTask.getId()); + btarDto.setReason(reqVO.getReviewOpinion()); + bpmProcessInstanceApi.approveTask(btarDto); + } + } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(reqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskRejectReqDTO btrrDto = new BpmTaskRejectReqDTO(); + btrrDto.setId(undoTask.getId()); + btrrDto.setReason(reqVO.getReviewOpinion()); + bpmProcessInstanceApi.rejectTask(btrrDto); + } + } + + return true; + } + + @Override + public List getNots(NotsQueryReqVO queryReqVO) { + // 查合同ID集合 + List contractIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(queryReqVO.getContractName()) || StringUtils.isNotEmpty(queryReqVO.getContractPaperNumber())) { + contractIds = getContractIds(queryReqVO.getContractName(), queryReqVO.getContractPaperNumber()); + } + return contractNotMapper.selectNots(contractIds, queryReqVO.getMaterialName(), queryReqVO.getElementName()); + } + + @Override + public List getDemotes(DemotesQueryReqVO queryReqVO) { + // 查合同ID集合 + List contractIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(queryReqVO.getContractName()) || StringUtils.isNotEmpty(queryReqVO.getContractPaperNumber())) { + contractIds = getContractIds(queryReqVO.getContractName(), queryReqVO.getContractPaperNumber()); + } + return contractDemoteMapper.selectDemotes(contractIds, queryReqVO.getMaterialName(), queryReqVO.getElementName()); + } + + @Override + public List getFormulas(FormulasQueryReqVO queryReqVO) { + // 查合同ID集合 + List contractIds = new ArrayList<>(); + if (StringUtils.isNotEmpty(queryReqVO.getContractName()) || StringUtils.isNotEmpty(queryReqVO.getContractPaperNumber())) { + contractIds = getContractIds(queryReqVO.getContractName(), queryReqVO.getContractPaperNumber()); + } + return contractFormulaMapper.selectFormulas(contractIds, queryReqVO.getMaterialName(), queryReqVO.getElementName()); + } + + @Override + public ContractRespDTO getFormulasByPaperNumber(String contractPaperNumber) { + + // 通过合同编号查询合同信息 + ContractMainDO contractMainDO = contractMainMapper + .selectOne(TableFieldConstants.BSE_CTRT_MAIN_CTRT_PPR_NUM, contractPaperNumber); + + // 合同不存在 + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同ID + Long contractId = contractMainDO.getId(); + + // 返回结果 + ContractRespDTO respDTO = new ContractRespDTO(); + BeanUtils.copyProperties(contractMainDO, respDTO); + + // 查询并设置合同明细 + List 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 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 formulaDOS = contractFormulaMapper + .selectList(TableFieldConstants.BSE_CTRT_FMU_CTRT_ID, contractId); + if (formulaDOS != null && !formulaDOS.isEmpty()) { + respDTO.setFormulas(BeanUtils.toBean(formulaDOS, FormulaRespDTO.class)); + + respDTO.getFormulas().forEach(formula -> { + + // 查询并设置基础系数配置 + List coefficientDOS = contractCoefficientMapper + .selectList(TableFieldConstants.BSE_CTRT_COEF_FMU_ID, formula.getId()); + if (coefficientDOS != null && !coefficientDOS.isEmpty()) { + formula.setCoefficients(BeanUtils.toBean(coefficientDOS, CoefficientRespDTO.class)); + } + // 查询并设置品位等级价配置 + List gradeDOS = contractGradeMapper + .selectList(TableFieldConstants.BSE_CTRT_GRD_FMU_ID, formula.getId()); + if (gradeDOS != null && !gradeDOS.isEmpty()) { + formula.setGrades(BeanUtils.toBean(gradeDOS, GradeRespDTO.class)); + } + // 查询并设置调整价配置 + List deductDOS = contractDeductMapper + .selectList(TableFieldConstants.BSE_CTRT_DDCT_FMU_ID, formula.getId()); + if (deductDOS != null && !deductDOS.isEmpty()) { + formula.setDeducts(BeanUtils.toBean(deductDOS, DeductRespDTO.class)); + } + // 查询并设置市场价配置 + List priceDOS = contractPriceMapper + .selectList(TableFieldConstants.BSE_CTRT_PRC_FMU_ID, formula.getId()); + if (priceDOS != null && !priceDOS.isEmpty()) { + formula.setPrices(BeanUtils.toBean(priceDOS, PriceRespDTO.class)); + } + }); + } + + // 查询并设置参数降级规则 + List demoteDOS = contractDemoteMapper + .selectList(TableFieldConstants.BSE_CTRT_DMOT_CTRT_ID, contractMainDO.getId()); + if (demoteDOS != null && !demoteDOS.isEmpty()) { + respDTO.setDemotes(BeanUtils.toBean(demoteDOS, DemoteRespDTO.class)); + } + + // 查询并设置品位不计价规则 + List 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 + public JSONObject submitErp(Long id) { + + JSONObject result = new JSONObject(); + + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + + // 合同数据不存在 + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!(DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_VOID.getCode().equals(contractMainDO.getStatus()) + || DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus()))) { + + throw exception(CONTRACT_STATUS_NOT_SUBMIT_ERP, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 生成ERP合同映射表 + ErpContractSaveReqVO erpContractVO = getErpContract(contractMainDO); + + // 调用ERP模块 + JSONObject erpResult = sendToErp(erpContractVO); + log.info("合同提交ERP结果:{}", erpResult); + result.putOnce("success", erpResult.getBool("success")); + + // 更新合同状态 + if (erpResult.getBool("success")) { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_FIND.getCode()); + contractMainMapper.updateById(contractMainDO); + + result.putOnce("data", erpResult.getStr("data")); + } else { + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_PUSH_ERROR.getCode()); + contractMainDO.setErpStatus(DictEnum.ERP_REQ_STS_RLBK.getCode()); + contractMainDO.setCause(erpResult.getStr("errMsg")); + contractMainMapper.updateById(contractMainDO); + + result.putOnce("data", erpResult.getStr("errMsg")); + } + + return result; + } + + private JSONObject sendToErp(ErpContractSaveReqVO erpContractVO) { + JSONObject erpResult = new JSONObject(); + try { + HashMap result = erpContractService.submitErp(erpContractVO); + if ("E".equals(result.get("flag"))) { + erpResult.putOnce("success", false); + erpResult.putOnce("errMsg", result.get("resStr")+":"+result.get("E_RESP")); + } else { + erpResult.putOnce("success", true); + erpResult.putOnce("data", result); + } + } catch (Exception e) { + erpResult.putOnce("success", false); + erpResult.putOnce("errMsg", e.getMessage()); + } + + return erpResult; + } + + @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; + } + + @Override + public RelationRespVO getRelation(Long id) { + + // 返回结果 + RelationRespVO resp = new RelationRespVO(); + + // 获得上游合同关联 + SystemRelativityDO upSystemRelativityDO = systemRelativityMapper + .selectOne(new LambdaQueryWrapperX() + .eq(SystemRelativityDO::getDownId, id) + ); + + // 获得下游合同关联 + SystemRelativityDO downSystemRelativityDO = systemRelativityMapper + .selectOne(new LambdaQueryWrapperX() + .eq(SystemRelativityDO::getUpId, id) + ); + + // 上游合同ID + if (upSystemRelativityDO != null) resp.setUpId(upSystemRelativityDO.getId()); + // 下游合同ID + if (downSystemRelativityDO != null) resp.setDownId(downSystemRelativityDO.getId()); + + return resp; + } + + @Override + public ResponseEntity download(List ids) { + try { + + // 返回的压缩包 + ByteArrayOutputStream zipsByte = new ByteArrayOutputStream(); + ZipOutputStream zips = new ZipOutputStream(zipsByte); + + // 遍历合同ID集合 + ids.forEach(id -> { + try { + // 查询合同信息 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + + // 单个合同文件压缩 + ByteArrayOutputStream zipByte = new ByteArrayOutputStream(); + ZipOutputStream zip = new ZipOutputStream(zipByte); + + // 关联的模版附件查询 + TmplInscBsnRelDO tmplInscBsnRelDO = tmplInscBsnRelMapper.selectOne("BSN_ID", id); + if (tmplInscBsnRelDO != null) { + if (StringUtils.isNotEmpty(tmplInscBsnRelDO.getCntt())) { + JSONObject cntt = new JSONObject(tmplInscBsnRelDO.getCntt()); + CommonResult fileRespResult = fileApi + .getFile(cntt.getLong("id")); + + zip.putNextEntry(new ZipEntry(System.currentTimeMillis() + fileRespResult.getData().getName())); + zip.write(fileRespResult.getData().getContent()); + zip.closeEntry(); + } + } + + // 上传模板附件 + if(StringUtils.isNotBlank(contractMainDO.getFileObject())){ + JSONArray fileObjects = new JSONArray(contractMainDO.getFileObject()); + for (int i = 0; i < fileObjects.size(); i++) { + JSONObject file = fileObjects.getJSONObject(i); + CommonResult fileRespResult = fileApi + .getFile(file.getLong("id")); + + zip.putNextEntry(new ZipEntry(System.currentTimeMillis() + fileRespResult.getData().getName())); + zip.write(fileRespResult.getData().getContent()); + zip.closeEntry(); + } + } + + // 合同其它附件 + if(StringUtils.isNotBlank(contractMainDO.getFileObjectOther())){ + JSONArray fileObjectOthers = new JSONArray(contractMainDO.getFileObjectOther()); + for (int i = 0; i < fileObjectOthers.size(); i++) { + JSONObject file = fileObjectOthers.getJSONObject(i); + CommonResult fileRespResult = fileApi + .getFile(file.getLong("id")); + + zip.putNextEntry(new ZipEntry(System.currentTimeMillis() + fileRespResult.getData().getName())); + zip.write(fileRespResult.getData().getContent()); + zip.closeEntry(); + } + } + + zip.finish(); + String zipName = String.format("%s(%s)相关文件.zip", contractMainDO.getContractName(), contractMainDO.getSystemContractNumber()); + zips.putNextEntry(new ZipEntry(zipName)); + zips.write(zipByte.toByteArray()); + zips.closeEntry(); + } catch (Exception e) { + log.info("添加压缩包异常:" + e.getMessage()); + } + }); + + zips.finish(); + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=contract-file-"+ System.currentTimeMillis()+".zip") + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .body(new ByteArrayResource(zipsByte.toByteArray())); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } + } + + @Override + public Boolean archive(List ids) { + + // 遍历合同ID + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_TERMINATED.getCode().equals(contractMainDO.getStatus())) { + throw exception(CONTRACT_STATUS_NOT_ARCHIVE, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置归档状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_ARCHIVED.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + }); + + return true; + } + + @Override + public Boolean cancel(List ids) { + + // 遍历合同ID + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) { + throw exception(CONTRACT_STATUS_NOT_ARCHIVE, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置作废状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_VOID.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + + // 重新提交erp + submitErp(id); + }); + + return true; + } + + @Override + public Boolean complete(List ids) { + + // 遍历合同ID + ids.forEach(id -> { + + // 查询合同是否存在 + ContractMainDO contractMainDO = contractMainMapper.selectById(id); + if (contractMainDO == null) { + throw exception(CONTRACT_NOT_EXISTS); + } + + // 合同状态校验 + if (!DictEnum.BSE_CTRT_STS_IN_PROGRESS.getCode().equals(contractMainDO.getStatus())) { + throw exception(CONTRACT_STATUS_NOT_ARCHIVE, + DictEnum.getByCodeAndType(contractMainDO.getStatus(), DictTypeConstants.BSE_CTRT_STS).getLabel()); + } + + // 设置完结状态 + contractMainDO.setStatus(DictEnum.BSE_CTRT_STS_TERMINATED.getCode()); + + // 更新合同 + contractMainMapper.updateById(contractMainDO); + + // 重新提交erp + submitErp(id); + }); + + return true; + } + + private ErpContractSaveReqVO getErpContract(ContractMainDO contractMainDO) { + + ErpContractSaveReqVO erpContractVO = new ErpContractSaveReqVO(); + // 合同主信息表主键:BSE_CTRT_MAIN + erpContractVO.setContractMainId(contractMainDO.getId()); + // 操作标识: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 erpContractPage = erpContractService.getErpContractPage(pageReqVO); + if (erpContractPage.getTotal() > 0) { + // 2、如果009接口返回值中“合同编号”字段存在值,并且与传入的相同,则OPTN_ID值为“1” + erpContractVO.setOperationId("1"); + } else { + // 3、如果009接口返回值中“合同编号”字段不存在值,根据合同主键查询映射表中是否存在没有删除的数据,如果有,值为“1”,如果没有,值为“0” + ErpContractDO erpContract = erpContractService.getErpContractByMainId(contractMainDO.getId()); + if (erpContract != null) { + erpContractVO.setOperationId("1"); + } else { + erpContractVO.setOperationId("0"); + } + } + // 合同编号:CTRT_PPR_NUM + erpContractVO.setContractPaperNumber(contractMainDO.getContractPaperNumber()); + // 合同名称:CTRT_NAME + erpContractVO.setContractName(contractMainDO.getContractName()); + // 合同类型编号:CTRT_TP_NUM + erpContractVO.setContractTypeNumber(contractMainDO.getConstructionTypeNumber()); + // 合同类型名称:CTRT_TP_NAME + erpContractVO.setContractTypeName(contractMainDO.getConstructionTypeName()); + // 合同类别:CTRT_CTGR + erpContractVO.setContractCategory(contractMainDO.getCategory()); + // 是否虚拟合同:IS_VRTL_CTRT + erpContractVO.setIsVirtualContract(contractMainDO.getContractVirtual()); + // 客商编号:SPLR_NUM 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司编码”,反之为“ERP甲方公司编码” + // 客商名称:SPLR_NAME 根据合同主表的收支方向判断,如果为“支出”,值为“ERP乙方公司名称”,反之为“ERP甲方公司名称” + if (DictEnum.ERP_RCV_DLVY_EXPENSES.getCode().equals(contractMainDO.getDirection())) { + erpContractVO.setSupplierNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setSupplierName(contractMainDO.getErpSalesCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + 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.getErpPurchaseCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpPurchaseCompanyName()); + } else if (DictEnum.ERP_RCV_DLVY_INCOME.getCode().equals(contractMainDO.getDirection())) { + erpContractVO.setContractImplementNumber(contractMainDO.getErpSalesCompanyNumber()); + erpContractVO.setContractSignNumber(contractMainDO.getErpSalesCompanyName()); + } + // 合同签订日期:SGN_DT + if (contractMainDO.getSignDate() != null) { + erpContractVO.setSignDate(contractMainDO.getSignDate().toLocalDate()); + } + // 合同起始日期:STRT_DT + if (contractMainDO.getStartDate() != null) { + erpContractVO.setStartDate(contractMainDO.getStartDate().toLocalDate()); + } + // 合同终止日期:STOP_DT + if (contractMainDO.getEndDate() != null) { + erpContractVO.setStopDate(contractMainDO.getEndDate().toLocalDate()); + } + // 币种编号:CUR + erpContractVO.setCurrency(contractMainDO.getCurrency()); + // 合同总金额(原币-含税):SRC_AMT + erpContractVO.setSourceAmount(contractMainDO.getCooAmount()); + // 合同总金额(本位币-含税):BSC_AMT + erpContractVO.setBasicAmount(contractMainDO.getBasicAmount()); + // 变更后合同总金额(原币-含税):CHG_SRC_AMT + erpContractVO.setChangeSourceAmount(contractMainDO.getChangeCooAmount()); + // 变更后合同总金额(本位币-含税):CHG_BSC_AMT + erpContractVO.setChangeBasicAmount(contractMainDO.getChangeBasicAmount()); + // 合同状态编号:STS_NUM 参照060接口 + erpContractVO.setStatusNumber(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getCode()); + // 合同状态名称:STS_NAME 参照060接口 + erpContractVO.setStatusName(DictEnum.SUBMIT_ERP_CTRT_STS_EF.getLabel()); + // 是否有预付款:IS_PPYM + erpContractVO.setIsPrepayment(contractMainDO.getHasPrepayment()); + // 预付款比例:PPYM_RTIO + erpContractVO.setPrepaymentRatio(contractMainDO.getPrepaymentRatio()); + // 预付款金额:PPYM_AMT + erpContractVO.setPrepaymentAmount(contractMainDO.getPrepaymentAmount()); + // 履约保证金-变更前(原币):SRC_BFR_BND + erpContractVO.setSourceBeforeBond(contractMainDO.getChangeCooAmountDeposit()); + // 履约保证金-变更前(本位币):BSC_BFR_BND + erpContractVO.setBasicBeforeBond(contractMainDO.getChangeBasicAmountDeposit()); + // 履约保证金-变更后(原币):SRC_AFT_BND + erpContractVO.setSourceAfterBond(contractMainDO.getChangeCooAmountDeposit()); + // 履约保证金-变更后(本位币):BSC_AFT_BND + erpContractVO.setBasicAfterBond(contractMainDO.getChangeBasicAmountDeposit()); + // 是否含质保金:IS_QUA_AMT + erpContractVO.setIsQualityassuranceAmount(contractMainDO.getHasQualityAmount()); + // 质保金比例:QUA_RTIO + erpContractVO.setQualityassuranceRatio(contractMainDO.getQualityRatio()); + // 质保金金额:QUA_AMT + erpContractVO.setQualityassuranceAmount(contractMainDO.getQualityAmount()); + // 是否内部企业:IS_INTL + erpContractVO.setIsInternal(contractMainDO.getIsInternal()); + // 收支性质:NTR + erpContractVO.setNature(contractMainDO.getDirection()); + // 备注信息:RMK + erpContractVO.setRemark(contractMainDO.getRemark()); + // 是否框架合同:IS_FMWK + erpContractVO.setIsFramework(contractMainDO.getIsFramework()); + // 境内/境外:IS_DOM + erpContractVO.setIsDomestic(contractMainDO.getIsDomestic()); + // 达到收款条件金额:PYEE_CND_AMT + erpContractVO.setPayeeConditionAmount(contractMainDO.getPayeeConditionAmount()); + // 建筑服务发生地:ARCH_SVC_PLCE + erpContractVO.setArchitectureService‌Place(contractMainDO.getArchitectureServicePlace()); + + // 公司编号 + erpContractVO.setCompanyId(contractMainDO.getCompanyId()); + // 公司名称 + erpContractVO.setCompanyName(contractMainDO.getCompanyName()); + // 部门编号 + erpContractVO.setDeptId(contractMainDO.getDeptId()); + // 部门名称 + erpContractVO.setDeptName(contractMainDO.getDeptName()); + // 岗位编号 + erpContractVO.setPostId(contractMainDO.getPostId()); + // 创建者 + erpContractVO.setCreatorName(contractMainDO.getCreatorName()); + // 更新者 + erpContractVO.setUpdaterName(contractMainDO.getUpdaterName()); + + return erpContractVO; + } + + /** + * 校验合同内容 + * + * @param contract 合同数据 + */ + private void verifyContract(ContractRespVO contract) { + + /* 合同基本信息 */ + // 甲方公司编号不能为空 + if (StringUtils.isBlank(contract.getPurchaseCompanyNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NUM_LABEL); + } + // 甲方公司名称不能为空 + if (StringUtils.isBlank(contract.getPurchaseCompanyName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_CPN_NAME_LABEL); + } + // 甲方地址不能为空 + if (StringUtils.isBlank(contract.getPurchaseAddress())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_ADR_LABEL); + } + // 甲方法定代表人能为空 + if (StringUtils.isBlank(contract.getPurchaseLeader())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PRCH_LDR_LABEL); + } + // 乙方公司编号不能为空 + if (StringUtils.isBlank(contract.getSalesCompanyNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NUM_LABEL); + } + // 乙方公司名称不能为空 + if (StringUtils.isBlank(contract.getSalesCompanyName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_CPN_NAME_LABEL); + } + // 乙方地址不能为空 + if (StringUtils.isBlank(contract.getSalesAddress())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_ADR_LABEL); + } + // 乙方法定代表人能为空 + if (StringUtils.isBlank(contract.getSalesPurchaseLeader())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SALE_PRCH_LDR_LABEL); + } + // 合同名称不能为空 + if (StringUtils.isBlank(contract.getContractName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_NAME_LABEL); + } + // 合同编号不能为空 + if (StringUtils.isBlank(contract.getContractPaperNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_PPR_NUM_LABEL); + } + // 类别不能为空 + if (StringUtils.isBlank(contract.getCategory())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTGR_LABEL); + } + // 收支性质不能为空 + if (StringUtils.isBlank(contract.getDirection())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_DRCT_LABEL); + } + // 签署日期不能为空 + if (contract.getSignDate() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SGN_DT_LABEL); + } + // 开始日期不能为空 + if (contract.getStartDate() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_STRT_DT_LABEL); + } + // 结束日期不能为空 + if (contract.getEndDate() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_END_DT_LABEL); + } + // 签署地不能为空 + if (StringUtils.isBlank(contract.getSignPlace())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_SGN_PLCE_LABEL); + } + + /* 金额信息 */ + // 币种不能为空 + if (StringUtils.isBlank(contract.getCurrency())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CUR_LABEL); + } + // 本币金额不能为空 + if (contract.getBasicAmount() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_LABEL); + } + // 原币金额不能为空 + if (contract.getCooAmount() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_LABEL); + } + // 是否有履约保证金不能为空 + if (StringUtils.isBlank(contract.getHasDeposit())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_DPST_LABEL); + } + // 是否有履约保证金为是的情况 + if (DictEnum.ERP_CTRT_YN_YES.getCode().equals(contract.getHasDeposit())) { + // 原币履约保证金不能为空 + if (contract.getCooAmountDeposit() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_COO_AMT_DPST_LABEL); + } + // 本币履约保证金不能为空 + if (contract.getBasicAmountDeposit() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_BSC_AMT_DPST_LABEL); + } + } + // 是否有预付款不能为空 + if (StringUtils.isBlank(contract.getHasPrepayment())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_PPYM_LABEL); + } + // 是否有预付款为是的情况 + if (DictEnum.ERP_CTRT_YN_YES.getCode().equals(contract.getHasPrepayment())) { + // 预付款比例不能为空 + if (contract.getPrepaymentRatio() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_RTIO_LABEL); + } + // 预付款金额不能为空 + if (contract.getPrepaymentAmount() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_PPYM_AMT_LABEL); + } + } + // 是否有质保金不能为空 + if (StringUtils.isBlank(contract.getHasQualityAmount())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_QLT_AMT_LABEL); + } + // 是否有质保金为是的情况 + if (DictEnum.ERP_CTRT_YN_YES.getCode().equals(contract.getHasPrepayment())) { + // 质保金比例不能为空 + if (contract.getQualityRatio() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_RTIO_LABEL); + } + // 质保金金额不能为空 + if (contract.getQualityAmount() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_QLT_AMT_LABEL); + } + } + // 是否先款后货不能为空 + if (StringUtils.isBlank(contract.getHasPayable())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_HS_PYBL_LABEL); + } + + /* 物料信息 */ + if (contract.getDetail() != null && !contract.getDetail().isEmpty()) { + contract.getDetail().forEach(detail -> { + // 物料名称不能为空 + if (StringUtils.isBlank(detail.getMaterialName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_DTL_MTRL_NAME_LABEL); + } + // 数量不能为空 + if (detail.getQuantity() == null) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_DTL_QTY_LABEL); + } + // 计量单位不能为空 + if (StringUtils.isBlank(detail.getUnit())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_DTL_UNT_LABEL); + } + }); + } + + /* 扩展信息 */ + // 是否框架合同不能为空 + if (StringUtils.isBlank(contract.getIsFramework())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_IS_FMWK_LABEL); + } + // 境内/境外不能为空 + if (StringUtils.isBlank(contract.getIsDomestic())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_IS_DOM_LABEL); + } + // 施工类型编号不能为空 + if (StringUtils.isBlank(contract.getConstructionTypeNumber())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CON_TP_NUM_LABEL); + } + // 施工类型名称不能为空 + if (StringUtils.isBlank(contract.getConstructionTypeName())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CON_TP_NAME_LABEL); + } + // 代理方不能为空 + if (StringUtils.isBlank(contract.getAgent())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_AGT_LABEL); + } + // 是否虚拟合同不能为空 + if (StringUtils.isBlank(contract.getContractVirtual())) { + throw exception(CONTRACT_DATA_NOT_EXISTS, TableFieldConstants.BSE_CTRT_MAIN_CTRT_VRTL_LABEL); } } @@ -519,11 +1926,11 @@ public class ContractServiceImpl implements ContractService { * 单据名称(拼音)-类型-公司编码-年月日-六位编号 * 如请款单: QKD-ZGQK-3000-20250915-00001 * - * @param contractType 合同类型 + * @param category 合同类别 * * @return 系统合同编号 */ - private String generateSystemContractNumber(String contractType) { + private String generateSystemContractNumber(String category) { // 单据名称(拼音) String documentName = "XTHT"; @@ -533,7 +1940,7 @@ public class ContractServiceImpl implements ContractService { String yearMounth8Bit = LocalDate.now() .format(DateTimeFormatter.ofPattern(DateConstants.DATE_FORMAT_YEAR_MONTH_DAY_8_BIT)); // 查询最大编号 - String numPrefix = documentName+"-"+contractType+"-"+companyId+"-"+yearMounth8Bit; + String numPrefix = documentName+"-"+category+"-"+companyId+"-"+yearMounth8Bit; QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.likeRight("SYS_CTRT_NUM", numPrefix); queryWrapper.orderByDesc("SYS_CTRT_NUM"); @@ -553,4 +1960,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-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java new file mode 100644 index 0000000..0454f86 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlService.java @@ -0,0 +1,80 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import java.util.*; + +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import jakarta.validation.*; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 采购订单明细 Service 接口 + * + * @author 后台管理-1 + */ +public interface PrchOrdDtlService { + + /** + * 创建采购订单明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + PrchOrdDtlRespVO createPrchOrdDtl(@Valid PrchOrdDtlSaveReqVO createReqVO); + + /** + * 更新采购订单明细 + * + * @param updateReqVO 更新信息 + */ + void updatePrchOrdDtl(@Valid PrchOrdDtlSaveReqVO updateReqVO); + + /** + * 删除采购订单明细 + * + * @param id 编号 + */ + void deletePrchOrdDtl(Long id); + + /** + * 批量删除采购订单明细 + * + * @param ids 编号 + */ + void deletePrchOrdDtlListByIds(List ids); + + /** + * 获得采购订单明细 + * + * @param id 编号 + * @return 采购订单明细 + */ + PrchOrdDtlDO getPrchOrdDtl(Long id); + + /** + * 获得采购订单明细分页 + * + * @param pageReqVO 分页查询 + * @return 采购订单明细分页 + */ + PageResult getPrchOrdDtlPage(PrchOrdDtlPageReqVO pageReqVO); + + /** + * 批量创建采购订单明细 + * + * @param createReqVOS 创建信息 + * @return List + */ + List batchCreatePrchOrdDtl(@Valid List createReqVOS); + /** + * 批量删除采购订单明细 + * + * @param ordIds 编号 + */ + void deletePrchOrdDtlListByOrdIds(List ordIds); + + List getDetailsByOrderId(Long ordId); +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java new file mode 100644 index 0000000..0384013 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PrchOrdDtlServiceImpl.java @@ -0,0 +1,122 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.PrchOrdDtlSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.convertList; +import static com.zt.plat.framework.common.util.collection.CollectionUtils.diffList; +import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.PRCH_ORD_DTL_NOT_EXISTS; + + +/** + * 采购订单明细 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +@Slf4j +public class PrchOrdDtlServiceImpl implements PrchOrdDtlService { + + @Resource + private PrchOrdDtlMapper prchOrdDtlMapper; + + @Override + public PrchOrdDtlRespVO createPrchOrdDtl(PrchOrdDtlSaveReqVO createReqVO) { + // 插入 + PrchOrdDtlDO prchOrdDtl = BeanUtils.toBean(createReqVO, PrchOrdDtlDO.class); + prchOrdDtlMapper.insert(prchOrdDtl); + // 返回 + return BeanUtils.toBean(prchOrdDtl, PrchOrdDtlRespVO.class); + } + + @Override + public void updatePrchOrdDtl(PrchOrdDtlSaveReqVO updateReqVO) { + // 校验存在 + validatePrchOrdDtlExists(updateReqVO.getId()); + // 更新 + PrchOrdDtlDO updateObj = BeanUtils.toBean(updateReqVO, PrchOrdDtlDO.class); + prchOrdDtlMapper.updateById(updateObj); + } + + @Override + public void deletePrchOrdDtl(Long id) { + // 校验存在 + validatePrchOrdDtlExists(id); + // 删除 + prchOrdDtlMapper.deleteById(id); + } + + @Override + public void deletePrchOrdDtlListByIds(List ids) { + // 校验存在 + validatePrchOrdDtlExists(ids); + // 删除 + prchOrdDtlMapper.deleteByIds(ids); + } + + private void validatePrchOrdDtlExists(List ids) { + List list = prchOrdDtlMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PRCH_ORD_DTL_NOT_EXISTS); + } + } + + private void validatePrchOrdDtlExists(Long id) { + if (prchOrdDtlMapper.selectById(id) == null) { + throw exception(PRCH_ORD_DTL_NOT_EXISTS); + } + } + + @Override + public PrchOrdDtlDO getPrchOrdDtl(Long id) { + return prchOrdDtlMapper.selectById(id); + } + + @Override + public PageResult getPrchOrdDtlPage(PrchOrdDtlPageReqVO pageReqVO) { + return prchOrdDtlMapper.selectPage(pageReqVO); + } + + @Override + public List batchCreatePrchOrdDtl(List createReqVOS) { + List prchOrdDtlDOS = BeanUtils.toBean(createReqVOS, PrchOrdDtlDO.class); + prchOrdDtlMapper.insertBatch(prchOrdDtlDOS); + log.info("批量创建采购订单明细成功,工插入【{}】条数据", prchOrdDtlDOS.size()); + return BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class); + } + + @Override + public void deletePrchOrdDtlListByOrdIds(List ordIds) { + //通过订单组件查询订单明细 + List prchOrdDtlDOS = prchOrdDtlMapper.selectList(new LambdaQueryWrapper<>(PrchOrdDtlDO.class).in(PrchOrdDtlDO::getOrdId, ordIds)); + //删除订单明细 + deletePrchOrdDtlListByIds(convertList(prchOrdDtlDOS, PrchOrdDtlDO::getId)); + } + + @Override + public List getDetailsByOrderId(Long ordId) { + + return prchOrdDtlMapper.selectList(new LambdaQueryWrapper<>(PrchOrdDtlDO.class).eq(PrchOrdDtlDO::getOrdId, ordId)); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java new file mode 100644 index 0000000..34cb420 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderService.java @@ -0,0 +1,127 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import jakarta.validation.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 采购订单 Service 接口 + * + * @author 后台管理-1 + */ +public interface PurchaseOrderService { + + /** + * 创建采购订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + PurchaseOrderRespVO createPurchaseOrder(@Valid PurchaseOrderSaveReqVO createReqVO); + + /** + * 更新采购订单 + * + * @param updateReqVO 更新信息 + */ + void updatePurchaseOrder(@Valid PurchaseOrderSaveReqVO updateReqVO); + + /** + * 删除采购订单 + * + * @param id 编号 + */ + void deletePurchaseOrder(Long id); + + /** + * 批量删除采购订单 + * + * @param ids 编号 + */ + void deletePurchaseOrderListByIds(List ids); + + /** + * 获得采购订单 + * + * @param id 编号 + * @return 采购订单 + */ + PurchaseOrderDO getPurchaseOrder(Long id,String splyBsnTp); + + /** + * 获得采购订单分页 + * + * @param pageReqVO 分页查询 + * @return 采购订单分页 + */ + PageResult getPurchaseOrderPage(PurchaseOrderPageReqVO pageReqVO); + + String submitOrder(Long id); + + String submitErp061(List ids); + + boolean submitErp062(Long id); + + /** + * 通过订单id更新订单状态 + * + * @param orderId status 订单id 订单状态 + * @return boolean + */ + boolean updateOrderStatus(Long orderId, String status); + /** + * 通过订单编号查询订单信息 + * + * @param orderNo 订单编号 + * @return 订单信息 + */ + List getOrderByOrderNo(List orderNo); + /** + * 通过订单编号查询订单信息 + * + * @param purchaseOrderRespVO 订单信息 + * + */ + void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO); + /** + * 修改订单状态 + * + * @param reqVO 订单状态 + * + */ + void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO); + /** + * 获取物料 + * + * @param orderNo 订单号 + * + */ + CommonResult getMaterial(String orderNo); + + /** + * 订单审核通过和不通过 + * + * @param purchaseorderReqVO 采购审核 + * + */ + boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO); + + List getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO); + + List getBindOrderByOrder(DownOrUpOrderReqVO reqVO); + + /** + * 关联订单;该接口仅供订单关联使用 + * + * @param LinkOrderReqVO 订单信息 + * @return 结果 + */ + Boolean linkOrder(@Valid LinkOrderReqVO LinkOrderReqVO); +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java new file mode 100644 index 0000000..aa78b12 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/purchaseorder/PurchaseOrderServiceImpl.java @@ -0,0 +1,668 @@ +package com.zt.plat.module.contractorder.service.purchaseorder; + +import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +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.*; +import com.zt.plat.module.bpm.enums.task.BpmProcessInstanceStatusEnum; +import com.zt.plat.module.contractorder.controller.admin.contract.vo.contract.ContractRespVO; +import com.zt.plat.module.contractorder.controller.admin.purchaseorder.vo.*; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.contract.SystemRelativityDO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PrchOrdDtlDO; +import com.zt.plat.module.contractorder.dal.dataobject.purchaseorder.PurchaseOrderDO; +import com.zt.plat.module.contractorder.dal.mysql.contract.SystemRelativityMapper; +import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PrchOrdDtlMapper; +import com.zt.plat.module.contractorder.dal.mysql.purchaseorder.PurchaseOrderMapper; +import com.zt.plat.module.contractorder.enums.contract.DictEnum; +import com.zt.plat.module.contractorder.enums.purchaseorder.PurchaseOrderStatusEnum; +import com.zt.plat.module.contractorder.service.contract.ContractService; +import com.zt.plat.module.contractorder.util.constants.ProcessDefinitionKeyConstants; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; +import com.zt.plat.module.erp.service.erp.ErpOrderService; +import com.zt.plat.module.system.api.sequence.SequenceApi; +import com.zt.plat.module.system.api.user.AdminUserApi; +import com.zt.plat.module.system.api.user.dto.AdminUserRespDTO; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.time.format.DateTimeFormatter; +import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.util.object.BeanUtils; + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.contractorder.enums.ErrorCodeConstants.CONTRACT_ORDER_EXISTS; +import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.*; + + +/** + * 采购订单 Service 实现类 + * + * @author 后台管理-1 + */ +@Slf4j +@Service +@Validated +public class PurchaseOrderServiceImpl implements PurchaseOrderService { + @Resource + private ErpOrderService erpOrderService; + + @Resource + private PurchaseOrderMapper purchaseOrderMapper; + @Resource + private PrchOrdDtlService prchOrdDtlService; + + @Resource + private BpmProcessInstanceApi bpmProcessInstanceApi; + @Resource + private AdminUserApi adminUserApi; + + @Resource + private BpmTaskApi bpmTaskApi; + @Resource + private PrchOrdDtlMapper prchOrdDtlMapper; + + @Resource + private SequenceApi sequenceApi; + + @Resource + private ContractService contractService; + + @Resource + private SystemRelativityMapper systemRelativityMapper; + + + @Override + @Transactional(rollbackFor = Exception.class) + public PurchaseOrderRespVO createPurchaseOrder(PurchaseOrderSaveReqVO createReqVO) { + // 插入 + PurchaseOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, PurchaseOrderDO.class); + if (Objects.equals(createReqVO.getIsPush(), 0)) { + purchaseOrder.setStatus(PurchaseOrderStatusEnum.DRAFT.getCode()); //设置初始状态 + } else { + purchaseOrder.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode()); + } + //生成订单号 + String orderNumber = generateOrderNumber(purchaseOrder.getMtrlTp()); + purchaseOrder.setSystemOrderNumber(orderNumber); + purchaseOrderMapper.insert(purchaseOrder); + + if (createReqVO.getPrchOrdDtlSaveReqVOS().isEmpty()) { + return BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + } + //批量插入订单明细 + createReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(purchaseOrder.getId())); + List prchOrdDtlRespVOS = prchOrdDtlService.batchCreatePrchOrdDtl(createReqVO.getPrchOrdDtlSaveReqVOS()); + PurchaseOrderRespVO purchaseOrderRespVO = BeanUtils.toBean(purchaseOrder, PurchaseOrderRespVO.class); + purchaseOrderRespVO.setPrchOrdDtlRespVOS(prchOrdDtlRespVOS); + return purchaseOrderRespVO; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updatePurchaseOrder(PurchaseOrderSaveReqVO updateReqVO) { + // 校验存在 + validatePurchaseOrderExists(updateReqVO.getId()); + // 更新 + PurchaseOrderDO updateObj = BeanUtils.toBean(updateReqVO, PurchaseOrderDO.class); + purchaseOrderMapper.updateById(updateObj); + //删除订单明细 +// prchOrdDtlService.deletePrchOrdDtlListByOrdIds(Collections.singletonList(updateReqVO.getId())); +// log.info("删除旧的订单明细成功"); + // 返回 + //批量插入订单明细 +// updateReqVO.getPrchOrdDtlSaveReqVOS().forEach(prchOrdDtlSaveReqVO -> prchOrdDtlSaveReqVO.setOrdId(updateReqVO.getId())); +// prchOrdDtlService.batchCreatePrchOrdDtl(updateReqVO.getPrchOrdDtlSaveReqVOS()); + log.info("更新订单明细成功"); + } + + @Override + public void deletePurchaseOrder(Long id) { + // 校验存在 + validatePurchaseOrderExists(id); + // 删除 + purchaseOrderMapper.deleteById(id); + } + + @Override + public void deletePurchaseOrderListByIds(List ids) { + // 校验存在 + validatePurchaseOrderExists(ids); + // 删除 + purchaseOrderMapper.deleteByIds(ids); + //删除根据订单号订单明细 + prchOrdDtlService.deletePrchOrdDtlListByOrdIds(ids); + + } + + private void validatePurchaseOrderNosExists(List orderNos) { + List list = purchaseOrderMapper.selectList(new LambdaQueryWrapper().in(PurchaseOrderDO::getSystemOrderNumber, orderNos)); + if (CollUtil.isEmpty(list) || list.size() != orderNos.size()) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } + + private void validatePurchaseOrderExists(List ids) { + List list = purchaseOrderMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } + + private void validatePurchaseOrderExists(Long id) { + if (purchaseOrderMapper.selectById(id) == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } + + @Override + public PurchaseOrderDO getPurchaseOrder(Long id, String splyBsnTp) { + return purchaseOrderMapper.selectOne(new LambdaQueryWrapper().eq(PurchaseOrderDO::getId, id).eq(splyBsnTp != null && !splyBsnTp.isEmpty(), PurchaseOrderDO::getSplyBsnTp, splyBsnTp)); + } + + @Override + public PageResult getPurchaseOrderPage(PurchaseOrderPageReqVO pageReqVO) { + return purchaseOrderMapper.selectPage(pageReqVO); + } + + + @Override + @Transactional + public String submitOrder(Long id) { + if (ObjectUtils.isEmpty(id)) { + throw exception(ORDER_ID_NOT_EXISTS); + } + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(id); + if (ObjectUtils.isEmpty(purchaseOrderDO)) { + throw exception(ORDER_ID_NOT_EXISTS); + } + AdminUserRespDTO adminUserRespDTO = adminUserApi.getUser(SecurityFrameworkUtils.getLoginUserId()).getData(); + if (ObjectUtils.isEmpty(purchaseOrderDO.getProcessInstanceId())) { + BpmProcessInstanceCreateReqDTO pidto = new BpmProcessInstanceCreateReqDTO(); + pidto.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); + pidto.setBusinessKey(String.valueOf(id)); + String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidto).getData(); + if (StringUtils.isNotBlank(data)) { + // 获取流程当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(data).getData(); + purchaseOrderDO.setProcessInstanceId(data); + if (CollectionUtils.isNotEmpty(taskList)) { + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1);// 获取流程当前审批的任务节点 + purchaseOrderDO.setTaskId(undoTask.getId()); + } + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.APPROVING.getCode()); // + purchaseOrderMapper.updateById(purchaseOrderDO); + return "提交审批成功"; + } + + } else { + // 获取流程当前审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(purchaseOrderDO.getProcessInstanceId()).getData(); + if (CollectionUtils.isNotEmpty(taskList)) { + BpmTaskRespDTO bpmTaskDto = taskList.get(taskList.size() - 1); + BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO(); + badrDto.setProcessInstanceId(purchaseOrderDO.getProcessInstanceId()); // 流程实例id + badrDto.setTaskId(bpmTaskDto.getId()); // 当前审核任务节点id + BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData(); + if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { + // 如果状态是驳回状态,需要重新创建一个流程实例 + BpmProcessInstanceCreateReqDTO pidtoNew = new BpmProcessInstanceCreateReqDTO(); + pidtoNew.setProcessDefinitionKey(ProcessDefinitionKeyConstants.PURCHASE_ORDER_REVIEW_PROCESS); + pidtoNew.setBusinessKey(String.valueOf(id)); + String data = bpmProcessInstanceApi.createProcessInstance(adminUserRespDTO.getId(), pidtoNew).getData(); + if (StringUtils.isNotBlank(data)) { + // 获取流程当前审批的任务节点 + List taskListNew = bpmTaskApi.getTaskListByProcessInstanceId(data).getData(); + purchaseOrderDO.setProcessInstanceId(data); + if (CollectionUtils.isNotEmpty(taskListNew)) { + BpmTaskRespDTO undoTask = taskListNew.get(taskListNew.size() - 1); + purchaseOrderDO.setTaskId(undoTask.getId()); + } + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.APPROVING.getCode()); + purchaseOrderMapper.updateById(purchaseOrderDO); + return "提交审批成功"; + } + } else if (BpmProcessInstanceStatusEnum.APPROVE.getStatus().equals(approvalDetail.getStatus())) { + return "该授信单审批流程已经审批通过"; + } + } + } + log.info("流程实例id:{}", purchaseOrderDO.getProcessInstanceId()); + return "提交审批成功"; + } + + @Override + @Transactional + public String submitErp061(List ids) { + // 通过订单号查询订单 + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(ids); + if (!purchaseOrderWithDetailsVOS.isEmpty()) { + purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { + ErpOrderSaveReqVO erpOrderSaveReqVO = new ErpOrderSaveReqVO(); + PurchaseOrderDO order = purchaseOrderWithDetailsVO.getPurchaseOrder(); + erpOrderSaveReqVO.setOrderNo(order.getSystemOrderNumber()); + // 1. 处理抬头信息(Head) + ErpOrderSaveReqVO.Head head = new ErpOrderSaveReqVO.Head(); + head.setComp_code(order.getCompanyNumber()); // 公司编码 -> 公司代码 + head.setVendor(order.getSupplierNumber()); // 客商编码 -> 供应商帐号 + head.setDoc_type(order.getType()); // 订单类型 -> 采购凭证类型 + head.setDoc_date(order.getVoucherDate() != null ? order.getVoucherDate().toLocalDate() : null); // 凭证日期 -> 采购凭证日期 + head.setPurch_org(order.getPurchaseOrganizationCustomsDeclaration()); // 采购组织编码 -> 采购组织 + head.setPur_group(order.getPurchaseGroup()); // 采购组编码 -> 采购组 + head.setCurrency(order.getCurrencyNumber()); // 货币码 -> 货币码 + head.setExch_rate(order.getExchangeRate()); // 汇率 -> 汇率 + erpOrderSaveReqVO.setHead(head); + + // 2. 处理抬头扩展信息(Exte) + ErpOrderSaveReqVO.Exte exte = new ErpOrderSaveReqVO.Exte(); + exte.setZzhth(order.getPaperContractNumber()); // 合同纸质合同号 -> 纸质合同号 + exte.setZxxyh(order.getAgreementNumber()); // 小协议号 -> 小协议号 + exte.setZnote(order.getRemark()); // 备注 -> 备注 + exte.setZlifnr(order.getAgentNumber()); // 代理方编码 -> 代理方 + erpOrderSaveReqVO.setExte(exte); + + List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() + .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) + .toList(); + JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); + erpOrderSaveReqVO.setAccts(jsonArray); + // 3. 处理行项目信息(Item) + List details = purchaseOrderWithDetailsVO.getOrderDetails(); + if (details != null && !details.isEmpty()) { + List items = new ArrayList<>(); + for (PrchOrdDtlDO detail : details) { + ErpOrderSaveReqVO.Item item = new ErpOrderSaveReqVO.Item(); + + // 3.1 行项目基本信息 + item.setPo_item(detail.getLineNum() != null ? detail.getLineNum().intValue() : null); // 行项目 -> 行号 + item.setMaterial(detail.getMtrlNum()); // 物料编码 -> 物料号 + item.setPlant(detail.getRcvFactNum()); // 收货工厂编码 -> 工厂 + item.setStge_loc(detail.getRcvWrhNum()); // 收货库位编码 -> 库存地点 + item.setQuantity(detail.getQty()); // 暂估数量 -> 数量 + item.setPo_unit(detail.getUnt()); // 计量单位 -> 计量单位 + item.setNet_price(detail.getInTaxUprc()); // 含税单价 -> 含税单价 + item.setPrice_unit(detail.getPrcUnt() != null ? detail.getPrcUnt().intValue() : 1); // 价格单位 -> 价格单位 + item.setTax_code(detail.getTaxNum()); // 税码 -> 税码 + item.setGr_basediv(detail.getIsGrInv()); // 是否基于GR的发票校验 -> 基于GR的发票校验 + item.setUnlimited_dlv(detail.getIsUnlRcv()); // 是否允许无限制收货 -> 允许无限制过量交货 + item.setBatch(detail.getBat()); // 批次 -> 批次 + item.setAcctasscat(detail.getActsCtgr()); // 科目分配类别 -> 科目分配类别 + item.setMatl_group(detail.getMtrlCpntNum()); // 物料组编码 -> 物料组 + item.setShort_text(detail.getShrtTxt()); // 短文本 -> 短文本 + item.setRet_item(detail.getIsRlbkCgo()); // 退货标识 -> 退货项目标识 + item.setFree_item(detail.getIsFreeRcv()); // 是否免费收货标识 -> 免费项目标识 + item.setVendrbatch(String.valueOf(detail.getOutLineNum())); // 外部行项目号 -> 外部行项目号 + item.setNote_xq(detail.getRmkUnt()); // 备注信息-需求单位 -> 备注信息-需求单位 + item.setNote_wl(detail.getRmkMtrl()); // 备注信息-物料详细 -> 备注信息-物料详细 + + // 处理交货起止日期(格式:YYYYMMDD-YYYYMMDD) + StringBuilder vendMat = new StringBuilder(); + if (detail.getBgnDt() != null) { + vendMat.append(detail.getBgnDt().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + vendMat.append("-"); + if (detail.getDdlDt() != null) { + vendMat.append(detail.getDdlDt().format(DateTimeFormatter.ofPattern("yyyyMMdd"))); + } + item.setVend_mat(vendMat.toString()); + + // 3.2 行项目扩展信息(Itex) + ErpOrderSaveReqVO.Itex itex = new ErpOrderSaveReqVO.Itex(); + itex.setZmatnr(detail.getSaleMtrlNum()); // 销售物料号 -> 销售物料号 + itex.setZaufnr(detail.getInOrd()); // 统计型内部订单 -> 统计型内部订单 + itex.setZpurty(detail.getPrchCtgr()); // 采购类别 -> 采购类别 + itex.setZmenge(detail.getOrigWet()); // 原料湿重 -> 原料湿重 + item.setItex(itex); + + // 3.4 委托加工物料信息(Comp) - 简化处理,实际需解析JSON +// List comps = new ArrayList<>(); +// if (detail.getEnttDtl() != null && !detail.getEnttDtl().isEmpty()) { +// // 假设ENTT_DTL是JSON数组,实际需根据具体格式解析 +// ErpOrderSaveReqVO.Comp comp = new ErpOrderSaveReqVO.Comp(); +// comp.setSched_line(1); // 计划行号(示例) +// comp.setItem_no(1); // 项目编号(示例) +// // 其他字段需从JSON中解析:material、plant、entry_quantity等 +// comps.add(comp); +// } +// item.setComps(comps); + + items.add(item); + } + erpOrderSaveReqVO.setItems(items); + } + + // 4. 推送ERP并处理返回结果 + String s = erpOrderService.submitOrderToErp061(erpOrderSaveReqVO); + log.info("订单推送成功,订单id【{}】", order.getId()); + + // 解析ERP返回的ID + JSONObject jsonObject = JSONObject.parseObject(s); + String erpId = jsonObject.getString("id"); + if (erpId != null && !erpId.isEmpty()) { + // 更新订单的ERP编号 + PurchaseOrderDO updateDO = new PurchaseOrderDO(); + updateDO.setId(order.getId()); + updateDO.setOrderSAPNumber(erpId); + int updateCount = purchaseOrderMapper.updateById(updateDO); + if (updateCount > 0) { + log.info("更新订单ERPID成功,订单id【{}】", order.getId()); + } else { + log.error("订单更新失败,订单id【{}】", order.getId()); + throw new RuntimeException("订单更新失败"); + } + } else { + log.error("ERP返回ID为空,订单id【{}】", order.getId()); + throw new RuntimeException("ERP返回ID为空"); + } + }); + return "ERP推送成功"; + } else { + return "订单不存在"; + } + } + + @Override + public boolean submitErp062(Long id) { + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByIds(List.of(id)); + if (purchaseOrderWithDetailsVOS.isEmpty()) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + if (purchaseOrderWithDetailsVOS.get(0).getPurchaseOrder().getOrderSAPNumber().isEmpty()) { + return true; + } + ErpOrderUpdateReqVO erpOrderUpdateReqVO = new ErpOrderUpdateReqVO(); + setValue(erpOrderUpdateReqVO, purchaseOrderWithDetailsVOS.get(0)); + erpOrderService.submitOrderToErp062(erpOrderUpdateReqVO); + return true; + } + + @Override + public boolean updateOrderStatus(Long orderId, String status) { + // 校验存在 + validatePurchaseOrderExists(orderId); + PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(status); + if (byCode == null) { + throw exception(PURCHASE_ORDER_STATUS_ERROR); + } + return purchaseOrderMapper.updateById(new PurchaseOrderDO().setId(orderId).setStatus(status)) > 0; + } + + @Override + public List getOrderByOrderNo(List orderNos) { + List purchaseOrderWithDetailsVOS = purchaseOrderMapper.selectOrderByOrderNos(orderNos); + List purchaseOrderDetailsRespVOS = new ArrayList<>(); + purchaseOrderWithDetailsVOS.forEach(purchaseOrderWithDetailsVO -> { + PurchaseOrderDetailsRespVO purchaseOrderDetailsRespVO = BeanUtils.toBean(purchaseOrderWithDetailsVO.getPurchaseOrder(), PurchaseOrderDetailsRespVO.class); + purchaseOrderDetailsRespVO.setOrderDetails(BeanUtils.toBean(purchaseOrderWithDetailsVO.getOrderDetails(), PrchOrdDtlDetailsRespVO.class)); + purchaseOrderDetailsRespVOS.add(purchaseOrderDetailsRespVO); + }); + return purchaseOrderDetailsRespVOS; + } + + @Override + public void setOrderDetails(PurchaseOrderRespVO purchaseOrderRespVO) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderRespVO.getId()); + if (purchaseOrderDO == null) { + return; + } + List prchOrdDtlDOS = prchOrdDtlMapper.selectList(new LambdaQueryWrapper().eq(PrchOrdDtlDO::getOrdId, purchaseOrderDO.getId())); + purchaseOrderRespVO.setPrchOrdDtlRespVOS(BeanUtils.toBean(prchOrdDtlDOS, PrchOrdDtlRespVO.class)); + } + + @Override + public void updateOrderStatusByIdOrOrderNo(PurchaseOrderStsReqVO reqVO) { + // 校验存在 + if (reqVO.getIds() != null) { + validatePurchaseOrderExists(reqVO.getIds()); + } + if (reqVO.getOrderNos() != null) { + validatePurchaseOrderNosExists(reqVO.getOrderNos()); + } + PurchaseOrderStatusEnum byCode = PurchaseOrderStatusEnum.getByCode(reqVO.getSts()); + if (byCode == null) { + throw exception(PURCHASE_ORDER_STATUS_ERROR); + } + purchaseOrderMapper.update(new LambdaUpdateWrapper().in(reqVO.getOrderNos() != null, PurchaseOrderDO::getSystemOrderNumber, reqVO.getOrderNos()).in(reqVO.getIds() != null, PurchaseOrderDO::getId, reqVO.getIds()).set(PurchaseOrderDO::getStatus, reqVO.getSts())); + } + + @Override + public CommonResult getMaterial(String orderNo) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectOne(new LambdaQueryWrapper().eq(PurchaseOrderDO::getSystemOrderNumber, orderNo)); + if (purchaseOrderDO == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + String mtrlTp = purchaseOrderDO.getMtrlTp(); + if ("RAW".equals(mtrlTp)) { + //原料 + MaterialRespVO materialRespVO = new MaterialRespVO(); + materialRespVO.setMaterialType(mtrlTp); + materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt()); + materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber()); + MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails(); + materialDetails.setMaterialCode(purchaseOrderDO.getMaterialNumber()); + materialDetails.setMaterialName(purchaseOrderDO.getMaterialName()); + materialDetails.setMaterialUnit(purchaseOrderDO.getUnt()); + materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); + materialRespVO.setMaterialDetails(List.of(materialDetails)); + return CommonResult.success(materialRespVO); + } else { + List detailsByOrderIds = prchOrdDtlService.getDetailsByOrderId(purchaseOrderDO.getId()); + MaterialRespVO materialRespVO = new MaterialRespVO(); + materialRespVO.setMaterialType(mtrlTp); + materialRespVO.setMaterialUnit(purchaseOrderDO.getUnt()); + materialRespVO.setId(String.valueOf(purchaseOrderDO.getId())); + materialRespVO.setOrderNo(purchaseOrderDO.getSystemOrderNumber()); + materialRespVO.setMaterialDetails(detailsByOrderIds.stream().map(prchOrdDtlDO -> { + MaterialRespVO.MaterialDetails materialDetails = new MaterialRespVO.MaterialDetails(); + materialDetails.setMaterialCode(prchOrdDtlDO.getMtrlNum()); + materialDetails.setMaterialName(prchOrdDtlDO.getMtrlName()); + materialDetails.setMaterialUnit(prchOrdDtlDO.getUnt()); + materialDetails.setMaterialType(purchaseOrderDO.getMtrlTp()); + return materialDetails; + }).toList()); + return CommonResult.success(materialRespVO); + } + + } + + @Override + public Boolean linkOrder(LinkOrderReqVO LinkOrderReqVO) { + + SystemRelativityDO saveDO = new SystemRelativityDO(); + saveDO.setStatus(DictEnum.BSE_SYS_REL_TP_ORDER.getCode()); + saveDO.setUpId(LinkOrderReqVO.getUpOrderId()); + saveDO.setDownId(LinkOrderReqVO.getDownOrderId()); + //判断订单有没有关联过 + if (systemRelativityMapper.selectCount(new LambdaQueryWrapper().eq(SystemRelativityDO::getUpId, saveDO.getUpId()).eq(SystemRelativityDO::getDownId, saveDO.getDownId())) > 0) { + throw exception(CONTRACT_ORDER_EXISTS); + } + return systemRelativityMapper.insert(saveDO) > 0; + } + + private void setValue(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + //head + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseOrderWithDetailsVO.getPurchaseOrder().getId()); + erpOrderUpdateReqVO.setPoNumber(purchaseOrderWithDetailsVO.getPurchaseOrder().getOrderSAPNumber()).setDeleteInd(purchaseOrderDO.getDeleted() ? 1 : 0).setCurrency(purchaseOrderWithDetailsVO.getPurchaseOrder().getCurrencyNumber()).setExchRate(purchaseOrderWithDetailsVO.getPurchaseOrder().getExchangeRate()); + //exte + erpOrderUpdateReqVO.setZzhth(purchaseOrderWithDetailsVO.getPurchaseOrder().getPaperContractNumber()).setZxxyh(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber()).setZnote(purchaseOrderWithDetailsVO.getPurchaseOrder().getRemark()).setZlifnr(purchaseOrderWithDetailsVO.getPurchaseOrder().getAgreementNumber()); + //item + setItems(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); + //itex + setItex(erpOrderUpdateReqVO, purchaseOrderWithDetailsVO); + //acct + List actsCtgrDtlList = purchaseOrderWithDetailsVO.getOrderDetails().stream() + .map(PrchOrdDtlDO::getActsCtgrDtl).map(JSONObject::parseObject) + .toList(); + JSONArray jsonArray = JSONArray.from(actsCtgrDtlList); + + // 设置到对象中 + erpOrderUpdateReqVO.setAccts(jsonArray); + } + + private void setItems(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + List items = new ArrayList<>(); + purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { + PrchOrdDtlDO prchOrdDtlDO = prchOrdDtlMapper.selectById(orderDetail.getId()); + ErpOrderUpdateReqVO.item item = new ErpOrderUpdateReqVO.item(); // item + item.setPo_item(prchOrdDtlDO.getLineNum());//行号 + item.setMaterial(prchOrdDtlDO.getRcvFactNum());//物料号 + item.setPlant(prchOrdDtlDO.getRcvFactNum());//工厂 + item.setStge_loc(prchOrdDtlDO.getRcvWrhNum());//库位 + item.setQuantity(String.valueOf(prchOrdDtlDO.getQty()));// 数量 + item.setPo_unit(prchOrdDtlDO.getUnt());// 计量单位 + item.setNet_price(prchOrdDtlDO.getInTaxUprc());// 含税单价 + item.setTax_code(prchOrdDtlDO.getTaxNum());//税码 + item.setAcctasscat(prchOrdDtlDO.getActsCtgr());//科目分配类别 + item.setMatl_group(prchOrdDtlDO.getMtrlCpntNum());//物料组 + item.setShort_text(prchOrdDtlDO.getShrtTxt());//短文本 + item.setDelete_ind(prchOrdDtlDO.getDeleted() ? 1 : 0);//行项目删除标识 + items.add(item); + }); + erpOrderUpdateReqVO.setItems(items); + } + + private void setItex(ErpOrderUpdateReqVO erpOrderUpdateReqVO, PurchaseOrderWithDetailsVO purchaseOrderWithDetailsVO) { + List itexs = new ArrayList<>(); + purchaseOrderWithDetailsVO.getOrderDetails().forEach(orderDetail -> { + ErpOrderUpdateReqVO.itex itex = new ErpOrderUpdateReqVO.itex(); // itex + itex.setPo_item(orderDetail.getLineNum()); //行号 + itex.setZpurty(orderDetail.getPrchCtgr());//采购类别 + itex.setZmatnr(orderDetail.getOrigWet()); // 原料湿重 + itexs.add(itex); + }); + erpOrderUpdateReqVO.setItexs(itexs); + } + + private String generateOrderNumber(String materialType) { + return sequenceApi.getNextSequence("PURCHASE_ORDER_NUMBER", null, null).getData(); + } + + @Override + public boolean orderPassReject(PurchaseorderReqVO purchaseorderReqVO) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(purchaseorderReqVO.getId()); + if (ObjectUtils.isEmpty(purchaseOrderDO)) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + // 获取当前流程正在审批的任务节点 + List taskList = bpmTaskApi.getTaskListByProcessInstanceId(purchaseOrderDO.getProcessInstanceId()).getData(); + BpmTaskRespDTO undoTask = taskList.get(taskList.size() - 1); + + // 判断是否流程已经通过、驳回 + BpmApprovalDetailReqDTO badrDto = new BpmApprovalDetailReqDTO(); + badrDto.setProcessInstanceId(purchaseOrderDO.getProcessInstanceId()); // 流程实例id + badrDto.setTaskId(undoTask.getId()); // 当前审核任务节点id + BpmApprovalDetailRespDTO approvalDetail = bpmProcessInstanceApi.getApprovalDetail(SecurityFrameworkUtils.getLoginUserId(), badrDto).getData(); + //如果审核通过 + if (BpmProcessInstanceStatusEnum.APPROVE.getStatus().equals(approvalDetail.getStatus())) { + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.TO_SUBMIT_ERP.getCode()); + } else if (BpmProcessInstanceStatusEnum.REJECT.getStatus().equals(approvalDetail.getStatus())) { + //如果审核不通过 + purchaseOrderDO.setStatus(PurchaseOrderStatusEnum.DRAFT.getCode()); + } + //设置审核意见 + purchaseOrderDO.setReviewOpinion(purchaseorderReqVO.getReviewOpinion()); + if (ObjectUtils.isNotEmpty(undoTask)) { + purchaseOrderDO.setTaskId(undoTask.getId()); + } + purchaseOrderMapper.updateById(purchaseOrderDO); //更新状态 + + // 需要调用bpm 审核接口更新审批中的状态 + if (DictEnum.BSE_CTRT_STS_WAIT_PUSH.getCode().equals(purchaseorderReqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskApproveReqDTO btarDto = new BpmTaskApproveReqDTO(); + btarDto.setId(undoTask.getId()); + btarDto.setReason(purchaseorderReqVO.getReviewOpinion()); + bpmProcessInstanceApi.approveTask(btarDto); + } + } else if (DictEnum.BSE_CTRT_STS_REJECTED.getCode().equals(purchaseorderReqVO.getStatus()) && ObjectUtils.isNotEmpty(undoTask)) { + if (approvalDetail.getStatus().equals(BpmProcessInstanceStatusEnum.RUNNING.getStatus())) { + BpmTaskRejectReqDTO btrrDto = new BpmTaskRejectReqDTO(); + btrrDto.setId(undoTask.getId()); + btrrDto.setReason(purchaseorderReqVO.getReviewOpinion()); + bpmProcessInstanceApi.rejectTask(btrrDto); + } + } + return false; + } + + @Override + public List getOrderByOrderIdAndType(DownOrUpOrderReqVO reqVO) { + PurchaseOrderDO purchaseOrderDO = purchaseOrderMapper.selectById(reqVO.getOrderId()); + if (purchaseOrderDO == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + String contractNumber = purchaseOrderDO.getContractNumber();// 合同号 + + ContractRespVO upRelation = null; + if ("up".equals(reqVO.getOrderType())) { + log.info("获取上游订单"); + //上游 + upRelation = contractService.getUpRelation(Long.valueOf(contractNumber)); + } else { + //下游 + log.info("获取下游订单"); + upRelation = contractService.getDownRelation(Long.valueOf(contractNumber)); + } + List orderList = new ArrayList<>(); + if (upRelation != null) { + String systemContractNumber = upRelation.getSystemContractNumber(); + + List purchaseOrderDOS = purchaseOrderMapper.selectList(new LambdaQueryWrapper().eq(PurchaseOrderDO::getContractNumber, systemContractNumber)); + purchaseOrderDOS.forEach(p -> { + DownOrUpOrderRespVO downOrUpOrderRespVO = new DownOrUpOrderRespVO(); + downOrUpOrderRespVO.setOrderId(String.valueOf(p.getId())); + downOrUpOrderRespVO.setOrderNo(p.getSystemOrderNumber()); + downOrUpOrderRespVO.setOrderType(reqVO.getOrderType()); + downOrUpOrderRespVO.setContractId(String.valueOf(p.getId())); + downOrUpOrderRespVO.setContractName(p.getContractName()); + downOrUpOrderRespVO.setContractNumber(p.getContractNumber()); + orderList.add(downOrUpOrderRespVO); + } + ); + + } + return orderList; + } + + @Override + public List getBindOrderByOrder(DownOrUpOrderReqVO reqVO) { + List orderList = new ArrayList<>(); + if ("up".equals(reqVO.getOrderType())) { + log.info("获取上游订单"); + //上游 + List systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper().eq(SystemRelativityDO::getDownId, reqVO.getOrderId())); + if (!systemRelativityDOS.isEmpty()) { + systemRelativityDOS.forEach(systemRelativityDO -> { + orderList.add(systemRelativityDO.getUpId().toString()); + }); + } + } else { + //下游 + log.info("获取下游订单"); + List systemRelativityDOS = systemRelativityMapper.selectList(new LambdaQueryWrapper().eq(SystemRelativityDO::getUpId, reqVO.getOrderId())); + if (!systemRelativityDOS.isEmpty()) { + systemRelativityDOS.forEach(systemRelativityDO -> { + orderList.add(systemRelativityDO.getDownId().toString()); + }); + } + } + return orderList; + } +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailService.java new file mode 100644 index 0000000..1fe03e8 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailService.java @@ -0,0 +1,85 @@ +package com.zt.plat.module.contractorder.service.salesorder; + +import java.util.*; + +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO; +import jakarta.validation.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; + +/** + * 销售订单明细 Service 接口 + * + * @author 后台管理-1 + */ +public interface SalesOrderDetailService { + + /** + * 创建销售订单明细 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + SalesOrderDetailRespVO createSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO createReqVO); + + /** + * 批量创建销售订单明细 + * + * @param createReqVOS 创建信息 + * @return 编号 + */ + List createSalesOrderDetail(@Valid List createReqVOS); + + /** + * 更新销售订单明细 + * + * @param updateReqVO 更新信息 + */ + void updateSalesOrderDetail(@Valid SalesOrderDetailSaveReqVO updateReqVO); + + /** + * 删除销售订单明细 + * + * @param id 编号 + */ + void deleteSalesOrderDetail(Long id); + + /** + * 批量删除销售订单明细 + * + * @param ids 编号 + */ + void deleteSalesOrderDetailListByIds(List ids); + + /** + * 获得销售订单明细 + * + * @param id 编号 + * @return 销售订单明细 + */ + SalesOrderDetailDO getSalesOrderDetail(Long id); + + /** + * 获得销售订单明细分页 + * + * @param pageReqVO 分页查询 + * @return 销售订单明细分页 + */ + PageResult getSalesOrderDetailPage(SalesOrderDetailPageReqVO pageReqVO); + + + /** + * 根据订单主键删除订单明细 + * + * @param orderIds 订单主键 + * + */ + void deleteSalesOrderDetailByOrderIds(List orderIds); + + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java new file mode 100644 index 0000000..9523d68 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderDetailServiceImpl.java @@ -0,0 +1,111 @@ +package com.zt.plat.module.contractorder.service.salesorder; + +import cn.hutool.core.collection.CollUtil; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderDetailSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDetailDO; +import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderDetailMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.validation.annotation.Validated; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.framework.common.pojo.PageParam; +import com.zt.plat.framework.common.util.object.BeanUtils; + + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; + +import static com.zt.plat.module.contractorder.enums.salesorder.ErrorCodeConstants.SALES_ORDER_DETAIL_NOT_EXISTS; + +/** + * 销售订单明细 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class SalesOrderDetailServiceImpl implements SalesOrderDetailService { + + @Resource + private SalesOrderDetailMapper salesOrderDetailMapper; + + @Override + @Transactional + public SalesOrderDetailRespVO createSalesOrderDetail(SalesOrderDetailSaveReqVO createReqVO) { + // 插入 + SalesOrderDetailDO salesOrderDetail = BeanUtils.toBean(createReqVO, SalesOrderDetailDO.class); + salesOrderDetailMapper.insert(salesOrderDetail); + // 返回 + return BeanUtils.toBean(salesOrderDetail, SalesOrderDetailRespVO.class); + } + + @Override + @Transactional + public List createSalesOrderDetail(List createReqVOS) { + List salesOrderDetailDOS = BeanUtils.toBean(createReqVOS, SalesOrderDetailDO.class); + salesOrderDetailMapper.insertBatch(salesOrderDetailDOS); + return BeanUtils.toBean(salesOrderDetailDOS, SalesOrderDetailRespVO.class); + } + + @Override + public void updateSalesOrderDetail(SalesOrderDetailSaveReqVO updateReqVO) { + // 校验存在 + validateSalesOrderDetailExists(updateReqVO.getId()); + // 更新 + SalesOrderDetailDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDetailDO.class); + salesOrderDetailMapper.updateById(updateObj); + } + + @Override + public void deleteSalesOrderDetail(Long id) { + // 校验存在 + validateSalesOrderDetailExists(id); + // 删除 + salesOrderDetailMapper.deleteById(id); + } + + @Override + public void deleteSalesOrderDetailListByIds(List ids) { + // 校验存在 + validateSalesOrderDetailExists(ids); + // 删除 + salesOrderDetailMapper.deleteByIds(ids); + } + + private void validateSalesOrderDetailExists(List ids) { + List list = salesOrderDetailMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(SALES_ORDER_DETAIL_NOT_EXISTS); + } + } + + private void validateSalesOrderDetailExists(Long id) { + if (salesOrderDetailMapper.selectById(id) == null) { + throw exception(SALES_ORDER_DETAIL_NOT_EXISTS); + } + } + + @Override + public SalesOrderDetailDO getSalesOrderDetail(Long id) { + return salesOrderDetailMapper.selectById(id); + } + + @Override + public PageResult getSalesOrderDetailPage(SalesOrderDetailPageReqVO pageReqVO) { + return salesOrderDetailMapper.selectPage(pageReqVO); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteSalesOrderDetailByOrderIds(List orderIds) { + salesOrderDetailMapper.deleteBatch(SalesOrderDetailDO::getOrderId, orderIds); + } + + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java new file mode 100644 index 0000000..2f17584 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderService.java @@ -0,0 +1,65 @@ +package com.zt.plat.module.contractorder.service.salesorder; + +import java.util.*; + +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import jakarta.validation.*; + +import com.zt.plat.framework.common.pojo.PageResult; + +/** + * 采购订单 Service 接口 + * + * @author 后台管理-1 + */ +public interface SalesOrderService { + + /** + * 创建采购订单 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + SalesOrderRespVO createSalesOrder(@Valid SalesOrderSaveReqVO createReqVO); + + /** + * 更新采购订单 + * + * @param updateReqVO 更新信息 + */ + void updateSalesOrder(@Valid SalesOrderSaveReqVO updateReqVO); + + /** + * 删除采购订单 + * + * @param id 编号 + */ + void deleteSalesOrder(Long id); + + /** + * 批量删除采购订单 + * + * @param ids 编号 + */ + void deleteSalesOrderListByIds(List ids); + + /** + * 获得采购订单 + * + * @param id 编号 + * @return 采购订单 + */ + SalesOrderDO getSalesOrder(Long id, String splyBsnTp); + + /** + * 获得采购订单分页 + * + * @param pageReqVO 分页查询 + * @return 采购订单分页 + */ + PageResult getSalesOrderPage(SalesOrderPageReqVO pageReqVO); + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java new file mode 100644 index 0000000..8e4dbf0 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/service/salesorder/SalesOrderServiceImpl.java @@ -0,0 +1,99 @@ +package com.zt.plat.module.contractorder.service.salesorder; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderPageReqVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderRespVO; +import com.zt.plat.module.contractorder.controller.admin.salesorder.vo.SalesOrderSaveReqVO; +import com.zt.plat.module.contractorder.dal.dataobject.salesorder.SalesOrderDO; +import com.zt.plat.module.contractorder.dal.mysql.salesorder.SalesOrderMapper; +import org.springframework.stereotype.Service; +import jakarta.annotation.Resource; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; + +import java.util.*; + +import com.zt.plat.framework.common.pojo.PageResult; + +import com.zt.plat.framework.common.util.object.BeanUtils; + + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.contractorder.enums.purchaseorder.ErrorCodeConstants.PURCHASE_ORDER_NOT_EXISTS; + + +/** + * 采购订单 Service 实现类 + * + * @author 后台管理-1 + */ +@Service +@Validated +public class SalesOrderServiceImpl implements SalesOrderService { + + @Resource + private SalesOrderMapper salesOrderMapper; + + @Override + @Transactional + public SalesOrderRespVO createSalesOrder(SalesOrderSaveReqVO createReqVO) { + // 插入 + SalesOrderDO purchaseOrder = BeanUtils.toBean(createReqVO, SalesOrderDO.class); + salesOrderMapper.insert(purchaseOrder); + // 返回 + return BeanUtils.toBean(purchaseOrder, SalesOrderRespVO.class); + } + + @Override + @Transactional + public void updateSalesOrder(SalesOrderSaveReqVO updateReqVO) { + // 校验存在 + validateSalesOrderExists(updateReqVO.getId()); + // 更新 + SalesOrderDO updateObj = BeanUtils.toBean(updateReqVO, SalesOrderDO.class); + salesOrderMapper.updateById(updateObj); + } + + @Override + @Transactional + public void deleteSalesOrder(Long id) { + // 校验存在 + validateSalesOrderExists(id); + // 删除 + salesOrderMapper.deleteById(id); + } + + @Override + @Transactional + public void deleteSalesOrderListByIds(List ids) { + // 校验存在 + validateSalesOrderExists(ids); + // 删除 + salesOrderMapper.deleteByIds(ids); + } + + private void validateSalesOrderExists(List ids) { + List list = salesOrderMapper.selectByIds(ids); + if (CollUtil.isEmpty(list) || list.size() != ids.size()) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } + + private void validateSalesOrderExists(Long id) { + if (salesOrderMapper.selectById(id) == null) { + throw exception(PURCHASE_ORDER_NOT_EXISTS); + } + } + + @Override + public SalesOrderDO getSalesOrder(Long id, String splyBsnTp) { + return salesOrderMapper.selectOne(new LambdaQueryWrapper().eq(SalesOrderDO::getId, id).eq(splyBsnTp != null && !splyBsnTp.isEmpty(), SalesOrderDO::getSplyBsnTp, splyBsnTp)); + } + + @Override + public PageResult getSalesOrderPage(SalesOrderPageReqVO pageReqVO) { + return salesOrderMapper.selectPage(pageReqVO); + } + +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java new file mode 100644 index 0000000..2a15e8e --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/java/com/zt/plat/module/contractorder/util/constants/ProcessDefinitionKeyConstants.java @@ -0,0 +1,6 @@ +package com.zt.plat.module.contractorder.util.constants; + +public interface ProcessDefinitionKeyConstants { + + String PURCHASE_ORDER_REVIEW_PROCESS = "purchase_order_review"; +} diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/logback-spring.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..6641085 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/logback-spring.xml @@ -0,0 +1,76 @@ + + + + + + + + + +       + + + ${PATTERN_DEFAULT} + + + + + + + + + + ${PATTERN_DEFAULT} + + + + ${LOG_FILE} + + + ${LOGBACK_ROLLINGPOLICY_FILE_NAME_PATTERN:-${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz} + + ${LOGBACK_ROLLINGPOLICY_CLEAN_HISTORY_ON_START:-false} + + ${LOGBACK_ROLLINGPOLICY_MAX_FILE_SIZE:-10MB} + + ${LOGBACK_ROLLINGPOLICY_TOTAL_SIZE_CAP:-0} + + ${LOGBACK_ROLLINGPOLICY_MAX_HISTORY:-30} + + + + + + 0 + + 256 + + + + + + + + ${PATTERN_DEFAULT} + + + + + + + + + + + + + + + + + + + + + + diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PrchOrdDtlMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PrchOrdDtlMapper.xml new file mode 100644 index 0000000..983e141 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PrchOrdDtlMapper.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml new file mode 100644 index 0000000..585f3e2 --- /dev/null +++ b/zt-module-contract-order/zt-module-contract-order-server/src/main/resources/mapper/purchaseorder/PurchaseOrderMapper.xml @@ -0,0 +1,340 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/ErpExternalApi.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/ErpExternalApi.java index 457c0cd..f8889bd 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/ErpExternalApi.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/ErpExternalApi.java @@ -1,15 +1,20 @@ package com.zt.plat.module.erp.api; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; +import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; import com.zt.plat.module.erp.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 org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.HashMap; +import java.util.Map; @FeignClient(name = ApiConstants.NAME) @Tag(name = "RPC 服务 - ERP") @@ -21,4 +26,11 @@ public interface ErpExternalApi { @Operation(summary = "erp数据提交") HashMap submitDataToErp(@Valid @RequestBody ErpSubmitReqDTO reqDTO); + @GetMapping(PREFIX + "/query") + @Operation(summary = "erp数据查询") + HashMap queryDataToErp(@Valid @RequestBody ErpQueryReqDTO reqDTO); + + @GetMapping(PREFIX + "/queryProductiveVersion") + @Operation(summary = "生产版本数据查询") + CommonResult getErpProductiveVersionByFM(@Valid @RequestBody ErpProductiveVersionReqDTO reqDTO); } diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpProductiveVersionReqDTO.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpProductiveVersionReqDTO.java new file mode 100644 index 0000000..cd3253f --- /dev/null +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpProductiveVersionReqDTO.java @@ -0,0 +1,20 @@ +package com.zt.plat.module.erp.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.util.Map; + +@Schema(description = "RPC 服务 - 查询 ERP DTO") +@Data +public class ErpProductiveVersionReqDTO { + + @Schema(description = "工厂编码") + @NotNull(message = "工厂编码不能为空") + private String factoryNumber; + @Schema(description = "物料编码") + @NotNull(message = "物料编码不能为空") + private String materialNumber; + +} diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpQueryReqDTO.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpQueryReqDTO.java new file mode 100644 index 0000000..1648ad4 --- /dev/null +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpQueryReqDTO.java @@ -0,0 +1,21 @@ +package com.zt.plat.module.erp.api.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.util.Map; + +@Schema(description = "RPC 服务 - 查询 ERP DTO") +@Data +public class ErpQueryReqDTO { + /** + * 调用ERP接口查询erp数据 + * + * 请求参数说明: + * "funcnr": 接口编号,必须,参见RFC功能列表,可调用接口编号范围001-021 + * "req": {具体参数,参见RFC功能列表} + */ + private String funcnr; + private Map req; + +} diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java index 2519329..39ca91f 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/api/dto/ErpSubmitReqDTO.java @@ -22,11 +22,17 @@ public class ErpSubmitReqDTO { * "sign": 签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定 * "req": {具体参数,参见RFC功能列表} */ + @Schema(description = "接口编号,必须,参见RFC功能列表,可调用接口编号范围051-900") private String funcnr; + @Schema(description = "调用系统业务单据编号,必须,在外部系统唯一,用于关联") private String bskey; + @Schema(description = "SAP系统ID, 必须") private String usrid; + @Schema(description = "源调用系统ID,必须") private String usrnm; - private String sign; +// @Schema(description = "签名,uuid+srcsys+密码,MD5 32位小写签名,密码另行约定") +// private String sign; + @Schema(description = "具体参数,参见RFC功能列表") private Map req; } diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java index 18dd594..c01411b 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ApiConstants.java @@ -14,10 +14,11 @@ public class ApiConstants { * * 注意,需要保证和 spring.application.name 保持一致 */ - public static final String NAME = "erp-server"; + public static final String NAME = "base-server"; public static final String PREFIX = RpcConstants.RPC_API_PREFIX + "/erp"; public static final String VERSION = "1.0.0"; + public static final String TABLE_FIELD_SPLY_ERP_CPN_NUM = "NUM"; } diff --git a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java index cab4bec..b11bfe6 100644 --- a/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java +++ b/zt-module-erp/zt-module-erp-api/src/main/java/com/zt/plat/module/erp/enums/ErrorCodeConstants.java @@ -6,21 +6,52 @@ import com.zt.plat.framework.common.exception.ErrorCode; public interface ErrorCodeConstants { // ========== 示例模块 1-001-000-000 ========== + ErrorCode ERP_NOT_EXISTS = new ErrorCode(1_000_000_001, "获取ERP数据为空"); + ErrorCode ERP_NOT_JSON_EXISTS = new ErrorCode(1_000_000_002, "ERP接口响应无法解析为JSON"); + ErrorCode ERP_ERROR_EXISTS = new ErrorCode(1_000_000_003, "调用ERP RFC接口失败"); + ErrorCode ERP_REDIS_EXISTS = new ErrorCode(1_000_000_004, "公司调用缓存失败"); + ErrorCode ERP_CUSTOMER_NOT_EXISTS = new ErrorCode(1_001_000_001, "ERP客商主数据不存在"); - ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_001_000_002, "ERP物料数据不存在"); - ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_PURCHASE_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_INTERNAL_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_SALES_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_ASSET_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_CONTRACT_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); - ErrorCode ERP_PRODUCTIVE_ORDER_NOT_EXISTS = new ErrorCode(1_001_000_003, "ERP物料数据不存在"); + + ErrorCode ERP_MATERIAL_NOT_EXISTS = new ErrorCode(1_002_000_001, "ERP物料数据不存在"); + ErrorCode ERP_MATERIAL_NOT_ALLOW_UPDATE = new ErrorCode(1_002_000_002, "只允许编辑状态为“供应链”的数据"); + ErrorCode ERP_MATERIAL_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_003, "不允许删除状态为“ERP”的数据"); + ErrorCode ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE = new ErrorCode(1_002_000_004, "只允许删除不存在配置关系的数据"); + ErrorCode ERP_MATERIAL_EXISTS = new ErrorCode(1_002_000_005, "已存在相同中铜编码的物料数据"); + + ErrorCode ERP_COMPANY_NOT_EXISTS = new ErrorCode(1_003_000_001, "ERP公司数据不存在"); + ErrorCode ERP_COMPANY_REDIS_NOT_EXISTS = new ErrorCode(1_003_000_002, "ERP公司代码缓存数据丢失,请重新同步公司代码"); + + ErrorCode ERP_BOM_NOT_EXISTS = new ErrorCode(1_004_000_001, "ERPBOM数据不存在"); + + ErrorCode ERP_BOM_DETAIL_NOT_EXISTS = new ErrorCode(1_005_000_001, "ERPBOM明细数据不存在"); + + ErrorCode ERP_PROCESS_NOT_EXISTS = new ErrorCode(1_006_000_001, "ERP工艺路线数据不存在"); + + ErrorCode ERP_PROCESS_DETAIL_NOT_EXISTS = new ErrorCode(1_007_000_001, "ERP工艺路线明细数据不存在"); + + ErrorCode ERP_FACTORY_NOT_EXISTS = new ErrorCode(1_008_000_001, "ERP工厂数据不存在"); + ErrorCode ERP_FACTORY_REDIS_NOT_EXISTS = new ErrorCode(1_008_000_002, "ERP工厂redis数据不存在"); + ErrorCode ERP_FACTORY_NOT_ALLOW_UPDATE = new ErrorCode(1_008_000_003, "类型为ERP的数据或启用的数据不允许编辑"); + ErrorCode ERP_FACTORY_EXISTS = new ErrorCode(1_008_000_004, "工厂编码重复,数据已存在"); + + ErrorCode ERP_COSTCENTER_NOT_EXISTS = new ErrorCode(1_009_000_001, "ERP成本中心数据不存在"); + + ErrorCode ERP_PRODUCTIVE_VERSION_NOT_EXISTS = new ErrorCode(1_010_000_001, "ERP生产版本数据不存在"); + + ErrorCode ERP_PURCHASE_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_011_000_001, "ERP采购组织数据不存在"); + + ErrorCode ERP_INTERNAL_ORDER_NOT_EXISTS = new ErrorCode(1_012_000_001, "ERP内部订单数据不存在"); + + ErrorCode ERP_SALES_ORGANIZATION_NOT_EXISTS = new ErrorCode(1_013_000_001, "ERP销售组织数据不存在"); + + ErrorCode ERP_WAREHOUSE_NOT_EXISTS = new ErrorCode(1_014_000_001, "ERP库位数据不存在"); + ErrorCode ERP_WAREHOUSE_NOT_ALLOW_UPDATE = new ErrorCode(1_014_000_002, "只允许状态为“供应链”,且“禁用”的数据编辑"); + ErrorCode ERP_WAREHOUSE_EXISTS = new ErrorCode(1_014_000_003, "已存在相同库位编码和工厂编码的记录"); + + ErrorCode ERP_ASSET_NOT_EXISTS = new ErrorCode(1_015_000_001, "ERP资产卡片数据不存在"); + + ErrorCode ERP_CONTRACT_NOT_EXISTS = new ErrorCode(1_016_000_001, "ERP合同数据不存在"); + + ErrorCode ERP_PRODUCTIVE_ORDER_NOT_EXISTS = new ErrorCode(1_017_000_001, "ERP生产订单数据不存在"); } \ No newline at end of file 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/api/ErpBillMainApiImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpBillMainApiImpl.java index e0257fe..e225d65 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpBillMainApiImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpBillMainApiImpl.java @@ -4,12 +4,15 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.erp.api.dto.ErpBillMainSaveReqDTO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO; import com.zt.plat.module.erp.service.erp.ErpBillMainService; + import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; @RestController @Validated +@Slf4j public class ErpBillMainApiImpl implements ErpBillMainApi{ @Resource diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpExternalApiImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpExternalApiImpl.java index 1096c17..4532369 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpExternalApiImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/api/ErpExternalApiImpl.java @@ -1,12 +1,21 @@ package com.zt.plat.module.erp.api; +import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; +import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; +import com.zt.plat.module.erp.api.dto.ErpQueryReqDTO; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; -import com.zt.plat.module.erp.common.conf.ErpConfig; +import com.zt.plat.module.erp.service.erp.ErpProductiveVersionService; +import com.zt.plat.module.erp.utils.ErpConfig; import jakarta.annotation.Resource; import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.HashMap; +import java.util.Map; + +import static com.zt.plat.framework.common.pojo.CommonResult.success; /** * ERP Api 实现类 @@ -20,9 +29,24 @@ public class ErpExternalApiImpl implements ErpExternalApi { @Resource private ErpConfig erpConfig; + @Resource + private ErpProductiveVersionService erpProductiveVersionService; @Override public HashMap submitDataToErp(ErpSubmitReqDTO reqDTO) { return erpConfig.pushDataToErp(reqDTO); } + + @Override + public HashMap queryDataToErp(ErpQueryReqDTO reqDTO) { + String funcnr = reqDTO.getFuncnr(); + Map req = new HashMap<>(); + return erpConfig.fetchDataFromERP(funcnr, req); + } + + @Override + public CommonResult getErpProductiveVersionByFM(ErpProductiveVersionReqDTO reqDTO) { + String productiveVersionNumber = erpProductiveVersionService.getErpProductiveVersionByFM(reqDTO); + return success(productiveVersionNumber); + } } diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java deleted file mode 100644 index 81a66c9..0000000 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/ErpConfig.java +++ /dev/null @@ -1,299 +0,0 @@ -package com.zt.plat.module.erp.common.conf; - -import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; -import jakarta.annotation.Resource; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.context.annotation.Configuration; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; -import org.springframework.http.MediaType; -import org.springframework.http.ResponseEntity; -import org.springframework.web.client.RestTemplate; - -import java.util.*; -import java.util.stream.Collectors; - -import static dm.jdbc.util.DriverUtil.log; - -@Configuration -public class ErpConfig { - - @Value("${erp.address}") - private String erpAddress; - - @Value("${erp.sapsys}") - private String sapsys; - - @Resource - private RedisTemplate redisTemplate; - - - /** - * 调用ERP接口获取erp数据 - */ - public JSONArray fetchDataFromERP(String funcnr, Map req) { - try { - // 构建完整URL - String url = "http://" + erpAddress + "/api/rfc/get"; - // 构建请求参数 - JSONObject requestBody = new JSONObject(); - requestBody.put("sapsys", sapsys); - requestBody.put("funcnr", funcnr); // 获取枚举值 - if (req != null) { - requestBody.put("req", req); - } - - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 创建HTTP请求实体 - HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); - - // 发送POST请求 - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - - // 解析响应结果 - String responseBody = response.getBody(); - if (responseBody.isEmpty()) { - log.warn("无所选条件的查询数据" + req); - } - - JSONObject jsonResponse = JSON.parseObject(responseBody); - if (jsonResponse == null) { - log.warn("ERP接口响应无法解析为JSON"); - } - - // 正确获取E_DATA数组 - JSONObject dataObject = jsonResponse.getJSONObject("data"); - if (dataObject != null && "S".equals(dataObject.getString("E_FLAG"))) { - return dataObject.getJSONArray("E_DATA"); - } else { - return null; - } - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - return null; - } - } - - // GET请求处理 -// public HashMap getResult(SAPInterfaceResult result) { -// HashMap resMap = new HashMap<>(); -// String E_RSLT = null; -// JSONObject jsonObject = result.getData(); -// //判断 result里的succeed是否为true -// boolean succeed = result.isSucceed(); -// if (succeed && "S".equals(jsonObject.getString("E_FLAG"))) { -// JSONObject data = result.getData(); -// String flag = "S"; -// String E_RESP = data.getString("E_DATA"); -// -// String E_MSG = result.getMsg(); -//// log.info("请求SAP成功 E_RESP:{}", E_RESP); -//// log.info("请求SAP成功 E_MSG:{}", E_MSG); -// resMap.put("E_RESP", E_RESP); -// resMap.put("resStr", E_MSG); -// resMap.put("flag", flag); -// return resMap; -// } else { -// String E_MSG = result.getMsg(); -// String flag = "E"; -// resMap.put("resStr", E_MSG); -// resMap.put("flag", flag); -//// log.info("请求SAP失败 E_MSG:{}", E_MSG); -// return resMap; -// } -// } - - /** - * 调用ERP接口更新erp数据 - */ - public HashMap pushDataToErp(ErpSubmitReqDTO reqDTO) { - try { - // 构建完整URL - String url = "http://" + erpAddress + "/api/rfc/post"; - // 构建请求参数 - JSONObject requestBody = new JSONObject(); - requestBody.put("uuid", UUID.randomUUID().toString()); - requestBody.put("sapsys", sapsys); - requestBody.put("srcsys", "DSC"); - requestBody.put("funcnr", reqDTO.getFuncnr()); - requestBody.put("bskey", reqDTO.getBskey()); - requestBody.put("usrid", reqDTO.getUsrid()); - requestBody.put("usrnm", reqDTO.getUsrnm()); - if (reqDTO.getSign() != null) { - requestBody.put("sign", reqDTO.getSign()); - } - if (reqDTO.getReq() != null) { - requestBody.put("req", reqDTO.getReq()); - } - // 设置请求头 - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 创建HTTP请求实体 - HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); - - // 发送POST请求 - RestTemplate restTemplate = new RestTemplate(); - ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); - - // 解析响应结果 - String responseBody = response.getBody(); - if (responseBody.isEmpty()) { - throw new RuntimeException("ERP接口返回结果为空"); - } - - JSONObject jsonResponse = JSON.parseObject(responseBody); - if (jsonResponse == null) { - throw new RuntimeException("ERP接口响应无法解析为JSON"); - } - return postResult(jsonResponse); - } catch (Exception e) { - throw new RuntimeException("调用ERP RFC接口失败: " + e); - } - } - - // POST请求处理 - public HashMap postResult(JSONObject result) { - HashMap resMap = new HashMap<>(); - - boolean succeed = result.getBoolean("succeed"); - JSONObject data = result.getJSONObject("data"); - if (data == null) { - throw new RuntimeException("SAP接口返回值为空," + result.getString("msg")); - } else if (succeed && "S".equals(data.getString("E_FLAG"))) { - String flag = "S"; - String E_RESP = data.getString("E_RESP"); - String E_MSG = data.getString("ET_MSG"); - resMap.put("E_RESP", E_RESP); - resMap.put("resStr", E_MSG); - resMap.put("flag", flag); - return resMap; - } else if (!succeed && "E".equals(data.getString("E_FLAG"))) { - String flag = "E"; - String E_MSG = data.getString("ET_MSG"); - if (StrUtil.isBlank(E_MSG)) { - E_MSG = result.getString("msg"); - } - resMap.put("resStr", E_MSG); - resMap.put("flag", flag); - return resMap; - } else { - throw new RuntimeException("SAP接口异常," + result); - } - } - - - //list - public Map> numbers(JSONArray dataArray, String key, String dataKey) { - // 使用 Redis 获取缓存数据 - Map> numbers = new HashMap<>(); - List cachedNumbers = (List) redisTemplate.opsForValue().get(key); - if (cachedNumbers == null) { - cachedNumbers = new ArrayList<>(); - } - - // 提取有效的 BUKRS 编号 - List existingNumbers; - if (dataArray != null) { - // 将dataKey按"-"分割成多个部分 - String[] keyParts = dataKey.split("-"); - existingNumbers = dataArray.stream() - .filter(Objects::nonNull) - .map(dataJson -> { - JSONObject jsonObject = (JSONObject) dataJson; - // 根据每个部分逐级获取值并拼接 - StringBuilder sb = new StringBuilder(); - for (String part : keyParts) { - String value = jsonObject.getString(part); - if (value != null) { - if (sb.length() > 0) { - sb.append("-"); - } - sb.append(value.trim()); - } else { - // 如果某一部分为空,则整个值视为无效 - return null; - } - } - return sb.toString(); - }) - .filter(Objects::nonNull) // 过滤掉无效值 - .collect(Collectors.toList()); - } else { - existingNumbers = new ArrayList<>(); - } - - // 找出共同存在的编号 - Set cachedNumberSet = new HashSet<>(cachedNumbers != null ? cachedNumbers : new ArrayList<>()); - List commonNumbers = existingNumbers.stream() - .filter(cachedNumberSet::contains) - .collect(Collectors.toList()); - numbers.put("com", commonNumbers); - - //找出需要删除的字段。只有erp查询全部的接口能用到 - List deleteNumbers = cachedNumberSet.stream() - .filter(num -> !existingNumbers.contains(num)) - .collect(Collectors.toList()); - numbers.put("delete", deleteNumbers); - - // 找出需要新增的编号 - List newNumbers = existingNumbers.stream() - .filter(num -> !cachedNumberSet.contains(num)) - .toList(); - - // 合并所有编号 - List allNumbers = new ArrayList<>(cachedNumbers); - allNumbers.addAll(newNumbers); - numbers.put("all", allNumbers); - - return numbers; - } - - public void updateRedisCache(String key, List allnumbers) { - // 使用 Redis 更新缓存数据 - redisTemplate.opsForValue().set(key, allnumbers); - } - - public List getRedisCache(String key) { - // 使用 Redis 更新缓存数据 - return (List) redisTemplate.opsForValue().get(key); - } - - //map - public Map getRedisCacheMap(String key) { - // 使用 Redis 获取缓存数据 - Map result = (Map) redisTemplate.opsForHash().entries(key); - return result; - } - - public void addRedisCacheMap(String key, Map allnumbers) { - // 使用 Redis 更新缓存数据 - redisTemplate.opsForHash().putAll(key, allnumbers); - } - - public void deleteRedisCacheMap(String key, List deleteNumbers) { - if (deleteNumbers == null || deleteNumbers.isEmpty()) { - log.debug("No items to delete from Redis hash: {}", key); - return; - } - - try { - Object[] keysToDelete = deleteNumbers.toArray(new String[0]); - Long deletedCount = redisTemplate.opsForHash().delete(key, keysToDelete); - log.debug("Deleted" + deletedCount + "items from Redis hash:" + key); - } catch (Exception e) { - log.error("Failed to delete items from Redis hash:" + key, e); - throw e; - } - } - -} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/MyRedisConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/MyRedisConfig.java deleted file mode 100644 index c213195..0000000 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/conf/MyRedisConfig.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.zt.plat.module.erp.common.conf; - -import com.fasterxml.jackson.annotation.JsonAutoDetect; -import com.fasterxml.jackson.annotation.JsonTypeInfo; -import com.fasterxml.jackson.annotation.PropertyAccessor; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.data.redis.connection.RedisConnectionFactory; -import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; -import org.springframework.data.redis.serializer.RedisSerializer; -import org.springframework.data.redis.serializer.StringRedisSerializer; - - -/** - * @author wuxz - * @create 2022-06-07 20:54 - */ -@Primary -@Configuration -public class MyRedisConfig { - @Bean(value = "MyRedisTemplate") - public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { - RedisTemplate redisTemplate = new RedisTemplate<>(); - redisTemplate.setConnectionFactory(redisConnectionFactory); - - // 通过 Jackson 组件进行序列化 - RedisSerializer serializer = redisSerializer(); - - // key 和 value - // 一般来说, redis-key采用字符串序列化; - // redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。 - redisTemplate.setKeySerializer(new StringRedisSerializer()); - redisTemplate.setValueSerializer(serializer); - - redisTemplate.setHashKeySerializer(new StringRedisSerializer()); - redisTemplate.setHashValueSerializer(serializer); - - redisTemplate.afterPropertiesSet(); - return redisTemplate; - } - - - @Bean - public RedisSerializer redisSerializer() { - //创建JSON序列化器 - Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); - ObjectMapper objectMapper = new ObjectMapper(); - objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - // objectMapper.enableDefaultTyping()被弃用 - objectMapper.activateDefaultTyping( - LaissezFaireSubTypeValidator.instance, - ObjectMapper.DefaultTyping.NON_FINAL, - JsonTypeInfo.As.WRAPPER_ARRAY); - serializer.setObjectMapper(objectMapper); - return serializer; - } -} \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/task/statisticstask.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/task/statisticstask.java deleted file mode 100644 index a726e56..0000000 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/task/statisticstask.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.zt.plat.module.erp.common.task; - -import com.zt.plat.module.erp.service.erp.ErpCompanyService; -import jakarta.annotation.Resource; -import org.springframework.context.annotation.Configuration; -import org.springframework.scheduling.annotation.EnableScheduling; -import org.springframework.scheduling.annotation.Scheduled; -import org.springframework.transaction.annotation.Transactional; - -/** - * @ClassName energyTask - * @Description TODO - * @Author chen - * @Date 2023/9/25 - **/ -@Configuration -@EnableScheduling -public class statisticstask { - - @Resource - private ErpCompanyService erpCompanyService; - - //能源定时每日获取成本配置机台水电数据 - @Scheduled(cron = "0 0 12 * * ?") - @Transactional - public void erpCompany(){ - erpCompanyService.callErpRfcInterface(); - } - - - -} 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 de38264..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 @@ -109,6 +109,28 @@ public class ErpCompanyController { return success(true); } + @PostMapping("/test") + @Operation(summary = "定时获得erp更新公司") + @PreAuthorize("@ss.hasPermission('sply:erp-company:create')") + public CommonResult test() { + erpCompanyService.test(); + return success(true); + } + @PostMapping("/test1") + @Operation(summary = "获取配置") + @PreAuthorize("@ss.hasPermission('sply:erp-company:get')") + public CommonResult test1() { + String TEST = erpCompanyService.test1(); + 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/controller/admin/erp/ErpFactoryController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java index cd0d51f..34dcb52 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpFactoryController.java @@ -101,6 +101,14 @@ public class ErpFactoryController { BeanUtils.toBean(list, ErpFactoryRespVO.class)); } + @PutMapping("/enable-list") + @Operation(summary = "批量更新") + @PreAuthorize("@ss.hasPermission('base:erp-factory:update')") + public CommonResult enableFactoryList(@RequestBody List saveReqVOS) { + erpFactoryService.enableFactoryList(saveReqVOS); + return success(true); + } + @PostMapping("/getErpFactoryTask") @Operation(summary = "定时获得erp工厂数据") @PreAuthorize("@ss.hasPermission('base:erp-factory:create')") diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java index f9d997f..aec8f3f 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpMaterialController.java @@ -109,4 +109,12 @@ public class ErpMaterialController { return success(true); } + @GetMapping("/pageAndOther") + @Operation(summary = "获得ERP物料数据分页并关联拓展数据") + @PreAuthorize("@ss.hasPermission('sply:erp-material:query')") + public CommonResult> getErpMaterialPageAndOther(@Valid ErpMaterialPageReqVO pageReqVO) { + PageResult pageResult = erpMaterialService.getErpMaterialPageAndOther(pageReqVO); + return success(BeanUtils.toBean(pageResult, ErpMaterialRespVO.class)); + } + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java index 0ef7d5b..894a89f 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpProductiveVersionController.java @@ -109,4 +109,11 @@ public class ErpProductiveVersionController { return success(true); } + @PutMapping("/isEnable") + @Operation(summary = "启用ERP生产版本,相同工厂、物料,只能启用一个") + @PreAuthorize("@ss.hasPermission('sply:erp-productive-version:update')") + public CommonResult enableErpProductiveVersion(@Valid @RequestBody ErpProductiveVersionSaveReqVO updateReqVO) { + erpProductiveVersionService.enableErpProductiveVersion(updateReqVO); + return success(true); + } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java index 712da49..08c69a3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/ErpWarehouseController.java @@ -101,6 +101,14 @@ public class ErpWarehouseController { BeanUtils.toBean(list, ErpWarehouseRespVO.class)); } + @PutMapping("/enable-list") + @Operation(summary = "批量更新") + @PreAuthorize("@ss.hasPermission('base:warehouse:update')") + public CommonResult enableWarehouseList(@RequestBody List saveReqVOS) { + erpWarehouseService.enableWarehouseList(saveReqVOS); + return success(true); + } + @PostMapping("/getErpWarehouseTask") @Operation(summary = "定时获得erp更新库位") @PreAuthorize("@ss.hasPermission('sply:erp-warehouse:create')") diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java index ea3330d..af1e079 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpContractSaveReqVO.java @@ -199,4 +199,24 @@ public class ErpContractSaveReqVO { @Schema(description = "达到收款条件金额;销售合同,且类型为SAP02COSR必填") private BigDecimal payeeConditionAmount; + @Schema(description = "公司编号") + private Long companyId; + + @Schema(description = "公司名称") + private String companyName; + + @Schema(description = "部门编号") + private Long deptId; + + @Schema(description = "部门名称") + private String deptName; + + @Schema(description = "岗位编号") + private Long postId; + + @Schema(description = "创建者") + private String creatorName; + + @Schema(description = "更新者") + private String updaterName; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java index ea7375e..e550f77 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryPageReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; +import com.baomidou.mybatisplus.annotation.TableField; import com.zt.plat.framework.common.pojo.PageParam; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -14,4 +15,13 @@ public class ErpFactoryPageReqVO extends PageParam { @Schema(description = "工厂编码") private String number; + @Schema(description = "公司编号") + private String erpCompanyNumber; + + @Schema(description = "公司名称") + private String erpCompanyName; + + @Schema(description = "类型") + private String type; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java index 8c0d4d4..e71e7d2 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactoryRespVO.java @@ -22,4 +22,21 @@ public class ErpFactoryRespVO { @ExcelProperty("工厂编码") private String number; + @Schema(description = "公司编号") + private String erpCompanyNumber; + + @Schema(description = "公司编号") + private String erpCompanyName; + + @Schema(description = "类型") + private String type; + + @Schema(description = "绑定工厂名") + private String relName; + + @Schema(description = "绑定工厂编码") + private String relnumber; + + @Schema(description = "是否启用") + private String isEnable; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java index 3cb6f25..9730222 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpFactorySaveReqVO.java @@ -19,4 +19,18 @@ public class ErpFactorySaveReqVO { @NotEmpty(message = "工厂编码不能为空") private String number; + @Schema(description = "公司编号") + private String erpCompanyNumber; + + @Schema(description = "类型") + private String type; + + @Schema(description = "绑定工厂名") + private String relName; + + @Schema(description = "绑定工厂编码") + private String relnumber; + + @Schema(description = "是否启用") + private String isEnable; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java index 6d8219b..43dc25b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialPageReqVO.java @@ -55,4 +55,7 @@ public class ErpMaterialPageReqVO extends PageParam { @Schema(description = "物料长描述") private String materialLengthDescription; + @Schema(description = "类型") + private String type; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java index dbaaf3f..49a6361 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialRespVO.java @@ -2,10 +2,12 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.zt.plat.module.api.dto.MaterialOtherDTO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.time.LocalDateTime; +import java.util.List; @Schema(description = "管理后台 - ERP物料数据 Response VO") @Data @@ -20,6 +22,9 @@ public class ErpMaterialRespVO { @ExcelProperty("中铜物料编码;系统使用时使用该编码") private String downCenterNumber; + @Schema(description = "物料编码", requiredMode = Schema.RequiredMode.REQUIRED) + private String materialNumber; + @Schema(description = "中铝物料编码", requiredMode = Schema.RequiredMode.REQUIRED) @ExcelProperty("中铝物料编码") private String centerNumber; @@ -68,4 +73,10 @@ public class ErpMaterialRespVO { @ExcelProperty("物料长描述") private String materialLengthDescription; + @Schema(description = "类型") + @ExcelProperty("类型") + private String type; + + private List materialOtherDTOS; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java index 5089ef8..5d18788 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpMaterialSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; +import com.alibaba.excel.annotation.ExcelProperty; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -19,50 +20,53 @@ public class ErpMaterialSaveReqVO { private String downCenterNumber; @Schema(description = "中铝物料编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "中铝物料编码不能为空") +// @NotEmpty(message = "中铝物料编码不能为空") private String centerNumber; @Schema(description = "创建日期", requiredMode = Schema.RequiredMode.REQUIRED) - @NotNull(message = "创建日期不能为空") +// @NotNull(message = "创建日期不能为空") private LocalDateTime createDate; @Schema(description = "物料类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2") - @NotEmpty(message = "物料类型不能为空") +// @NotEmpty(message = "物料类型不能为空") private String materialType; @Schema(description = "物料大类组", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "物料大类组不能为空") +// @NotEmpty(message = "物料大类组不能为空") private String materialGroupDate; @Schema(description = "外部物料小类组", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "外部物料小类组不能为空") +// @NotEmpty(message = "外部物料小类组不能为空") private String externalMaterialGroupDate; @Schema(description = "计量单位编码", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "计量单位编码不能为空") +// @NotEmpty(message = "计量单位编码不能为空") private String unit; @Schema(description = "计量单位描述", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "计量单位描述不能为空") +// @NotEmpty(message = "计量单位描述不能为空") private String unitDescription; @Schema(description = "物料类型描述", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "物料类型描述不能为空") +// @NotEmpty(message = "物料类型描述不能为空") private String materialTypeDescription; @Schema(description = "物料组描述", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "物料组描述不能为空") +// @NotEmpty(message = "物料组描述不能为空") private String materialGroupDescription; @Schema(description = "外部物料小类组描述", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "外部物料小类组描述不能为空") +// @NotEmpty(message = "外部物料小类组描述不能为空") private String externalMaterialGroupDescription; @Schema(description = "物料名称", example = "李四") private String materialName; @Schema(description = "物料长描述", requiredMode = Schema.RequiredMode.REQUIRED) - @NotEmpty(message = "物料长描述不能为空") +// @NotEmpty(message = "物料长描述不能为空") private String materialLengthDescription; + @Schema(description = "类型") + private String type; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java new file mode 100644 index 0000000..5a6ecc9 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderSaveReqVO.java @@ -0,0 +1,238 @@ +package com.zt.plat.module.erp.controller.admin.erp.vo; + +import com.alibaba.fastjson2.JSONArray; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.time.LocalDate; +import java.util.List; + +/** + * ERP采购订单保存请求VO + */ +@Data +@Schema(description = "ERP采购订单保存请求参数") +public class ErpOrderSaveReqVO { + + + + @NotEmpty(message = "订单号不能为空") + private String orderNo; + + @Valid + @NotNull(message = "采购订单抬头信息不能为空") + private Head head; + + @Valid + @NotNull(message = "采购订单抬头扩展信息不能为空") + private Exte exte; + + @Valid + @NotEmpty(message = "采购订单行项目列表不能为空") + private List items; + + private JSONArray accts; // 科目分配信息(科目分配类别为K或P时使用) + @Valid + private List comps; // 委托加工物料信息(委托加工订单时使用) + + @Schema(description = "采购订单抬头信息") + @Data + public static class Head { + @Schema(description = "公司代码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "公司代码不能为空") + private String comp_code; // BUKRS CHAR4 + + @Schema(description = "供应商帐号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "供应商帐号不能为空") + private String vendor; // LIFNR CHAR10 + + @Schema(description = "采购凭证类型", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购凭证类型不能为空") + private String doc_type; // BSART CHAR4 + + @Schema(description = "采购凭证日期(YYYY-MM-DD)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "采购凭证日期不能为空") + private LocalDate doc_date; // BEDAT DATS8 + + @Schema(description = "采购组织", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组织不能为空") + private String purch_org; // EKORG CHAR4 + + @Schema(description = "采购组", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "采购组不能为空") + private String pur_group; // EKGRP CHAR3 + + @Schema(description = "货币码", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "货币码不能为空") + private String currency; // WAERS CUKY5 + + @Schema(description = "汇率(保留5位小数)") + private BigDecimal exch_rate; // WKURS DEC9,5 + } + + @Schema(description = "采购订单抬头扩展信息") + @Data + public static class Exte { + @Schema(description = "纸质合同号(已启用财务共享单位必填)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "纸质合同号不能为空") + private String zzhth; // CHAR60 + + @Schema(description = "小协议号(绿星链通填入合同名称)") + private String zxxyh; // CHAR60 + + @Schema(description = "备注(绿星链通填入系统采购订单头号)") + private String znote; // CHAR60 + + @Schema(description = "代理方(使用客商编码)") + private String zlifnr; // CHAR60 + } + + @Schema(description = "采购订单行项目信息") + @Data + public static class Item { + @Schema(description = "行号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "行号不能为空") + private Integer po_item; // EBELP NUMC5 + + @Schema(description = "物料号") + private String material; // MATNR CHAR18 + + @Schema(description = "工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "工厂不能为空") + private String plant; // WERKS CHAR4 + + @Schema(description = "库存地点") + private String stge_loc; // LGORT CHAR4 + + @Schema(description = "数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "数量不能为空") + private BigDecimal quantity; // MENGE QUAN13,3 + + @Schema(description = "计量单位", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "计量单位不能为空") + private String po_unit; // MEINS UNIT3 + + @Schema(description = "含税单价(保留2位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "含税单价不能为空") + private BigDecimal net_price; // NETPR CURR11,2 + + @Schema(description = "价格单位(默认值1)") + private Integer price_unit = 1; // PEINH DEC5 + + @Schema(description = "税码") + private String tax_code; // MWSKZ CHAR2 + + @Schema(description = "基于GR的发票校验(Y/N)") + private String gr_basediv; // WEBRE CHAR1(原字段名gr_basediv保持与源数据一致) + + @Schema(description = "允许无限制过量交货(Y/N)") + private String unlimited_dlv; // UEBTK CHAR1 + + @Schema(description = "批次") + private String batch; // CHARG CHAR10 + + @Schema(description = "项目类别(委托加工填L)") + private String item_cat; // PSTYP CHAR1 + + @Schema(description = "科目分配类别(A-固定资产/S-服务/K-成本中心/F-订单)") + private String acctasscat; // KNTTP CHAR1 + + @Schema(description = "物料组(服务采购必填)") + private String matl_group; // MATKL CHAR9 + + @Schema(description = "短文本(服务采购必填)") + private String short_text; // TXZ01 CHAR40 + + @Schema(description = "退货项目标识(X-是)") + private String ret_item; // RETPO CHAR1 + + @Schema(description = "免费项目标识(X-是)") + private String free_item; // UMSON CHAR1 + + @Schema(description = "外部行项目号(绿星链通必填)") + private String vendrbatch; // LICHN CHAR15 + + @Schema(description = "备注信息-需求单位") + private String note_xq; // TDLINE CHAR132 + + @Schema(description = "备注信息-物料详细") + private String note_wl; // TDLINE CHAR132 + + @Schema(description = "交货起止日期(格式:YYYYMMDD-YYYYMMDD)") + private String vend_mat; // IDNLF CHAR22 + + @Valid + private Itex itex; // 行项目扩展信息 + + } + + @Schema(description = "行项目扩展信息") + @Data + public static class Itex { + @Schema(description = "销售物料号(科目分配类别为S时必填)") + private String zmatnr; + + @Schema(description = "统计型内部订单") + private String zaufnr; + + @Schema(description = "采购类别(0-生产性物资类/1-项目投资类)") + private String zpurty; + + @Schema(description = "原料湿重") + private BigDecimal zmenge; + } + +// @Schema(description = "行项目科目分配信息") +// @Data +// public static class Acct { +// @Schema(description = "科目分配序号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) +// @NotNull(message = "科目分配序号不能为空") +// private Integer serial_no; // DZEKKN NUMC2 +// +// @Schema(description = "总账科目编号") +// private String gl_account; // SAKNR CHAR10 +// +// @Schema(description = "成本中心(科目分配类别为F时必填)") +// private String costcenter; // KOSTL CHAR10(源数据为costcenter,保持一致) +// +// @Schema(description = "订单号(科目分配类别为F时必填)") +// private String orderid; // AUFNR CHAR12(源数据为orderid,保持一致) +// +// @Schema(description = "主资产号(科目分配类别为A时必填)") +// private String asset_no; // ANLN1 CHAR12 +// +// @Schema(description = "资产子编号(科目分配类别为A时必填,固定值'0')") +// private String sub_number; // ANLN2 CHAR4 +// } + + @Schema(description = "委托加工物料信息") + @Data + public static class Comp { + @Schema(description = "计划行号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "计划行号不能为空") + private Integer sched_line; // ETENR NUMC4 + + @Schema(description = "项目编号(从1开始)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "项目编号不能为空") + private Integer item_no; // RSPOS NUMC4 + + @Schema(description = "加工前物料号", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "加工前物料号不能为空") + private String material; // MATNR CHAR18 + + @Schema(description = "委托加工发货工厂", requiredMode = Schema.RequiredMode.REQUIRED) + @NotEmpty(message = "委托加工发货工厂不能为空") + private String plant; // PLANT CHAR4 + + @Schema(description = "委托加工需求数量(保留3位小数)", requiredMode = Schema.RequiredMode.REQUIRED) + @NotNull(message = "委托加工需求数量不能为空") + private BigDecimal entry_quantity; // MENGE QUAN13,3 + + @Schema(description = "组件计量单位(为空使用基本计量单位)") + private String entry_uom; // MEINS UNIT3 + } +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java new file mode 100644 index 0000000..444acde --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpOrderUpdateReqVO.java @@ -0,0 +1,257 @@ +package com.zt.plat.module.erp.controller.admin.erp.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.List; + +/** + * ERP采购订单保存请求VO + */ +@Data +@Schema(description = "ERP采购订单保存请求VO") +public class ErpOrderUpdateReqVO { + + + // ====================== 1. 主结构字段 ====================== + @Schema(description = "采购订单号(EBELN)", requiredMode = Schema.RequiredMode.REQUIRED, example = "4500000001") + @NotEmpty(message = "采购订单号不能为空") + @ExcelProperty("采购订单号") + private String poNumber; + + @Schema(description = "删除标识(ELOEK)", example = " ") + @ExcelProperty("删除标识") + private Integer deleteInd; + + @Schema(description = "货币码(WAERS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "CNY") + @NotEmpty(message = "货币码不能为空") + @ExcelProperty("货币码") + private String currency; + + @Schema(description = "汇率(WKURS),保留5位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "6.90000") + @NotNull(message = "汇率不能为空") + @ExcelProperty("汇率") + private BigDecimal exchRate; + + // ====================== 2. 抬头扩展字段(结构-exte) ====================== + @Schema(description = "纸质合同号(zzhth),来源于合同台账接口,已启用财务共享单位必填", example = "HT202405001") + @ExcelProperty("纸质合同号") + private String zzhth; + + @Schema(description = "小协议号(zxxyh)", example = "XY202405001") + @ExcelProperty("小协议号") + private String zxxyh; + + @Schema(description = "备注(znote)", example = "月度常规采购") + @ExcelProperty("备注") + private String znote; + + @Schema(description = "代理方(zlifnr),使用客商编码", example = "D0010001") + @ExcelProperty("代理方编码") + private String zlifnr; + + // ====================== 3. 行项目字段(列表-item) ====================== + private List items; + + + // ====================== 4. 行项目扩展字段(列表-itex) ====================== + private List itexs; + // ====================== 5. 科目分配字段(列表-acct,类别为K或P时使用) ====================== + private JSONArray accts; + + // ====================== 6. 委托加工物料字段(列表-comp,委托加工订单时使用) ====================== + private List comps; + + @Data + @Schema(description = "ERP采购订单item更新请求VO") + public static class item { + @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") + @NotEmpty(message = "行号不能为空") + @ExcelProperty("行号") + private Long po_item; + + @Schema(description = "物料号(MATNR)", example = "M0010001") + @ExcelProperty("物料号") + private String material; + + @Schema(description = "工厂(WERKS)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "工厂不能为空") + @ExcelProperty("工厂") + private String plant; + + @Schema(description = "库存地点(LGORT)", example = "0001") + @ExcelProperty("库存地点") + private String stge_loc; + + @Schema(description = "数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "100.000") + @NotNull(message = "数量不能为空") + @ExcelProperty("数量") + private String quantity; + + @Schema(description = "计量单位(MEINS),必须与该物料基本计量单位一致", requiredMode = Schema.RequiredMode.REQUIRED, example = "PC") + @NotEmpty(message = "计量单位不能为空") + @ExcelProperty("计量单位") + private String po_unit; + + @Schema(description = "含税单价(NETPR),保留2位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "199.99") + @NotNull(message = "含税单价不能为空") + @ExcelProperty("含税单价") + private BigDecimal net_price; + + @Schema(description = "价格单位(PEINH),固定值1", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "价格单位不能为空") + @ExcelProperty("价格单位") + private Integer price_unit; + + @Schema(description = "税码(MWSKZ)", example = "J1") + @ExcelProperty("税码") + private String tax_code; + + @Schema(description = "基于GR的发票校验(WEBRE)", example = "Y") + @ExcelProperty("基于GR发票校验") + private String gr_basediv; + + @Schema(description = "允许无限制过量交货(UEBTK)", example = "N") + @ExcelProperty("允许过量交货") + private String unlimited_dlv; + + @Schema(description = "批次(CHARG)", example = "B202405001") + @ExcelProperty("批次") + private String batch; + + @Schema(description = "项目类别(PSTYP),委托加工订单时填入L", example = "L") + @ExcelProperty("项目类别") + private String item_cat; + + @Schema(description = "科目分配类别(KNTTP),固定资产采购:A;服务采购:S-销售服务费/K-成本中心/F-订单", example = "K") + @ExcelProperty("科目分配类别") + private String acctasscat; + + @Schema(description = "物料组(MATKL),服务采购订单必填", example = "01") + @ExcelProperty("物料组") + private String matl_group; + + @Schema(description = "短文本(TXZ01),服务采购订单必填", example = "设备维修服务") + @ExcelProperty("短文本") + private String short_text; + + @Schema(description = "退货项目标识(RETPO),退货行项目填X", example = "X") + @ExcelProperty("退货标识") + private String ret_item; + + @Schema(description = "免费项目标识(UMSON),免费行项目填X", example = "X") + @ExcelProperty("免费标识") + private String free_item; + + @Schema(description = "外部行项目号(LICHN),绿星链通必填", example = "EXT0010") + @ExcelProperty("外部行号") + private String vendrbatch; + + @Schema(description = "备注信息-需求单位(TDLINE)", example = "生产一部") + @ExcelProperty("需求单位备注") + private String note_xq; + + @Schema(description = "备注信息-物料详细(TDLINE)", example = "304不锈钢,厚度2mm") + @ExcelProperty("物料详细备注") + private String note_wl; + + @Schema(description = "行项目删除标识(ELOEK)", example = "N") + @ExcelProperty("行项目删除标识") + private Integer delete_ind; + } + + @Data + public static class itex { + @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") + @NotEmpty(message = "行号不能为空") + @ExcelProperty("行号") + private Long po_item; + @Schema(description = "销售物料号(zmatnr),科目分配类别为S时必填", example = "S0010001") + @ExcelProperty("销售物料号") + private BigDecimal zmatnr; + + @Schema(description = "统计型内部订单(zaufnr)", example = "OR0010001") + @ExcelProperty("统计内部订单") + private String zaufnr; + + @Schema(description = "采购类别(zpurty),0-生产性物资类;1-项目投资类", example = "0") + @ExcelProperty("采购类别") + private String zpurty; + + @Schema(description = "原料湿重(zmenge)", example = "105.500") + @ExcelProperty("原料湿重") + private BigDecimal zmenge; + + } +// +// @Data +// public static class acct { +// @Schema(description = "行号(EBELP)", requiredMode = Schema.RequiredMode.REQUIRED, example = "00010") +// @NotEmpty(message = "行号不能为空") +// @ExcelProperty("行号") +// private String poItem; +// @Schema(description = "科目分配的序号(DZEKKN),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") +// @NotNull(message = "科目分配序号不能为空") +// @ExcelProperty("科目分配序号") +// private Integer serialNo; +// +// @Schema(description = "总账科目编号(SAKNR)", example = "1001010000") +// @ExcelProperty("总账科目") +// private String glAccount; +// +// @Schema(description = "成本中心(KOSTL),科目分配类别为K或F时必填", example = "C0010001") +// @ExcelProperty("成本中心") +// private String costcenter; +// +// @Schema(description = "订单号(AUFNR),科目分配类别为F时必填", example = "OR0010001") +// @ExcelProperty("订单号") +// private String orderid; +// +// @Schema(description = "主资产号(ANLN1),科目分配类别为A时必填", example = "AS0010001") +// @ExcelProperty("主资产号") +// private String assetNo; +// +// @Schema(description = "资产子编号(ANLN2),科目分配类别为A时必填,固定值‘0’", example = "0") +// @ExcelProperty("资产子编号") +// private String subNumber; +// } + + @Data + public static class comp { + @Schema(description = "计划行号(ETENR),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "计划行号不能为空") + @ExcelProperty("计划行号") + private Integer sched_line; + + @Schema(description = "项目编号(RSPOS),从1开始编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "项目编号不能为空") + @ExcelProperty("项目编号") + private Integer item_no; + + @Schema(description = "加工前物料号(MATNR)", requiredMode = Schema.RequiredMode.REQUIRED, example = "M0020001") + @NotEmpty(message = "加工前物料号不能为空") + @ExcelProperty("加工前物料号") + private String comp_material; + + @Schema(description = "委托加工发货工厂(PLANT)", requiredMode = Schema.RequiredMode.REQUIRED, example = "1001") + @NotEmpty(message = "委托加工发货工厂不能为空") + @ExcelProperty("委托发货工厂") + private String comp_plant; + + @Schema(description = "委托加工需求数量(MENGE),保留3位小数", requiredMode = Schema.RequiredMode.REQUIRED, example = "95.000") + @NotNull(message = "委托加工需求数量不能为空") + @ExcelProperty("委托需求数量") + private BigDecimal entry_quantity; + + @Schema(description = "组件计量单位(MEINS),为空使用基本计量单位", example = "PC") + @ExcelProperty("组件计量单位") + private String entry_uom; + } + +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java index 56377c5..678515a 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionPageReqVO.java @@ -29,4 +29,6 @@ public class ErpProductiveVersionPageReqVO extends PageParam { @Schema(description = "组计数器", example = "15610") private Long groupCount; + @Schema(description = "是否启用") + private String isEnable; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java index a40b721..39dff3b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionRespVO.java @@ -42,4 +42,7 @@ public class ErpProductiveVersionRespVO { @ExcelProperty("组计数器") private Long groupCount; + @Schema(description = "是否启用") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java index 8039b33..ae375a6 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpProductiveVersionSaveReqVO.java @@ -1,5 +1,6 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @@ -38,4 +39,7 @@ public class ErpProductiveVersionSaveReqVO { @NotNull(message = "组计数器不能为空") private Long groupCount; + @Schema(description = "是否启用") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java index 7c73ae0..def8141 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehousePageReqVO.java @@ -8,6 +8,9 @@ import lombok.Data; @Data public class ErpWarehousePageReqVO extends PageParam { + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "工厂编码;将查询参数存入") private String factoryNumber; @@ -17,4 +20,8 @@ public class ErpWarehousePageReqVO extends PageParam { @Schema(description = "库位编码") private String number; + @Schema(description = "类型") + private String type; + + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java index b0e10f9..cac2001 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseRespVO.java @@ -2,6 +2,7 @@ package com.zt.plat.module.erp.controller.admin.erp.vo; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; +import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -18,6 +19,9 @@ public class ErpWarehouseRespVO { @ExcelProperty("工厂编码;将查询参数存入") private String factoryNumber; + @Schema(description = "工厂名称") + private String factoryName; + @Schema(description = "库位描述", requiredMode = Schema.RequiredMode.REQUIRED, example = "张三") @ExcelProperty("库位描述") private String name; @@ -26,4 +30,16 @@ public class ErpWarehouseRespVO { @ExcelProperty("库位编码") private String number; + @Schema(description = "类别") + private String type; + + @Schema(description = "绑定库位名") + private String relName; + + @Schema(description = "绑定库位编码") + private String relnumber; + + @Schema(description = "是否启用") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java index 1ed798e..548b700 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/controller/admin/erp/vo/ErpWarehouseSaveReqVO.java @@ -22,4 +22,16 @@ public class ErpWarehouseSaveReqVO { @NotEmpty(message = "库位编码不能为空") private String number; + @Schema(description = "类别") + private String type; + + @Schema(description = "绑定库位名") + private String relName; + + @Schema(description = "绑定库位编码") + private String relnumber; + + @Schema(description = "是否启用") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpFactoryDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpFactoryDO.java index 491b6e9..e86556c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpFactoryDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpFactoryDO.java @@ -1,12 +1,14 @@ package com.zt.plat.module.erp.dal.dataobject.erp; import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; + /** -* ERP工厂 DO -* -* @author 后台管理 -*/ + * ERP工厂 DO + * + * @author 后台管理 + */ @TableName("sply_erp_fact") @KeySequence("sply_erp_fact_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @@ -16,31 +18,58 @@ import lombok.*; @NoArgsConstructor @AllArgsConstructor /** -* 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO -*/ -public class ErpFactoryDO { - - + * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO + */ +public class ErpFactoryDO extends BusinessBaseDO { /** - * 主键 - */ + * 主键 + */ @TableId(type = IdType.ASSIGN_ID) private Long id; /** - * 工厂名称 - */ + * 工厂名称 + */ @TableField("NAME") private String name; /** - * 工厂编码 - */ + * 工厂编码 + */ @TableField("NUM") private String number; /** - * 公司编号 - */ + * 公司编号 + */ @TableField("CPN_ID") - private String companyId; + private String erpCompanyNumber; + /** + * 公司名称 + */ + @TableField(exist = false) + private String erpCompanyName; + + /** + * 类型 + */ + @TableField("TP") + private String type; + + /** + * 绑定工厂名 + */ + @TableField("REL_NAME") + private String relName; + + /** + * 绑定工厂编码 + */ + @TableField("REL_NUM") + private String relnumber; + + /** + * 类型 + */ + @TableField("IS_ENB") + private String isEnable; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpMaterialDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpMaterialDO.java index 8909732..00d0b39 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpMaterialDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpMaterialDO.java @@ -1,9 +1,12 @@ package com.zt.plat.module.erp.dal.dataobject.erp; import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; import java.time.LocalDateTime; +import java.util.List; + /** * ERP物料数据 DO * @@ -21,10 +24,8 @@ import java.time.LocalDateTime; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -//public class ErpMaterialDO extends BaseDO { -public class ErpMaterialDO { - - +public class ErpMaterialDO extends BusinessBaseDO { +//public class ErpMaterialDO { /** * 主键 @@ -97,7 +98,7 @@ public class ErpMaterialDO { @TableField("MTRL_LEN_DSP") private String materialLengthDescription; - @TableField(exist = false) - private Integer TENANT_ID; + @TableField("TP") + private String type; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java index 35d2098..752eb43 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpProductiveVersionDO.java @@ -63,4 +63,7 @@ public class ErpProductiveVersionDO { @TableField("GRP_CNT") private Long groupCount; + @TableField("IS_ENB") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpWarehouseDO.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpWarehouseDO.java index 54b1577..60bccd7 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpWarehouseDO.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/dataobject/erp/ErpWarehouseDO.java @@ -1,6 +1,7 @@ package com.zt.plat.module.erp.dal.dataobject.erp; import com.baomidou.mybatisplus.annotation.*; +import com.zt.plat.framework.mybatis.core.dataobject.BusinessBaseDO; import lombok.*; /** * ERP库位 DO @@ -18,7 +19,7 @@ import lombok.*; /** * 支持业务基类继承:isBusiness=true 时继承 BusinessBaseDO,否则继承 BaseDO */ -public class ErpWarehouseDO { +public class ErpWarehouseDO extends BusinessBaseDO { /** * 主键 @@ -30,6 +31,11 @@ public class ErpWarehouseDO { */ @TableField("FACT_NUM") private String factoryNumber; + /** + * 工厂名称;将查询参数存入 + */ + @TableField(exist = false) + private String factoryName; /** * 库位描述 */ @@ -41,4 +47,28 @@ public class ErpWarehouseDO { @TableField("NUM") private String number; + /** + * 类别 + */ + @TableField("TP") + private String type; + + /** + * 绑定库位名 + */ + @TableField("REL_NAME") + private String relName; + + /** + * 绑定库位编码 + */ + @TableField("REL_NUM") + private String relnumber; + + /** + * 类型 + */ + @TableField("IS_ENB") + private String isEnable; + } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java index a00e6c7..167de8b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpBomMapper.java @@ -25,6 +25,4 @@ public interface ErpBomMapper extends BaseMapperX { .eqIfPresent(ErpBomDO::getUnit, reqVO.getUnit()) .orderByDesc(ErpBomDO::getId)); } - - Long insertGetId(ErpBomDO aDo); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCostcenterMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCostcenterMapper.java index 5365316..de7d71e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCostcenterMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpCostcenterMapper.java @@ -29,6 +29,4 @@ public interface ErpCostcenterMapper extends BaseMapperX { .betweenIfPresent(ErpCostcenterDO::getEndDate, reqVO.getEndDate()) .orderByDesc(ErpCostcenterDO::getId)); } - - void updateBatchByNumber(@Param("list") List toUpdate); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpFactoryMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpFactoryMapper.java index a4a22a7..ce1ea5b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpFactoryMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpFactoryMapper.java @@ -18,13 +18,7 @@ import java.util.List; @Mapper public interface ErpFactoryMapper extends BaseMapperX { - default PageResult selectPage(ErpFactoryPageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(ErpFactoryDO::getName, reqVO.getName()) - .eqIfPresent(ErpFactoryDO::getNumber, reqVO.getNumber()) - .orderByDesc(ErpFactoryDO::getId)); - } - - void updateBatch(@Param("toUpdate") List toUpdate); + String selectMaxCode(); + List getPageByReq(ErpFactoryPageReqVO pageReqVO); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java index 1330186..ded32ed 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpMaterialMapper.java @@ -37,4 +37,8 @@ public interface ErpMaterialMapper extends BaseMapperX { } void updateBatchByNumber(@Param("toUpdate") List toUpdate); + + String selectMaxCode(); + + Integer selectByErpMNumbers(List erpMNumber); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java index 17558ed..26001f0 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpProductiveVersionMapper.java @@ -3,9 +3,11 @@ package com.zt.plat.module.erp.dal.mysql.erp; 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.erp.api.dto.ErpProductiveVersionReqDTO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpProductiveVersionDO; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; /** * ERP生产版本 Mapper @@ -27,4 +29,13 @@ public interface ErpProductiveVersionMapper extends BaseMapperX() + .eq(ErpProductiveVersionDO::getFactoryNumber, reqDTO.getFactoryNumber()) + .eq(ErpProductiveVersionDO::getMaterialNumber, reqDTO.getMaterialNumber()) + .eq(ErpProductiveVersionDO::getIsEnable, 1) + .last("LIMIT 1")).getProductiveVersionNumber(); + }; } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpWarehouseMapper.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpWarehouseMapper.java index 80bb229..ee619cb 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpWarehouseMapper.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/dal/mysql/erp/ErpWarehouseMapper.java @@ -7,6 +7,8 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehousePageReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * ERP库位 Mapper * @@ -15,13 +17,7 @@ import org.apache.ibatis.annotations.Mapper; @Mapper public interface ErpWarehouseMapper extends BaseMapperX { - default PageResult selectPage(ErpWarehousePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(ErpWarehouseDO::getFactoryNumber, reqVO.getFactoryNumber()) - .likeIfPresent(ErpWarehouseDO::getName, reqVO.getName()) -// .betweenIfPresent(ErpWarehouseDO::getCreateTime, reqVO.getCreateTime()) - .eqIfPresent(ErpWarehouseDO::getNumber, reqVO.getNumber()) - .orderByDesc(ErpWarehouseDO::getId)); - } + String selectMaxCode(); + List getPageByReq(ErpWarehousePageReqVO pageReqVO); } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/enums/OftenEnum.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/enums/OftenEnum.java similarity index 97% rename from zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/enums/OftenEnum.java rename to zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/enums/OftenEnum.java index 6155c96..f7f8803 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/common/enums/OftenEnum.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/enums/OftenEnum.java @@ -1,4 +1,4 @@ -package com.zt.plat.module.erp.common.enums; +package com.zt.plat.module.erp.enums; import lombok.Data; diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/ErpJob.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/ErpJob.java new file mode 100644 index 0000000..188602f --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/job/ErpJob.java @@ -0,0 +1,58 @@ +package com.zt.plat.module.erp.job; + +import com.xxl.job.core.handler.annotation.XxlJob; +import com.zt.plat.framework.tenant.core.job.TenantJob; +import com.zt.plat.module.erp.service.erp.*; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +@Component +@Slf4j +public class ErpJob { + + @Resource + private ErpAssetService erpAssetService; + @Resource + private ErpBomService erpBomService; + @Resource + private ErpCompanyService erpCompanyService; + @Resource + private ErpCostcenterService erpCostcenterService; + @Resource + private ErpCustomerService erpCustomerService; + @Resource + private ErpFactoryService erpFactoryService; + @Resource + private ErpInternalOrderService erpInternalOrderService; + @Resource + private ErpMaterialService erpMaterialService; + @Resource + private ErpProcessService erpProcessService; + @Resource + private ErpProductiveVersionService erpProductiveVersionService; + @Resource + private ErpPurchaseOrganizationService erpPurchaseOrganizationService; + @Resource + private ErpSalesOrganizationService erpSalesOrganizationService; + @Resource + private ErpWarehouseService erpWarehouseService; + + @XxlJob("callErpRfcInterface") + @TenantJob + public void execute() { + erpCompanyService.callErpRfcInterface(); + erpFactoryService.callErpRfcInterface(); + erpCustomerService.callErpRfcInterface(); + erpAssetService.callErpRfcInterface(); + erpBomService.callErpRfcInterface(); + erpCostcenterService.callErpRfcInterface(); + erpInternalOrderService.callErpRfcInterface(); + erpMaterialService.callErpRfcInterface(); + erpProcessService.callErpRfcInterface(); + erpProductiveVersionService.callErpRfcInterface(); + erpPurchaseOrganizationService.callErpRfcInterface(); + erpSalesOrganizationService.callErpRfcInterface(); + erpWarehouseService.callErpRfcInterface(); + } +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpAssetServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpAssetServiceImpl.java index e450a06..d0e3f47 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpAssetServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpAssetServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpAssetPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpAssetRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpAssetSaveReqVO; @@ -28,6 +29,7 @@ import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_ASSET_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_REDIS_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; /** @@ -42,6 +44,8 @@ public class ErpAssetServiceImpl implements ErpAssetService { @Resource private ErpAssetMapper erpAssetMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -106,48 +110,39 @@ public class ErpAssetServiceImpl implements ErpAssetService { @Transactional @XxlJob("getErpAssetTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.资产卡片; - String funcnr = funcnrEnum.getFuncnr(); - String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - // 构建req参数 - Map req = new HashMap<>(); -// List> datumList = new ArrayList<>(); -// Map datumEntry = new HashMap<>(); -// datumEntry.put("sign", "I"); -// datumEntry.put("option", "EQ"); -// datumEntry.put("low", LocalDate.now().toString()); -// datumList.add(datumEntry); -// req.put(funcnrEnum.getDatekey(), datumList); - JSONArray dataArrayALL = new JSONArray(); - String companyKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(companyKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - for (String number : redisCache.keySet()) { - req.put("BUKRS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.资产卡片; + String funcnr = funcnrEnum.getFuncnr(); + String key = "erpMap" + funcnr; + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + // 构建req参数 + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String companyKey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(companyKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); + } + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_ASSET_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -155,7 +150,7 @@ public class ErpAssetServiceImpl implements ErpAssetService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { String key = "erpMap" + funcnrEnum.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -201,7 +196,7 @@ public class ErpAssetServiceImpl implements ErpAssetService { Map deleteNumbers = new HashMap<>(); for (String number : numbers.keySet()) { if (!dataArrayNumbers.contains(number)) { - deleteNumbers.put(number,numbers.get(number)); + deleteNumbers.put(number, numbers.get(number)); } } return new ProcessingResult(toUpdate, toInsert, deleteNumbers, key); @@ -221,8 +216,8 @@ public class ErpAssetServiceImpl implements ErpAssetService { .in(ErpAssetDO::getMainAssetNumber, result.toInsert.stream().map(ErpAssetDO::getMainAssetNumber).collect(Collectors.toList())) ); Map numberIdMap = insertedRecords.stream() - .collect(Collectors.toMap(asset -> asset.getCompanyNumber() + "-" + asset.getMainAssetNumber(), ErpAssetDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + .collect(Collectors.toMap(asset -> asset.getCompanyNumber() + "-" + asset.getMainAssetNumber(), ErpAssetDO::getId,(existing, replacement) -> replacement)); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpAssetMapper.updateBatch(result.toUpdate); @@ -231,7 +226,7 @@ public class ErpAssetServiceImpl implements ErpAssetService { // 使用流式处理和批处理优化删除逻辑 List idsToDelete = new ArrayList<>(result.deleteNumbers.values()); erpAssetMapper.deleteByIds(idsToDelete); - erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); + myRedisConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); } } @@ -241,10 +236,10 @@ public class ErpAssetServiceImpl implements ErpAssetService { private static class ProcessingResult { private final List toUpdate; private final List toInsert; - private final Map deleteNumbers; + private final Map deleteNumbers; private final String key; - public ProcessingResult(List toUpdate, List toInsert, Map deleteNumbers, String key) { + public ProcessingResult(List toUpdate, List toInsert, Map deleteNumbers, String key) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.deleteNumbers = deleteNumbers; @@ -259,7 +254,7 @@ public class ErpAssetServiceImpl implements ErpAssetService { String mapKey = asset.getCompanyNumber() + "-" + asset.getMainAssetNumber(); existingNumbers.put(mapKey, asset.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpBillMainServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBillMainServiceImpl.java index e51621b..ea310f6 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBillMainServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBillMainServiceImpl.java @@ -75,7 +75,7 @@ public class ErpBillMainServiceImpl implements ErpBillMainService { // 抽取重复代码:提交 ERP 并记录日志 private String submitToErp(ErpSubmitReqDTO reqDTO) { HashMap response = erpExternalApi.submitDataToErp(reqDTO); - return response.get("data"); + return response.get("resStr"); } @NotNull diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java index 72fcf7c..88f7f83 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomDetailServiceImpl.java @@ -4,8 +4,9 @@ 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.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zt.plat.module.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpBomDetailPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomDetailSaveReqVO; @@ -36,6 +37,8 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { @Resource private ErpBomDetailMapper erpBomDetailMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -107,14 +110,14 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { } private ProcessingResult processData(List updateReqVOS, String key) { - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); List dataArrayNumbers = new ArrayList<>(); - Map existingNumbers = erpConfig.getRedisCacheMap(key); + Map existingNumbers = myRedisConfig.getRedisCacheMap(key); for (ErpBomDetailDO updateReqVO : updateReqVOS) { String mapKey = updateReqVO.getBomId() + "-" + updateReqVO.getErpBomId(); if (existingNumbers.containsKey(mapKey)) { @@ -150,7 +153,7 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(asset -> asset.getBomId() + "-" + asset.getErpBomId(), ErpBomDetailDO::getId)); - erpConfig.addRedisCacheMap(result.key, numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpBomDetailMapper.updateBatch(result.toUpdate); @@ -161,7 +164,7 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { if (!idsToDelete.isEmpty()) { erpBomDetailMapper.deleteByIds(idsToDelete); } - erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); + myRedisConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); } } @@ -186,6 +189,6 @@ public class ErpBomDetailServiceImpl implements ErpBomDetailService { String mapKey = asset.getBomId() + "-" + asset.getErpBomId(); existingNumbers.put(mapKey, asset.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpBomServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java index d5cbe2b..fe0433e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpBomServiceImpl.java @@ -9,8 +9,9 @@ import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.framework.mybatis.core.query.LambdaQueryWrapperX; import com.zt.plat.module.erp.api.ErpExternalApi; import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; -import com.zt.plat.module.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpBomPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBomSaveReqVO; @@ -28,7 +29,7 @@ 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_BOM_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -43,6 +44,9 @@ public class ErpBomServiceImpl implements ErpBomService { @Resource private ErpBomMapper erpBomMapper; + @Resource + private MyRedisConfig myRedisConfig; + @Resource private ErpConfig erpConfig; @@ -113,40 +117,38 @@ public class ErpBomServiceImpl implements ErpBomService { @Transactional @XxlJob("getErpBomTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; - String funcnr = funcnrEnum.getFuncnr(); - String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - throw exception(ERP_BOM_NOT_EXISTS); - } - for (String factoryNumber : redisCache.keySet()) { - req.put("WERKS", factoryNumber); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.BOM清单; + String funcnr = funcnrEnum.getFuncnr(); + String key = "erpMap" + funcnr; + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_FACTORY_REDIS_NOT_EXISTS); + } + for (String factoryNumber : redisCache.keySet()) { + req.put("WERKS", factoryNumber); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_BOM_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -154,13 +156,13 @@ public class ErpBomServiceImpl implements ErpBomService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { String key = "erpMap" + funcnrEnum.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List erpBomDetailDOList = new ArrayList<>(); Map addnumbers = new HashMap<>(); List dataArrayNumbers = new ArrayList<>(); - + for (int i = 0; i < dataArray.size(); i++) { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { @@ -171,10 +173,10 @@ public class ErpBomServiceImpl implements ErpBomService { bomDO.setMaterialDescription(dataJson.getString("MAKTX")); bomDO.setQuantity(dataJson.getBigDecimal("BMENG")); bomDO.setUnit(dataJson.getString("BMEIN")); - + String number = bomDO.getFactoryNumber() + "-" + bomDO.getUpMaterial() + "-" + bomDO.getUseItem(); dataArrayNumbers.add(number); - + if (numbers.containsKey(number)) { // 更新 bomDO.setId(numbers.get(number)); @@ -223,19 +225,19 @@ public class ErpBomServiceImpl implements ErpBomService { if (!result.toUpdate.isEmpty()) { erpBomMapper.updateBatch(result.toUpdate); } - + // 保存或更新BOM详情 if (!result.erpBomDetailDOList.isEmpty()) { bomDetailService.saveOrUpdateErpBomDetail(result.erpBomDetailDOList); } - + // 更新Redis缓存 if (!result.addnumbers.isEmpty()) { - erpConfig.addRedisCacheMap(result.key, result.addnumbers); + myRedisConfig.addRedisCacheMap(result.key, result.addnumbers); } - + if (!result.deleteNumbers.isEmpty()) { - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -249,8 +251,8 @@ public class ErpBomServiceImpl implements ErpBomService { private final List deleteNumbers; private final List erpBomDetailDOList; - public ProcessingResult(List toUpdate, String key, Map addnumbers, - List deleteNumbers, List erpBomDetailDOList) { + public ProcessingResult(List toUpdate, String key, Map addnumbers, + List deleteNumbers, List erpBomDetailDOList) { this.toUpdate = toUpdate; this.key = key; this.addnumbers = addnumbers; @@ -266,7 +268,7 @@ public class ErpBomServiceImpl implements ErpBomService { String mapKey = bom.getFactoryNumber() + "-" + bom.getUpMaterial() + "-" + bom.getUseItem(); existingNumbers.put(mapKey, bom.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } 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 21a23e6..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 @@ -62,4 +62,18 @@ public interface ErpCompanyService { PageResult getErpCompanyPage(ErpCompanyPageReqVO pageReqVO); void callErpRfcInterface(); + + /** + * 通过公司编码获得ERP公司 + * + * @param number 公司编码 + * @return ERP公司 + */ + ErpCompanyDO getErpCompanyByNumber(String number); + + 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 64308e5..aa0237f 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,26 +7,36 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.AccountDTO; 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; import com.zt.plat.module.erp.dal.dataobject.erp.ErpCompanyDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpCompanyMapper; +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.beans.factory.annotation.Value; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; +import org.springframework.web.client.RestTemplate; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ApiConstants.TABLE_FIELD_SPLY_ERP_CPN_NUM; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COMPANY_NOT_EXISTS; -import static dm.jdbc.util.DriverUtil.log; /** * ERP公司 Service 实现类 @@ -39,9 +49,16 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { @Resource private ErpCompanyMapper erpCompanyMapper; - + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; + @Value("${erp.address}") + private String erpAddress; + @Value("${erp.sapsys}") + private String sapsys; + @Resource + private BaseApi baseApi; @Override public ErpCompanyRespVO createErpCompany(ErpCompanySaveReqVO createReqVO) { @@ -104,30 +121,30 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { @Transactional @XxlJob("getCompanyTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); - if (dataArray == null || dataArray.isEmpty()) { - return; - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArray, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_COMPANY_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } + + @Override + public ErpCompanyDO getErpCompanyByNumber(String number) { + return erpCompanyMapper.selectOne(TABLE_FIELD_SPLY_ERP_CPN_NUM, number); } /** @@ -135,7 +152,7 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -187,7 +204,7 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCompanyDO::getNumber, ErpCompanyDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCompanyMapper.updateBatch(result.toUpdate); @@ -195,7 +212,7 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpCompanyMapper.delete(new LambdaQueryWrapperX().in(ErpCompanyDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -221,7 +238,58 @@ public class ErpCompanyServiceImpl implements ErpCompanyService { Map existingNumbers = erpCompanyMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpCompanyDO::getNumber, ErpCompanyDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } + @Override + public void test() { + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + myRedisConfig.getRedisCacheMap(key); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (CollUtil.isEmpty(dataArray)) { + throw exception(ERP_COMPANY_NOT_EXISTS); + } + } + + @Override + public String test1() { + String address = erpAddress + "-" + sapsys; + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.公司代码; + String funcnr = funcnrEnum.getFuncnr(); + + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/get"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("sapsys", sapsys); + requestBody.put("funcnr", funcnr); // 获取枚举值 + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.valueOf(MediaType.APPLICATION_JSON_UTF8_VALUE)); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + try { + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + return url + requestEntity + response; + } catch (Exception e) { + return url + requestEntity; + } + } + + @Override + public String test2() { + AccountDTO respVO = new AccountDTO(); + respVO.setCustomerNumber("50000760"); + List dtos = baseApi.getAccountNoPage(respVO); + return dtos.toString(); + } } \ 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/ErpContractService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java index f1860b9..dfd863a 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractService.java @@ -7,6 +7,7 @@ import com.zt.plat.module.erp.controller.admin.erp.vo.ErpContractSaveReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpContractDO; import jakarta.validation.Valid; +import java.util.HashMap; import java.util.List; /** @@ -53,6 +54,14 @@ public interface ErpContractService { */ ErpContractDO getErpContract(Long id); + /** + * 获得ERP合同映射通过合同主信息主键 + * + * @param contractMainId 合同主信息主键 + * @return ERP合同映射 + */ + ErpContractDO getErpContractByMainId(Long contractMainId); + /** * 获得ERP合同映射分页 * @@ -62,4 +71,12 @@ public interface ErpContractService { PageResult getErpContractPage(ErpContractPageReqVO pageReqVO); void callErpRfcInterface(); + + /** + * 合同提交ERP + * + * @param erpContractVO ERP合同映射数据 + * @return ERP合同映射 + */ + HashMap submitErp(ErpContractSaveReqVO erpContractVO); } \ 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/ErpContractServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java index 0aaac6b..21f750c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpContractServiceImpl.java @@ -6,25 +6,30 @@ 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.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.erp.api.ErpExternalApi; +import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; 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.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_CONTRACT_NOT_EXISTS; -import static dm.jdbc.util.DriverUtil.log; /** * ERP合同映射 Service 实现类 @@ -38,9 +43,14 @@ public class ErpContractServiceImpl implements ErpContractService { @Resource private ErpContractMapper erpContractMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; + @Resource + public ErpExternalApi erpExternalApi; + @Override public ErpContractRespVO createErpContract(ErpContractSaveReqVO createReqVO) { // 插入 @@ -68,12 +78,12 @@ public class ErpContractServiceImpl implements ErpContractService { } @Override - public void deleteErpContractListByIds(List ids) { + public void deleteErpContractListByIds(List ids) { // 校验存在 validateErpContractExists(ids); // 删除 erpContractMapper.deleteByIds(ids); - } + } private void validateErpContractExists(List ids) { List list = erpContractMapper.selectByIds(ids); @@ -93,34 +103,240 @@ 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 getErpContractPage(ErpContractPageReqVO pageReqVO) { - return erpContractMapper.selectPage(pageReqVO); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息; + String funcnr = funcnrEnum.getFuncnr(); + Map req = new HashMap<>(); + + // 构建查询参数 + req.put("BUKRS", pageReqVO.getContractSignNumber()); + req.put("PARTNER", pageReqVO.getSupplierNumber()); + req.put("INEDR", pageReqVO.getContractCategory()); + req.put("ZHTBH", pageReqVO.getContractTypeNumber()); + req.put("ZHTMC", pageReqVO.getContractName()); + + // 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + // 返回空结果而不是抛出异常 + return new PageResult<>(new ArrayList<>(), 0L); + } + + List list = new ArrayList<>(); + for (int i = 0; i < dataArray.size(); i++) { + JSONObject dataJson = dataArray.getJSONObject(i); + if (dataJson != null) { + ErpContractDO contractDO = new ErpContractDO(); + + // 基本信息 + contractDO.setContractPaperNumber(dataJson.getString("ZHTBH").trim()); + contractDO.setContractName(dataJson.getString("ZHTMC")); + contractDO.setContractTypeName(dataJson.getString("TYPENM")); + contractDO.setSupplierName(dataJson.getString("ZBPNM")); + + // 日期处理 + String signDate = dataJson.getString("ZQDATE"); + String startDate = dataJson.getString("ZSDATE"); + String stopDate = dataJson.getString("ZEDATE"); + + if (signDate != null && !signDate.equals("0000-00-00")) { + try { + contractDO.setSignDate(LocalDate.parse(signDate)); + } catch (Exception e) { + // 忽略日期解析错误 + } + } + + if (startDate != null && !startDate.equals("0000-00-00")) { + try { + contractDO.setStartDate(LocalDate.parse(startDate)); + } catch (Exception e) { + // 忽略日期解析错误 + } + } + + if (stopDate != null && !stopDate.equals("0000-00-00")) { + try { + contractDO.setStopDate(LocalDate.parse(stopDate)); + } catch (Exception e) { + // 忽略日期解析错误 + } + } + contractDO.setBasicAmount(dataJson.getBigDecimal("ZDMBTR")); + contractDO.setRemark(dataJson.getString("ZREMARK")); + list.add(contractDO); + } + } + // 返回分页结果 + return new PageResult<>(list, (long) list.size()); } @Override @Transactional @XxlJob("getErpContractTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.合同信息; - String funcnr = funcnrEnum.getFuncnr(); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, null); - if (dataArray == null || dataArray.isEmpty()) { - return; - } + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.合同信息; + String funcnr = funcnrEnum.getFuncnr(); - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArray,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String commanyKey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(commanyKey); + if (CollUtil.isEmpty(redisCache)) { + return; } + String cstmKey = "erpMap" + OftenEnum.FuncnrEnum.客商信息.getFuncnr(); + Map redisCachecstmKey = myRedisConfig.getRedisCacheMap(cstmKey); + if (CollUtil.isEmpty(redisCachecstmKey)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String INEDR : new String[]{"1", "2"}) { + req.put("INEDR", INEDR); + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + for (String partner : redisCachecstmKey.keySet()) { + req.put("PARTNER", partner); + + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, null); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray != null) { + dataArrayALL.addAll(dataArray); + } + } + } + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_CONTRACT_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); + } + + @Override + public HashMap submitErp(ErpContractSaveReqVO erpContractVO) { + + // 转换为DO + ErpContractDO erpContract = BeanUtils.toBean(erpContractVO, ErpContractDO.class); + + // 根据合同主信息ID查询合同映射 + ErpContractDO erpContractDO = getErpContractByMainId(erpContract.getContractMainId()); + if (erpContractDO == null) { + // 不存在映射表则新增 + erpContract.setDeleted(false); + erpContractMapper.insert(erpContract); + } else { + // 存在映射表则更新 + erpContract.setId(erpContractDO.getId()); + erpContractMapper.updateById(erpContract); + } + + // 构建ERP接口的参数 + ErpSubmitReqDTO erpSubmitReqDTO = new ErpSubmitReqDTO(); + erpSubmitReqDTO.setFuncnr("060"); + erpSubmitReqDTO.setBskey(erpContract.getContractPaperNumber()); + erpSubmitReqDTO.setUsrid(SecurityFrameworkUtils.getLoginUserId().toString()); + erpSubmitReqDTO.setUsrnm(SecurityFrameworkUtils.getLoginUserNickname()); + + Map head = new HashMap<>(); + // CZBS 操作标识 枚举值0:新增 1:修改 + head.put("CZBS", erpContract.getOperationId()); + // HTBH 合同编号 + head.put("HTBH", erpContract.getContractPaperNumber()); + // HTMC 合同名称 + head.put("HTMC", erpContract.getContractName()); + // HTLXBH 合同类型编号 + head.put("HTLXBH", erpContract.getContractTypeNumber()); + // HTLXMC 合同类型名称 + head.put("HTLXMC", erpContract.getContractTypeName()); + // HTLB 合同类别 枚举值:1:购销合同 + head.put("HTLB", erpContract.getContractCategory()); + // SFXNHT 是否虚拟合同 枚举值 0:否 1:是 + head.put("SFXNHT", erpContract.getIsVirtualContract()); + // WLDWBH 客户/供应商编号 如果合同类型是收入类的,传客户编号和客户名称; + head.put("WLDWBH", erpContract.getSupplierNumber()); + // WLDWMC 客户/供应商名称 如果合同类型是支出类的,传供应商编号和供应商名称; + head.put("WLDWMC", erpContract.getSupplierName()); + // ZLIFNR 代理方 + head.put("ZLIFNR", erpContract.getAgent()); + // HTSSZTBH 合同实施主体编号 SAP公司代码 + head.put("HTSSZTBH", erpContract.getContractImplementNumber()); + // HTQDZTBH 合同签订主体编号 SAP公司代码 + head.put("HTQDZTBH", erpContract.getContractSignNumber()); + // HTQDRQ 合同签订日期 格式:YYYY-MM-DD + head.put("HTQDRQ", erpContract.getSignDate()); + // HTQSRQ 合同起始日期 格式:YYYY-MM-DD + head.put("HTQSRQ", erpContract.getStartDate()); + // HTZZRQ 合同终止日期 格式:YYYY-MM-DD + head.put("HTZZRQ", erpContract.getStopDate()); + // BZBH 币种编号 CNY、USD… + head.put("BZBH", erpContract.getCurrency()); + // HTYBZJE 合同总金额(原币-含税) + head.put("HTYBZJE", erpContract.getSourceAmount()); + // HTBWBZJE 合同总金额(本位币-含税) + head.put("HTBWBZJE", erpContract.getBasicAmount()); + // BGHHTYBZJE 变更后合同总金额(原币-含税) 如果未做合同变更,金额等于合同总金额(原币-含税) + head.put("BGHHTYBZJE", erpContract.getChangeSourceAmount()); + // BGHHTBWBZJE 变更后合同总金额(本位币-含税) 如果未做合同变更,金额等于合同总金额(本位币-含税) + head.put("BGHHTBWBZJE", erpContract.getChangeBasicAmount()); + // HTZTBH 合同状态编号 + head.put("HTZTBH", erpContract.getStatusNumber()); + // HTZTMC 合同状态名称 + head.put("HTZTMC", erpContract.getStatusName()); + // SFYYFK 是否有预付款 枚举值 0:否 1:是 + head.put("SFYYFK", erpContract.getIsPrepayment()); + // YFKBL 预付款比例 如果是否有预付款为1,则必填 + head.put("YFKBL", erpContract.getPrepaymentRatio()); + // YFKJE 预付款金额 + head.put("YFKJE", erpContract.getPrepaymentAmount()); + // LYBZJBGQYB 履约保证金-变更前(原币) + head.put("LYBZJBGQYB", erpContract.getSourceBeforeBond()); + // LYBZJBGQBWB 履约保证金-变更前(本位币) + head.put("LYBZJBGQBWB", erpContract.getBasicBeforeBond()); + // LYBZJBGHYB 履约保证金-变更后(原币) + head.put("LYBZJBGHYB", erpContract.getSourceAfterBond()); + // LYBZJBGHBWB 履约保证金-变更后(本位币) + head.put("LYBZJBGHBWB", erpContract.getBasicAfterBond()); + // SFHZBJ 是否含质保金 枚举值 0:否 1:是 + head.put("SFHZBJ", erpContract.getIsQualityassuranceAmount()); + // ZBJBL 质保金比例 如果是否含质保金为1,则必填 + head.put("ZBJBL", erpContract.getQualityassuranceRatio()); + // BZJJE 质保金金额 + head.put("BZJJE", erpContract.getQualityassuranceAmount()); + // SFNBQY 是否内部企业 枚举值 0:否 1:是 + head.put("SFNBQY", erpContract.getIsInternal()); + // SZXZ 收支性质 枚举值 1:收入 2:支出 + head.put("SZXZ", erpContract.getNature()); + // BZXX 备注信息 + head.put("BZXX", erpContract.getRemark()); + // SFKJHT 是否框架合同 0:否;1:是;当等于1时:合同总金额(本币)、合同总金额(原币)、变更后合同总金额(原币-含税)、变更后合同总金额(本位币-含税)赋默认值为:1000000000000000.00 + head.put("SFKJHT", erpContract.getIsFramework()); + // JNJW 境内/境外 枚举值 0:境内 1:境外 + head.put("JNJW", erpContract.getIsDomestic()); + // JZFWFSD 建筑服务发生地 + head.put("JZFWFSD", erpContract.getArchitectureService‌Place()); + // DDSKJE 达到收款条件金额 + head.put("DDSKJE", erpContract.getPayeeConditionAmount()); + + Map req = new HashMap<>(); + req.put("header", head); + erpSubmitReqDTO.setReq(req); + + HashMap response = erpExternalApi.submitDataToErp(erpSubmitReqDTO); + + return response; } /** @@ -128,7 +344,7 @@ public class ErpContractServiceImpl implements ErpContractService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + Map> numbers = myRedisConfig.numbers(dataArray, key, funcnr.getDatakey()); List allnumbers = numbers.get("all"); List comnumbers = numbers.get("com"); List toUpdate = new ArrayList<>(); @@ -154,7 +370,7 @@ public class ErpContractServiceImpl implements ErpContractService { } } - return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -168,7 +384,7 @@ public class ErpContractServiceImpl implements ErpContractService { if (!result.toUpdate.isEmpty()) { erpContractMapper.updateBatch(result.toUpdate); } - erpConfig.updateRedisCache(result.key,result.allnumbers); + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -180,7 +396,7 @@ public class ErpContractServiceImpl implements ErpContractService { private final String key; private final List allnumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCostcenterServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCostcenterServiceImpl.java index bf01f04..fa5ffe8 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCostcenterServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCostcenterServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpCostcenterPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCostcenterRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCostcenterSaveReqVO; @@ -27,6 +28,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_CONTRACT_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_COSTCENTER_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -42,6 +44,8 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { @Resource private ErpCostcenterMapper erpCostcenterMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -72,12 +76,12 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { } @Override - public void deleteErpCostcenterListByIds(List ids) { + public void deleteErpCostcenterListByIds(List ids) { // 校验存在 validateErpCostcenterExists(ids); // 删除 erpCostcenterMapper.deleteByIds(ids); - } + } private void validateErpCostcenterExists(List ids) { List list = erpCostcenterMapper.selectByIds(ids); @@ -106,42 +110,40 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { @Transactional @XxlJob("getErpCostcenterTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.成本中心; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap( key).isEmpty()){ - initializeMap(key); - } - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String commanyKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(commanyKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("BUKRS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.成本中心; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnr; + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String commanyKey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(commanyKey); + if (CollUtil.isEmpty(redisCache)) { + return; + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_COSTCENTER_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -149,7 +151,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -170,7 +172,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { DO.setEndDate(LocalDateTime.parse(dataJson.getString("DATBI") + "T00:00:00")); } DO.setScopeName(dataJson.getString("FKBTX")); - if (numbers.get(number)!=null) { + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -188,7 +190,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { deleteNumbers.add(number); } } - return new ProcessingResult(toUpdate, toInsert,deleteNumbers,key); + return new ProcessingResult(toUpdate, toInsert, deleteNumbers, key); } /** @@ -208,7 +210,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCostcenterDO::getNumber, ErpCostcenterDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCostcenterMapper.updateBatch(result.toUpdate); @@ -216,7 +218,7 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpCostcenterMapper.delete(new LambdaQueryWrapperX().in(ErpCostcenterDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key,result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -229,17 +231,18 @@ public class ErpCostcenterServiceImpl implements ErpCostcenterService { private final List deleteNumbers; private final String key; - public ProcessingResult(List toUpdate, List toInsert,List deleteNumbers,String key) { + public ProcessingResult(List toUpdate, List toInsert, List deleteNumbers, String key) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.deleteNumbers = deleteNumbers; this.key = key; } } + private void initializeMap(String key) { Map existingNumbers = erpCostcenterMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpCostcenterDO::getNumber, ErpCostcenterDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpCustomerServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java index 8dc60dd..7576678 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpCustomerServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpCustomerPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpCustomerSaveReqVO; @@ -41,10 +42,12 @@ import static dm.jdbc.util.DriverUtil.log; public class ErpCustomerServiceImpl implements ErpCustomerService { @Resource - private ErpConfig erpConfig; + private MyRedisConfig myRedisConfig; @Resource private ErpCustomerMapper erpCustomerMapper; + @Resource + private ErpConfig erpConfig; @Override public ErpCustomerRespVO createErpCustomer(ErpCustomerSaveReqVO createReqVO) { @@ -107,46 +110,44 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { @Transactional @XxlJob("getErpCustomerTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; - String funcnr = funcnrEnum.getFuncnr(); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.客商信息; + String funcnr = funcnrEnum.getFuncnr(); - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - // 构建req参数 - Map req = new HashMap<>(); - List> datumList = new ArrayList<>(); - Map datumEntry = new HashMap<>(); - // 构建datum参数数组 - datumEntry.put("sign", "I"); - datumEntry.put("option", "EQ"); - datumEntry.put("low", LocalDate.now().toString()); - datumList.add(datumEntry); - req.put(funcnrEnum.getDatekey(), datumList); - - // 1. 调用ERP接口获取数据 - JSONArray dataArrayALL = new JSONArray(); - for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { - req.put("mode", type.modetype); - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + + // 1. 调用ERP接口获取数据 + JSONArray dataArrayALL = new JSONArray(); + for (OftenEnum.ModeTypeEnum type : OftenEnum.ModeTypeEnum.values()) { + req.put("mode", type.modetype); + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get(funcnrEnum.getDatakey()); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + return; + } + + // 2. 处理数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -154,7 +155,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { String key = "erpMap" + funcnrEnum.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -162,25 +163,30 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { for (int i = 0; i < dataArray.size(); i++) { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { - String number = dataJson.getString(funcnrEnum.getDatakey()).trim(); + String number = dataJson.getString(funcnrEnum.getDatakey()); + if (number != null) { + number = number.trim(); + } ErpCustomerDO DO = new ErpCustomerDO(); DO.setName(dataJson.getString("NAME_ORG1")); DO.setNumber(number); DO.setAccountGroup(dataJson.getString("BU_GROUP")); DO.setDescription(dataJson.getString("BU_SORT1")); DO.setCenterNumber(dataJson.getString("BU_SORT2")); - if (!dataJson.getString("CRDAT").equals("0000-00-00")) { - DO.setCreateDate(LocalDateTime.parse(dataJson.getString("CRDAT") + "T00:00:00")); + String crdat = dataJson.getString("CRDAT"); + if (crdat != null && !crdat.equals("0000-00-00")) { + DO.setCreateDate(LocalDateTime.parse(crdat + "T00:00:00")); } - if (!dataJson.getString("CHDAT").equals("0000-00-00")) { - DO.setRepairDate(LocalDateTime.parse(dataJson.getString("CHDAT") + "T00:00:00")); + String chdat = dataJson.getString("CHDAT"); + if (chdat != null && !chdat.equals("0000-00-00")) { + DO.setRepairDate(LocalDateTime.parse(chdat + "T00:00:00")); } DO.setIsGiveback(dataJson.getString("XDELE")); DO.setIsProvisional(dataJson.getString("XBLCK")); // DO.setType(type.modetype); // 使用 Map 优化查找效率,避免每次遍历 comnumbers 列表 - if (numbers.get(number)!=null) { + if (number != null && numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -211,7 +217,7 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpCustomerDO::getNumber, ErpCustomerDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpCustomerMapper.updateBatch(result.toUpdate); @@ -237,6 +243,6 @@ public class ErpCustomerServiceImpl implements ErpCustomerService { Map existingNumbers = erpCustomerMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpCustomerDO::getNumber, ErpCustomerDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpFactoryService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryService.java index 3583dda..5f9cb98 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryService.java @@ -62,4 +62,6 @@ public interface ErpFactoryService { PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO); void callErpRfcInterface(); + + void enableFactoryList(List saveReqVOS); } \ 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/ErpFactoryServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryServiceImpl.java index 039d8de..7a69790 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpFactoryServiceImpl.java @@ -7,14 +7,16 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpFactoryPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactoryRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpFactorySaveReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpFactoryDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpFactoryMapper; import jakarta.annotation.Resource; +import org.apache.ibatis.executor.BatchResult; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -26,7 +28,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_FACTORY_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,13 +43,32 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Resource private ErpFactoryMapper erpFactoryMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @Override public ErpFactoryRespVO createErpFactory(ErpFactorySaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getNumber()); // 插入 ErpFactoryDO erpFactory = BeanUtils.toBean(createReqVO, ErpFactoryDO.class); + // 工厂编码自动生成,格式 GC-0001,依次新增 + if (erpFactory.getNumber() == null) { + String maxCode = erpFactoryMapper.selectMaxCode(); + if (maxCode == null) { + erpFactory.setNumber("GC-0001"); + } else { + String prefix = "GC-"; + String numberPart = maxCode.substring(prefix.length()); + int nextNumber = Integer.parseInt(numberPart) + 1; + String nextCode = prefix + String.format("%04d", nextNumber); + erpFactory.setNumber(nextCode); + } + } + erpFactory.setType("SPLY"); + erpFactory.setIsEnable("1"); erpFactoryMapper.insert(erpFactory); // 返回 return BeanUtils.toBean(erpFactory, ErpFactoryRespVO.class); @@ -59,6 +80,9 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { validateErpFactoryExists(updateReqVO.getId()); // 更新 ErpFactoryDO updateObj = BeanUtils.toBean(updateReqVO, ErpFactoryDO.class); + if (updateObj.getType().equals("ERP") || updateObj.getIsEnable().equals("1")) { + throw exception(ERP_FACTORY_NOT_ALLOW_UPDATE); + } erpFactoryMapper.updateById(updateObj); } @@ -71,12 +95,12 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { } @Override - public void deleteErpFactoryListByIds(List ids) { + public void deleteErpFactoryListByIds(List ids) { // 校验存在 validateErpFactoryExists(ids); // 删除 erpFactoryMapper.deleteByIds(ids); - } + } private void validateErpFactoryExists(List ids) { List list = erpFactoryMapper.selectByIds(ids); @@ -91,6 +115,14 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { } } + private void validateErpFactoryExistsNumber(String number) { + List list = erpFactoryMapper.selectList(new LambdaQueryWrapperX()) + .stream().filter(erpFactoryDO -> erpFactoryDO.getNumber().equals(number)).toList(); + if (!list.isEmpty()) { + throw exception(ERP_FACTORY_EXISTS); + } + } + @Override public ErpFactoryDO getErpFactory(Long id) { return erpFactoryMapper.selectById(id); @@ -98,56 +130,81 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { @Override public PageResult getErpFactoryPage(ErpFactoryPageReqVO pageReqVO) { - return erpFactoryMapper.selectPage(pageReqVO); + // 获取分页数据 + List list = erpFactoryMapper.getPageByReq(pageReqVO); + if (list == null) { + list = CollUtil.newArrayList(); + } + // 分页处理 + int pageNo = pageReqVO.getPageNo(); + int pageSize = pageReqVO.getPageSize(); + int total = list.size(); + // 计算分页起始和结束位置 + int fromIndex = (pageNo - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, total); + // 如果起始位置超出范围,则返回空列表 + if (fromIndex >= total) { + return new PageResult<>(new ArrayList<>(), (long) total); + } + // 截取当前页数据 + List pageList = list.subList(fromIndex, toIndex); + return new PageResult<>(pageList, (long) total); } + + @Override + public void enableFactoryList(List saveReqVOS) { + List updateObj = BeanUtils.toBean(saveReqVOS, ErpFactoryDO.class); + List count = erpFactoryMapper.updateById(updateObj); + if (CollUtil.isEmpty(count)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + } + @Override @Transactional @XxlJob("getErpFactoryTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.工厂信息; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - // 1. 调用ERP接口获取数据 - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String companykey = "erp" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(companykey); - if (CollUtil.isEmpty(redisCache)) { - throw new RuntimeException("ERP公司代码缓存数据丢失,请重新同步公司代码"); - } - for (String companyNumber : redisCache.keySet()) { - req.put("BUKRS", companyNumber); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - // 往每个子项中添加BUKRS字段 - for (int j = 0; j < dataArray.size(); j++) { - JSONObject item = dataArray.getJSONObject(j); - if (item != null) { - item.put("BUKRS", companyNumber); - } - } - - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.工厂信息; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + // 1. 调用ERP接口获取数据 + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String companykey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(companykey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); + } + for (String companyNumber : redisCache.keySet()) { + req.put("BUKRS", companyNumber); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("BUKRS", companyNumber); + } + } + dataArrayALL.addAll(dataArray); + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -155,7 +212,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -167,8 +224,9 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { ErpFactoryDO DO = new ErpFactoryDO(); DO.setName(dataJson.getString("NAME1")); DO.setNumber(number); - DO.setCompanyId(dataJson.getString("BUKRS")); - if (numbers.get(number)!=null) { + DO.setErpCompanyNumber(dataJson.getString("BUKRS")); + DO.setType("ERP"); + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -187,7 +245,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { deleteNumbers.add(number); } } - return new ProcessingResult(toUpdate, toInsert,key,deleteNumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -207,7 +265,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpFactoryDO::getNumber, ErpFactoryDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpFactoryMapper.updateBatch(result.toUpdate); @@ -215,7 +273,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpFactoryMapper.delete(new LambdaQueryWrapperX().in(ErpFactoryDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -228,7 +286,7 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { private final String key; private final List deleteNumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List deleteNumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List deleteNumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; @@ -238,8 +296,8 @@ public class ErpFactoryServiceImpl implements ErpFactoryService { private void initializeMap(String key) { Map existingNumbers = erpFactoryMapper.selectList(new LambdaQueryWrapperX()) - .stream() + .stream().filter(erpFactoryDO -> erpFactoryDO.getType().equals("ERP")) .collect(Collectors.toMap(ErpFactoryDO::getNumber, ErpFactoryDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpInternalOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpInternalOrderServiceImpl.java index fc09dbd..2df0789 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpInternalOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpInternalOrderServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpInternalOrderPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpInternalOrderRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpInternalOrderSaveReqVO; @@ -26,7 +27,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_INTERNAL_ORDER_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { @Resource private ErpInternalOrderMapper erpInternalOrderMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -105,43 +108,41 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { @Transactional @XxlJob("getErpInternalOrderTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.内部订单; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String companyCode = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(companyCode); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("BUKRS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.内部订单; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String companyCode = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(companyCode); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (CollUtil.isEmpty(dataArrayALL)) { + throw exception(ERP_INTERNAL_ORDER_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -149,7 +150,7 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -164,7 +165,7 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { DO.setType(dataJson.getString("AUART")); DO.setIsOff(dataJson.getString("PHAS3")); DO.setIsFinish(dataJson.getString("PHAS2")); - if (numbers.get(number)!=null) { + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -203,7 +204,7 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpInternalOrderDO::getNumber, ErpInternalOrderDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpInternalOrderMapper.updateBatch(result.toUpdate); @@ -211,7 +212,7 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpInternalOrderMapper.delete(new LambdaQueryWrapperX().in(ErpInternalOrderDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -236,6 +237,6 @@ public class ErpInternalOrderServiceImpl implements ErpInternalOrderService { Map existingNumbers = erpInternalOrderMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpInternalOrderDO::getNumber, ErpInternalOrderDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpMaterialService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialService.java index 976b0ca..fffbad3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialService.java @@ -62,4 +62,6 @@ public interface ErpMaterialService { PageResult getErpMaterialPage(ErpMaterialPageReqVO pageReqVO); void callErpRfcInterface(); + + PageResult getErpMaterialPageAndOther(ErpMaterialPageReqVO pageReqVO); } \ 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/ErpMaterialServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialServiceImpl.java index 8d785d5..22ea133 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpMaterialServiceImpl.java @@ -7,8 +7,12 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +import com.zt.plat.module.api.BaseApi; +import com.zt.plat.module.api.dto.MaterialOtherDTO; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO; +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.ErpMaterialPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpMaterialSaveReqVO; @@ -28,7 +32,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_MATERIAL_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -43,12 +47,32 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { @Resource private ErpMaterialMapper erpMaterialMapper; @Resource + private BaseApi baseApi; + @Resource + private MyRedisConfig myRedisConfig; + @Resource private ErpConfig erpConfig; @Override public ErpMaterialRespVO createErpMaterial(ErpMaterialSaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getDownCenterNumber()); // 插入 ErpMaterialDO erpMaterial = BeanUtils.toBean(createReqVO, ErpMaterialDO.class); + // 工厂编码自动生成,格式 GC-0001,依次新增 + if (erpMaterial.getDownCenterNumber() == null) { + String maxCode = erpMaterialMapper.selectMaxCode(); + if (maxCode == null) { + erpMaterial.setDownCenterNumber("WL-0001"); + } else { + String prefix = "WL-"; + String numberPart = maxCode.substring(prefix.length()); + int nextNumber = Integer.parseInt(numberPart) + 1; + String nextCode = prefix + String.format("%04d", nextNumber); + erpMaterial.setDownCenterNumber(nextCode); + } + } + erpMaterial.setType("SPLY"); erpMaterialMapper.insert(erpMaterial); // 返回 return BeanUtils.toBean(erpMaterial, ErpMaterialRespVO.class); @@ -60,7 +84,11 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { validateErpMaterialExists(updateReqVO.getId()); // 更新 ErpMaterialDO updateObj = BeanUtils.toBean(updateReqVO, ErpMaterialDO.class); - erpMaterialMapper.updateById(updateObj); + if (updateObj.getType().equals("SPLY")) { + erpMaterialMapper.updateById(updateObj); + } else { + throw exception(ERP_MATERIAL_NOT_ALLOW_UPDATE); + } } @Override @@ -72,18 +100,34 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { } @Override - public void deleteErpMaterialListByIds(List ids) { + public void deleteErpMaterialListByIds(List ids) { // 校验存在 validateErpMaterialExists(ids); // 删除 erpMaterialMapper.deleteByIds(ids); - } + } private void validateErpMaterialExists(List ids) { List list = erpMaterialMapper.selectByIds(ids); if (CollUtil.isEmpty(list) || list.size() != ids.size()) { throw exception(ERP_MATERIAL_NOT_EXISTS); } + List erpMaterialDOList = list.stream() + .filter(erpMaterialDO -> erpMaterialDO.getType().equals("ERP")) + .collect(Collectors.toList()); + if (CollUtil.isEmpty(erpMaterialDOList)) { + throw exception(ERP_MATERIAL_NOT_ALLOW_DELETE); + } + // 优化成批量查询,使用IN语句 + List downCenterNumbers = list.stream() + .map(ErpMaterialDO::getDownCenterNumber) + .collect(Collectors.toList()); + + // 使用IN语句批量查询所有物料编码的数量 + Integer countMap = erpMaterialMapper.selectByErpMNumbers(downCenterNumbers); + if (countMap > 1) { + throw exception(ERP_MATERIAL_OTHER_NOT_ALLOW_DELETE); + } } private void validateErpMaterialExists(Long id) { @@ -92,6 +136,15 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { } } + private void validateErpFactoryExistsNumber(String number) { + List list = erpMaterialMapper.selectList(new LambdaQueryWrapperX()).stream() + .filter(erpWarehouseDO -> erpWarehouseDO.getDownCenterNumber().equals(number)) + .toList(); + if (!list.isEmpty()) { + throw exception(ERP_MATERIAL_EXISTS); + } + } + @Override public ErpMaterialDO getErpMaterial(Long id) { return erpMaterialMapper.selectById(id); @@ -102,46 +155,61 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { return erpMaterialMapper.selectPage(pageReqVO); } + @Override + public PageResult getErpMaterialPageAndOther(ErpMaterialPageReqVO pageReqVO) { + try { + PageResult pageResult = erpMaterialMapper.selectPage(pageReqVO); + PageResult pageResultRespVo = BeanUtils.toBean(pageResult, ErpMaterialRespVO.class); + for (ErpMaterialRespVO respVO : pageResultRespVo.getList()) { + respVO.setMaterialNumber(respVO.getDownCenterNumber()); + MaterialOtherDTO dto = new MaterialOtherDTO(); + dto.setMaterialNumber(respVO.getDownCenterNumber()); + List dtos = baseApi.getMaterialOtherNoPage(dto); + if (dtos != null) { + respVO.setMaterialOtherDTOS(dtos); + } + } + return pageResultRespVo; + } catch (Exception e) { + throw exception(ERP_MATERIAL_NOT_EXISTS); + } + } + @Override @Transactional @XxlJob("getErpMaterialTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.物料数据; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erp" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCache(key)==null) { - initialize(key); - } - - // 构建req参数 - Map req = new HashMap<>(); - List> datumList = new ArrayList<>(); - Map datumEntry = new HashMap<>(); - datumEntry.put("sign", "I"); - datumEntry.put("option", "EQ"); -// datumEntry.put("low", "2021-05-16"); - datumEntry.put("low", LocalDate.now().toString()); - datumList.add(datumEntry); - req.put(funcnrEnum.getDatekey(), datumList); - - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - return; - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArray,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.物料数据; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erp" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCache(key) == null) { + initialize(key); } + + // 构建req参数 + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); +// datumEntry.put("low", "2021-05-20"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + return; + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArray, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -149,7 +217,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = erpConfig.numbers(dataArray, key,funcnr.getDatakey()); + Map> numbers = myRedisConfig.numbers(dataArray, key, funcnr.getDatakey()); List allnumbers = numbers.get("all"); List comnumbers = numbers.get("com"); List toUpdate = new ArrayList<>(); @@ -163,7 +231,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { DO.setDownCenterNumber(number); DO.setCenterNumber(dataJson.getString("BISMT")); if (!dataJson.getString("ERSDA").equals("0000-00-00")) { - DO.setCreateDate(LocalDateTime.parse(dataJson.getString("ERSDA")+"T00:00:00")); + DO.setCreateDate(LocalDateTime.parse(dataJson.getString("ERSDA") + "T00:00:00")); } DO.setMaterialType(dataJson.getString("MTART")); DO.setMaterialGroupDate(dataJson.getString("MATKL")); @@ -175,6 +243,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { DO.setExternalMaterialGroupDescription(dataJson.getString("EWBEZ")); DO.setMaterialName(dataJson.getString("MAKTX")); DO.setMaterialLengthDescription(dataJson.getString("LDESC")); + DO.setType("ERP"); if (comnumbers.contains(number)) { // 更新 @@ -186,7 +255,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { } } - return new ProcessingResult(toUpdate, toInsert,key,allnumbers); + return new ProcessingResult(toUpdate, toInsert, key, allnumbers); } /** @@ -200,7 +269,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { if (!result.toUpdate.isEmpty()) { erpMaterialMapper.updateBatchByNumber(result.toUpdate); } - erpConfig.updateRedisCache(result.key,result.allnumbers); + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** @@ -212,7 +281,7 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { private final String key; private final List allnumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List allnumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List allnumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; @@ -223,8 +292,9 @@ public class ErpMaterialServiceImpl implements ErpMaterialService { private void initialize(String key) { List existingNumbers = erpMaterialMapper.selectList(new LambdaQueryWrapperX()) .stream() + .filter(ErpMaterialDO -> ErpMaterialDO.getType().equals("ERP")) .map(ErpMaterialDO::getDownCenterNumber) .collect(Collectors.toList()); - erpConfig.updateRedisCache(key, existingNumbers); + myRedisConfig.updateRedisCache(key, existingNumbers); } } \ 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/ErpOrderService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java new file mode 100644 index 0000000..06cfcff --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderService.java @@ -0,0 +1,12 @@ +package com.zt.plat.module.erp.service.erp; + +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; + +public interface ErpOrderService { + + String submitOrderToErp061(ErpOrderSaveReqVO createVo); + + String submitOrderToErp062(ErpOrderUpdateReqVO createVo); +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java new file mode 100644 index 0000000..6eed869 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpOrderServiceImpl.java @@ -0,0 +1,89 @@ +package com.zt.plat.module.erp.service.erp; + + +import com.zt.plat.framework.security.core.util.SecurityFrameworkUtils; +import com.zt.plat.module.erp.api.ErpExternalApi; +import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpBillMainSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderSaveReqVO; +import com.zt.plat.module.erp.controller.admin.erp.vo.ErpOrderUpdateReqVO; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Service +public class ErpOrderServiceImpl implements ErpOrderService { + @Resource + public ErpExternalApi erpExternalApi; + + @Override + public String submitOrderToErp061(ErpOrderSaveReqVO createVo) { + + ErpSubmitReqDTO reqDTO = buildBaseReqDTO(createVo, "061"); + + Map req = new HashMap<>(); + req.put("head", createVo.getHead()); + req.put("item", createVo.getItems()); + req.put("comp", createVo.getComps()); + req.put("exte", createVo.getExte()); + req.put("acct", createVo.getAccts()); + reqDTO.setReq(req); + + return submitToErp(reqDTO); + } + + private ErpSubmitReqDTO buildBaseReqDTO(ErpOrderSaveReqVO vo, String funcnr) { + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + reqDTO.setFuncnr(funcnr); + reqDTO.setBskey(vo.getOrderNo()); + reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); + return reqDTO; + } + + + private String submitToErp(ErpSubmitReqDTO reqDTO) { + HashMap response = erpExternalApi.submitDataToErp(reqDTO); + return response.get("resStr"); + } + + + @Override + public String submitOrderToErp062(ErpOrderUpdateReqVO updateVo) { + ErpSubmitReqDTO reqDTO = buildBaseReqDTO062(updateVo, "062"); + Map req = new HashMap<>(); + Map head = new HashMap<>(); + Map exte= new HashMap<>(); + head.put("po_number", updateVo.getPoNumber()); + head.put("delete_ind", updateVo.getDeleteInd()); + head.put("currency", updateVo.getCurrency()); + head.put("exch_rate", updateVo.getExchRate()); + req.put("head", head); + exte.put("zzhth", updateVo.getZzhth()); + exte.put("zzxyh", updateVo.getZzhth()); + exte.put("zznote", updateVo.getZnote()); + exte.put("zzlifnr", updateVo.getZlifnr()); + req.put("exte", exte); + req.put("itex", updateVo.getItexs()); + req.put("item", updateVo.getItems()); + req.put("acct", updateVo.getAccts()); + req.put("comp", updateVo.getComps()); + reqDTO.setReq(req); + + + return submitToErp(reqDTO); + } + + private ErpSubmitReqDTO buildBaseReqDTO062(ErpOrderUpdateReqVO vo, String funcnr) { + ErpSubmitReqDTO reqDTO = new ErpSubmitReqDTO(); + reqDTO.setFuncnr(funcnr); + reqDTO.setBskey(vo.getPoNumber()); + reqDTO.setUsrid(String.valueOf(SecurityFrameworkUtils.getLoginUserId())); + reqDTO.setUsrnm((SecurityFrameworkUtils.getLoginUserNickname())); + return reqDTO; + } +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessDetailServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessDetailServiceImpl.java index 66dd1ce..bc87575 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessDetailServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessDetailServiceImpl.java @@ -4,8 +4,8 @@ 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.framework.mybatis.core.query.LambdaQueryWrapperX; -import com.zt.plat.module.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpProcessDetailPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessDetailRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessDetailSaveReqVO; @@ -37,7 +37,7 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { private ErpProcessDetailMapper erpProcessDetailMapper; @Resource - private ErpConfig erpConfig; + private MyRedisConfig myRedisConfig; @Override public ErpProcessDetailRespVO createErpProcessDetail(ErpProcessDetailSaveReqVO createReqVO) { @@ -66,12 +66,12 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { } @Override - public void deleteErpProcessDetailListByIds(List ids) { + public void deleteErpProcessDetailListByIds(List ids) { // 校验存在 validateErpProcessDetailExists(ids); // 删除 erpProcessDetailMapper.deleteByIds(ids); - } + } private void validateErpProcessDetailExists(List ids) { List list = erpProcessDetailMapper.selectByIds(ids); @@ -106,16 +106,19 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { } private ProcessingResult processData(List updateReqVOS, String key) { - if (erpConfig.getRedisCacheMap(key).isEmpty()) { + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { initializeMap(key); } List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); List dataArrayNumbers = new ArrayList<>(); - Map existingNumbers = erpConfig.getRedisCacheMap(key); + Map existingNumbers = myRedisConfig.getRedisCacheMap(key); for (ErpProcessDetailDO updateReqVO : updateReqVOS) { - String mapKey = updateReqVO.getProcessId() + "-" + updateReqVO.getProcessingNumber()+"-"+updateReqVO.getProcessingName(); + if (updateReqVO.getProcessingName() == null || updateReqVO.getProcessingName().isEmpty()) { + continue; + } + String mapKey = updateReqVO.getProcessId() + "-" + updateReqVO.getProcessingNumber()+"-" + updateReqVO.getWorkCenterNumber(); if (existingNumbers.containsKey(mapKey)) { updateReqVO.setId(existingNumbers.get(mapKey)); } @@ -147,10 +150,13 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { .in(ErpProcessDetailDO::getProcessId, result.toInsert.stream().map(ErpProcessDetailDO::getProcessId).distinct().collect(Collectors.toList())) .in(ErpProcessDetailDO::getProcessingNumber, result.toInsert.stream().map(ErpProcessDetailDO::getProcessingNumber).distinct().collect(Collectors.toList())) .in(ErpProcessDetailDO::getProcessingName, result.toInsert.stream().map(ErpProcessDetailDO::getProcessingName).distinct().collect(Collectors.toList())) + .in(ErpProcessDetailDO::getWorkCenterNumber, result.toInsert.stream().map(ErpProcessDetailDO::getWorkCenterNumber).distinct().collect(Collectors.toList())) ); Map numberIdMap = insertedRecords.stream() - .collect(Collectors.toMap(asset -> asset.getProcessId() + "-" + asset.getProcessingNumber()+"-"+asset.getProcessingName(), ErpProcessDetailDO::getId)); - erpConfig.addRedisCacheMap(result.key, numberIdMap); + .collect(Collectors.toMap( + asset -> asset.getProcessId() + "-" + asset.getProcessingNumber() + "-" + asset.getProcessingName() + "-" + asset.getWorkCenterNumber(), + ErpProcessDetailDO::getId, (existing, replacement) -> replacement)); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpProcessDetailMapper.updateBatch(result.toUpdate); @@ -161,7 +167,7 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { if (!idsToDelete.isEmpty()) { erpProcessDetailMapper.deleteByIds(idsToDelete); } - erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); + myRedisConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); } } @@ -183,9 +189,9 @@ public class ErpProcessDetailServiceImpl implements ErpProcessDetailService { List assets = erpProcessDetailMapper.selectList(new LambdaQueryWrapperX()); Map existingNumbers = new HashMap<>(); for (ErpProcessDetailDO asset : assets) { - String mapKey = asset.getProcessId() + "-" + asset.getProcessingNumber()+"-"+asset.getProcessingName(); + String mapKey = asset.getProcessId() + "-" + asset.getProcessingNumber()+ "-" + asset.getProcessingName()+ "-" + asset.getWorkCenterNumber(); existingNumbers.put(mapKey, asset.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpProcessServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessServiceImpl.java index 8135e63..ae2a28b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProcessServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpProcessPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProcessSaveReqVO; @@ -26,6 +27,7 @@ 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_FACTORY_NOT_EXISTS; import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_PROCESS_NOT_EXISTS; import static dm.jdbc.util.DriverUtil.log; @@ -41,6 +43,9 @@ public class ErpProcessServiceImpl implements ErpProcessService { @Resource private ErpProcessMapper erpProcessMapper; + @Resource + private MyRedisConfig myRedisConfig; + @Resource private ErpConfig erpConfig; @@ -109,41 +114,39 @@ public class ErpProcessServiceImpl implements ErpProcessService { @Transactional @XxlJob("getErpProcessTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.工艺路线; - String funcnr = funcnrEnum.getFuncnr(); - String key = "erpMap" + funcnr; - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - throw exception(ERP_PROCESS_NOT_EXISTS); - } - // 1. 调用ERP接口获取数据 - for (String factoryNumber : redisCache.keySet()) { - req.put("WERKS", factoryNumber); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.工艺路线; + String funcnr = funcnrEnum.getFuncnr(); + String key = "erpMap" + funcnr; + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String factoryNumber : redisCache.keySet()) { + req.put("WERKS", factoryNumber); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_PROCESS_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -151,7 +154,7 @@ public class ErpProcessServiceImpl implements ErpProcessService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnrEnum) { String key = "erpMap" + funcnrEnum.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List erpProcessDetailDOList = new ArrayList<>(); @@ -162,19 +165,29 @@ public class ErpProcessServiceImpl implements ErpProcessService { JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { ErpProcessDO DO = new ErpProcessDO(); - DO.setFactoryNumber(dataJson.getString("WERKS")); - DO.setMaterialNumber(dataJson.getString("MATNR")); - DO.setMaterialName(dataJson.getString("MAKTX")); - DO.setBlineGroup(dataJson.getString("PLNAL")); - DO.setGroupCount(dataJson.getLong("PLNNR")); - DO.setBlineDescription(dataJson.getString("KTEXT")); - DO.setUom(dataJson.getString("PLNME")); - DO.setUseDescription(dataJson.getString("VERWE")); - DO.setStatus(dataJson.getString("STATU")); - String number = DO.getFactoryNumber() + "-" + DO.getMaterialNumber() + "-" + DO.getBlineGroup(); + DO.setFactoryNumber(dataJson.getString("WERKS").trim()); + DO.setMaterialNumber(dataJson.getString("MATNR").trim()); + DO.setMaterialName(dataJson.getString("MAKTX").trim()); + DO.setBlineGroup(dataJson.getString("PLNAL").trim()); + Long groupCount = null; + String plnnrStr = dataJson.getString("PLNNR"); + if (plnnrStr != null && !plnnrStr.trim().isEmpty()) { + try { + groupCount = Long.valueOf(plnnrStr.trim()); + } catch (NumberFormatException e) { + log.error("转换PLNNR为Long类型失败: " + plnnrStr, e); + } + } + DO.setGroupCount(groupCount); + DO.setBlineDescription(dataJson.getString("KTEXT").trim()); + DO.setUom(dataJson.getString("PLNME").trim()); + DO.setUseDescription(dataJson.getString("VERWE").trim()); + DO.setStatus(dataJson.getString("STATU").trim()); + String number = DO.getFactoryNumber() + "-" + DO.getMaterialNumber() + "-" + DO.getBlineGroup().trim()+"-" + DO.getGroupCount(); dataArrayNumbers.add(number); if (numbers.get(number) != null) { // 更新 + DO.setId(numbers.get(number)); toUpdate.add(DO); } else { // 新增 @@ -229,11 +242,11 @@ public class ErpProcessServiceImpl implements ErpProcessService { // 更新Redis缓存 if (!result.addnumbers.isEmpty()) { - erpConfig.addRedisCacheMap(result.key, result.addnumbers); + myRedisConfig.addRedisCacheMap(result.key, result.addnumbers); } if (!result.deleteNumbers.isEmpty()) { - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -261,9 +274,9 @@ public class ErpProcessServiceImpl implements ErpProcessService { List bomList = erpProcessMapper.selectList(new LambdaQueryWrapperX()); Map existingNumbers = new HashMap<>(); for (ErpProcessDO bom : bomList) { - String mapKey = bom.getFactoryNumber() + "-" + bom.getMaterialNumber() + "-" + bom.getBlineGroup(); + String mapKey = bom.getFactoryNumber() + "-" + bom.getMaterialNumber() + "-" + bom.getBlineGroup()+"-" + bom.getGroupCount(); existingNumbers.put(mapKey, bom.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpProductiveOrderServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java index af449b3..8a7da2b 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveOrderServiceImpl.java @@ -6,8 +6,9 @@ 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.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpProductiveOrderPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveOrderSaveReqVO; @@ -27,7 +28,7 @@ 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_PRODUCTIVE_ORDER_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -44,6 +45,8 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService @Resource private ErpConfig erpConfig; + @Resource + private MyRedisConfig myRedisConfig; @Override public ErpProductiveOrderRespVO createErpProductiveOrder(ErpProductiveOrderSaveReqVO createReqVO) { @@ -116,7 +119,8 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService } // 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); if (dataArray == null || dataArray.isEmpty()) { // 返回空结果而不是抛出异常 return new PageResult<>(new ArrayList<>(), 0L); @@ -179,45 +183,43 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService @Transactional @XxlJob("getErpProductiveOrderTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单; - String funcnr = funcnrEnum.getFuncnr(); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产订单; + String funcnr = funcnrEnum.getFuncnr(); - Map req = new HashMap<>(); - List> datumList = new ArrayList<>(); - Map datumEntry = new HashMap<>(); - // 构建datum参数数组 - datumEntry.put("sign", "I"); - datumEntry.put("option", "EQ"); - datumEntry.put("low", LocalDate.now().toString()); - datumList.add(datumEntry); - req.put(funcnrEnum.getDatekey(), datumList); - JSONArray dataArrayALL = new JSONArray(); - List redisCache = erpConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache) { - req.put("WERKS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + Map req = new HashMap<>(); + List> datumList = new ArrayList<>(); + Map datumEntry = new HashMap<>(); + // 构建datum参数数组 + datumEntry.put("sign", "I"); + datumEntry.put("option", "EQ"); + datumEntry.put("low", LocalDate.now().toString()); + datumList.add(datumEntry); + req.put(funcnrEnum.getDatekey(), datumList); + JSONArray dataArrayALL = new JSONArray(); + List redisCache = myRedisConfig.getRedisCache(OftenEnum.FuncnrEnum.工厂信息.getFuncnr()); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_FACTORY_NOT_EXISTS); } + // 1. 调用ERP接口获取数据 + for (String number : redisCache) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_PRODUCTIVE_ORDER_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -225,7 +227,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erp" + funcnr.getFuncnr(); - Map> numbers = erpConfig.numbers(dataArray, key, funcnr.getDatakey()); + Map> numbers = myRedisConfig.numbers(dataArray, key, funcnr.getDatakey()); List allnumbers = numbers.get("all"); List comnumbers = numbers.get("com"); List toUpdate = new ArrayList<>(); @@ -265,7 +267,7 @@ public class ErpProductiveOrderServiceImpl implements ErpProductiveOrderService if (!result.toUpdate.isEmpty()) { erpProductiveOrderMapper.updateBatch(result.toUpdate); } - erpConfig.updateRedisCache(result.key, result.allnumbers); + myRedisConfig.updateRedisCache(result.key, result.allnumbers); } /** diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionService.java index d205e4a..27076a3 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionService.java @@ -1,6 +1,7 @@ package com.zt.plat.module.erp.service.erp; import com.zt.plat.framework.common.pojo.PageResult; +import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; @@ -62,4 +63,8 @@ public interface ErpProductiveVersionService { PageResult getErpProductiveVersionPage(ErpProductiveVersionPageReqVO pageReqVO); void callErpRfcInterface(); + + void enableErpProductiveVersion(ErpProductiveVersionSaveReqVO updateReqVO); + + String getErpProductiveVersionByFM(ErpProductiveVersionReqDTO reqDTO); } \ 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/ErpProductiveVersionServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionServiceImpl.java index ce6bbf5..45ba8e4 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpProductiveVersionServiceImpl.java @@ -7,8 +7,10 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +import com.zt.plat.module.erp.api.dto.ErpProductiveVersionReqDTO; +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.ErpProductiveVersionPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpProductiveVersionSaveReqVO; @@ -26,7 +28,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_PRODUCTIVE_VERSION_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +43,8 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ @Resource private ErpProductiveVersionMapper erpProductiveVersionMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -71,12 +75,12 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ } @Override - public void deleteErpProductiveVersionListByIds(List ids) { + public void deleteErpProductiveVersionListByIds(List ids) { // 校验存在 validateErpProductiveVersionExists(ids); // 删除 erpProductiveVersionMapper.deleteByIds(ids); - } + } private void validateErpProductiveVersionExists(List ids) { List list = erpProductiveVersionMapper.selectByIds(ids); @@ -101,47 +105,61 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ return erpProductiveVersionMapper.selectPage(pageReqVO); } + @Override + public void enableErpProductiveVersion(ErpProductiveVersionSaveReqVO updateReqVO) { + + validateErpProductiveVersionExists(updateReqVO.getId()); + erpProductiveVersionMapper.enableErpProductiveVersion(updateReqVO.getFactoryNumber(), updateReqVO.getMaterialNumber()); + // 更新 + ErpProductiveVersionDO updateObj = BeanUtils.toBean(updateReqVO, ErpProductiveVersionDO.class); + erpProductiveVersionMapper.updateById(updateObj); + } + + @Override + public String getErpProductiveVersionByFM(ErpProductiveVersionReqDTO reqDTO) { + return erpProductiveVersionMapper.getErpProductiveVersionByFM(reqDTO); + } + + @Override @Transactional @XxlJob("getErpProductiveVersionTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.生产版本; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String factKey ="erpMap"+ OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("WERKS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.生产版本; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_PRODUCTIVE_VERSION_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -149,7 +167,7 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -158,15 +176,17 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ JSONObject dataJson = dataArray.getJSONObject(i); if (dataJson != null) { ErpProductiveVersionDO DO = new ErpProductiveVersionDO(); - DO.setFactoryNumber(dataJson.getString("MATNR").trim()); - DO.setMaterialNumber(dataJson.getString("WERKS").trim()); - DO.setProductiveVersionNumber(dataJson.getString("VERID").trim()); + DO.setFactoryNumber(dataJson.getString("WERKS") != null ? dataJson.getString("WERKS").trim() : null); + DO.setMaterialNumber(dataJson.getString("MATNR") != null ? dataJson.getString("MATNR").trim() : null); + DO.setProductiveVersionNumber(dataJson.getString("VERID") != null ? dataJson.getString("VERID").trim() : null); DO.setProductiveVersionName(dataJson.getString("TEXT1")); DO.setBomNumber(dataJson.getString("STLAL")); - DO.setBlineGroup(dataJson.getString("PLNNR")); - DO.setGroupCount(Long.valueOf(dataJson.getString("ALNAL").trim())); - String number = dataJson.getString("MATNR").trim()+"-"+dataJson.getString("WERKS").trim()+"-"+dataJson.getString("VERID").trim(); - if (numbers.get(number)!=null) { + DO.setBlineGroup(dataJson.getString("ALNAL")); + String alnalValue = dataJson.getString("PLNNR"); + // 修复:增加对空字符串的判断 + DO.setGroupCount(alnalValue != null && !alnalValue.trim().isEmpty() ? Long.valueOf(alnalValue.trim()) : null); + String number = dataJson.getString("MATNR").trim() + "-" + dataJson.getString("WERKS").trim() + "-" + dataJson.getString("VERID").trim(); + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -181,11 +201,11 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ Map deleteNumbers = new HashMap<>(); for (String number : numbers.keySet()) { if (!dataArrayNumbers.contains(number)) { - deleteNumbers.put(number,numbers.get(number)); + deleteNumbers.put(number, numbers.get(number)); } } - return new ProcessingResult(toUpdate, toInsert,key,deleteNumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -203,17 +223,17 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ .in(ErpProductiveVersionDO::getProductiveVersionNumber, result.toInsert.stream().map(ErpProductiveVersionDO::getProductiveVersionNumber).collect(Collectors.toList())) ); Map numberIdMap = insertedRecords.stream() - .collect(Collectors.toMap(asset -> asset.getFactoryNumber() + "-" + asset.getMaterialNumber()+ "-" + asset.getProductiveVersionNumber(), ErpProductiveVersionDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + .collect(Collectors.toMap(asset -> asset.getFactoryNumber() + "-" + asset.getMaterialNumber() + "-" + asset.getProductiveVersionNumber(), ErpProductiveVersionDO::getId)); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpProductiveVersionMapper.updateBatch(result.toUpdate); } - if (!result.deleteNumbers.isEmpty()){ + if (!result.deleteNumbers.isEmpty()) { // 使用流式处理和批处理优化删除逻辑 List idsToDelete = new ArrayList<>(result.deleteNumbers.values()); erpProductiveVersionMapper.deleteByIds(idsToDelete); - erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); + myRedisConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); } } @@ -226,7 +246,7 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ private final String key; private final Map deleteNumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,Map deleteNumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, Map deleteNumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; @@ -241,6 +261,6 @@ public class ErpProductiveVersionServiceImpl implements ErpProductiveVersionServ String mapKey = asset.getFactoryNumber() + "-" + asset.getMaterialNumber() + "-" + asset.getProductiveVersionNumber(); existingNumbers.put(mapKey, asset.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpPurchaseOrganizationServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java index d23e2d5..c28cacd 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpPurchaseOrganizationServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpPurchaseOrganizationPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpPurchaseOrganizationSaveReqVO; @@ -26,7 +27,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_PURCHASE_ORGANIZATION_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati @Resource private ErpPurchaseOrganizationMapper erpPurchaseOrganizationMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -71,12 +74,12 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati } @Override - public void deleteErpPurchaseOrganizationListByIds(List ids) { + public void deleteErpPurchaseOrganizationListByIds(List ids) { // 校验存在 validateErpPurchaseOrganizationExists(ids); // 删除 erpPurchaseOrganizationMapper.deleteByIds(ids); - } + } private void validateErpPurchaseOrganizationExists(List ids) { List list = erpPurchaseOrganizationMapper.selectByIds(ids); @@ -105,51 +108,49 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati @Transactional @XxlJob("getErpPurchaseOrganizationTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.采购组织; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); -// String factKey ="erpMap"+ OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - String factKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("BUKRS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - // 往每个子项中添加BUKRS字段 - for (int j = 0; j < dataArray.size(); j++) { - JSONObject item = dataArray.getJSONObject(j); - if (item != null) { - item.put("BUKRS", number); - } - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.采购组织; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); +// String factKey ="erpMap"+ OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("BUKRS", number); + } + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_PURCHASE_ORGANIZATION_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -157,7 +158,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -170,7 +171,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati DO.setName(dataJson.getString("EKOTX")); DO.setNumber(number); DO.setCompanyNumber(dataJson.getString("BUKRS")); - if (numbers.get(number)!=null) { + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -189,7 +190,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati } } - return new ProcessingResult(toUpdate, toInsert,key,deleteNumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -209,15 +210,15 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpPurchaseOrganizationDO::getNumber, ErpPurchaseOrganizationDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpPurchaseOrganizationMapper.updateBatch(result.toUpdate); } - if (!result.deleteNumbers.isEmpty()){ + if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpPurchaseOrganizationMapper.delete(new LambdaQueryWrapperX().in(ErpPurchaseOrganizationDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -230,7 +231,7 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati private final String key; private final List deleteNumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List deleteNumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List deleteNumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; @@ -242,6 +243,6 @@ public class ErpPurchaseOrganizationServiceImpl implements ErpPurchaseOrganizati Map existingNumbers = erpPurchaseOrganizationMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpPurchaseOrganizationDO::getNumber, ErpPurchaseOrganizationDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpSalesOrganizationServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java index 64e43a3..3374488 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpSalesOrganizationServiceImpl.java @@ -7,8 +7,9 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +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.ErpSalesOrganizationPageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpSalesOrganizationSaveReqVO; @@ -26,7 +27,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_SALES_ORGANIZATION_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,6 +42,8 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ @Resource private ErpSalesOrganizationMapper erpSalesOrganizationMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @@ -71,12 +74,12 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ } @Override - public void deleteErpSalesOrganizationListByIds(List ids) { + public void deleteErpSalesOrganizationListByIds(List ids) { // 校验存在 validateErpSalesOrganizationExists(ids); // 删除 erpSalesOrganizationMapper.deleteByIds(ids); - } + } private void validateErpSalesOrganizationExists(List ids) { List list = erpSalesOrganizationMapper.selectByIds(ids); @@ -105,50 +108,48 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ @Transactional @XxlJob("getErpSalesOrganizationTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum =OftenEnum.FuncnrEnum.销售组织; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String factKey ="erpMap"+ OftenEnum.FuncnrEnum.公司代码.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("BUKRS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - // 往每个子项中添加BUKRS字段 - for (int j = 0; j < dataArray.size(); j++) { - JSONObject item = dataArray.getJSONObject(j); - if (item != null) { - item.put("BUKRS", number); - } - } - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL,funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.销售组织; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.公司代码.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_COMPANY_REDIS_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("BUKRS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("BUKRS", number); + } + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_SALES_ORGANIZATION_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -156,7 +157,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -169,7 +170,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ DO.setName(dataJson.getString("VTEXT")); DO.setNumber(number); DO.setCompanyNumber(dataJson.getString("BUKRS")); - if (numbers.get(number)!=null) { + if (numbers.get(number) != null) { // 更新 DO.setId(numbers.get(number)); toUpdate.add(DO); @@ -177,7 +178,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ // 新增 toInsert.add(DO); } - dataArrayNumbers.add( number); + dataArrayNumbers.add(number); } } // 过滤出numbers中有,但dataArray中KOSTL没有的记录,即为需要删除的数据 @@ -187,7 +188,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ deleteNumbers.add(number); } } - return new ProcessingResult(toUpdate, toInsert,key,deleteNumbers); + return new ProcessingResult(toUpdate, toInsert, key, deleteNumbers); } /** @@ -207,7 +208,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(ErpSalesOrganizationDO::getNumber, ErpSalesOrganizationDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpSalesOrganizationMapper.updateBatch(result.toUpdate); @@ -215,7 +216,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ if (!result.deleteNumbers.isEmpty()) { // 使用 in 条件批量删除,提高删除效率 erpSalesOrganizationMapper.delete(new LambdaQueryWrapperX().in(ErpSalesOrganizationDO::getNumber, result.deleteNumbers)); - erpConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); + myRedisConfig.deleteRedisCacheMap(result.key, result.deleteNumbers); } } @@ -228,7 +229,7 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ private final String key; private final List deleteNumbers; - public ProcessingResult(List toUpdate, List toInsert,String key,List deleteNumbers) { + public ProcessingResult(List toUpdate, List toInsert, String key, List deleteNumbers) { this.toUpdate = toUpdate; this.toInsert = toInsert; this.key = key; @@ -240,6 +241,6 @@ public class ErpSalesOrganizationServiceImpl implements ErpSalesOrganizationServ Map existingNumbers = erpSalesOrganizationMapper.selectList(new LambdaQueryWrapperX()) .stream() .collect(Collectors.toMap(ErpSalesOrganizationDO::getNumber, ErpSalesOrganizationDO::getId)); - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ 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/ErpWarehouseService.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseService.java index 79c5a09..9a52a72 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseService.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseService.java @@ -62,4 +62,6 @@ public interface ErpWarehouseService { PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO); void callErpRfcInterface(); + + void enableWarehouseList(List saveReqVOS); } \ 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/ErpWarehouseServiceImpl.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseServiceImpl.java index 41bb769..003812e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseServiceImpl.java +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/service/erp/ErpWarehouseServiceImpl.java @@ -7,14 +7,17 @@ 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.erp.common.conf.ErpConfig; -import com.zt.plat.module.erp.common.enums.OftenEnum; +import com.zt.plat.module.erp.dal.dataobject.erp.ErpFactoryDO; +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.ErpWarehousePageReqVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseRespVO; import com.zt.plat.module.erp.controller.admin.erp.vo.ErpWarehouseSaveReqVO; import com.zt.plat.module.erp.dal.dataobject.erp.ErpWarehouseDO; import com.zt.plat.module.erp.dal.mysql.erp.ErpWarehouseMapper; import jakarta.annotation.Resource; +import org.apache.ibatis.executor.BatchResult; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -26,7 +29,7 @@ import java.util.Map; import java.util.stream.Collectors; import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; -import static com.zt.plat.module.erp.enums.ErrorCodeConstants.ERP_WAREHOUSE_NOT_EXISTS; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; import static dm.jdbc.util.DriverUtil.log; /** @@ -41,16 +44,35 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { @Resource private ErpWarehouseMapper erpWarehouseMapper; + @Resource + private MyRedisConfig myRedisConfig; @Resource private ErpConfig erpConfig; @Override public ErpWarehouseRespVO createErpWarehouse(ErpWarehouseSaveReqVO createReqVO) { + // 校验存在 + validateErpFactoryExistsNumber(createReqVO.getNumber(), createReqVO.getFactoryNumber()); // 插入 - ErpWarehouseDO erpWarehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); - erpWarehouseMapper.insert(erpWarehouse); + ErpWarehouseDO warehouse = BeanUtils.toBean(createReqVO, ErpWarehouseDO.class); + // 库位编码自动生成,格式 KW-0001,依次新增 + if (warehouse.getNumber() == null) { + String maxCode = erpWarehouseMapper.selectMaxCode(); + if (maxCode == null) { + warehouse.setNumber("KW-0001"); + } else { + String prefix = "KW-"; + String numberPart = maxCode.substring(prefix.length()); + int nextNumber = Integer.parseInt(numberPart) + 1; + String nextCode = prefix + String.format("%04d", nextNumber); + warehouse.setNumber(nextCode); + } + } + warehouse.setType("SPLY"); + warehouse.setIsEnable("1"); + erpWarehouseMapper.insert(warehouse); // 返回 - return BeanUtils.toBean(erpWarehouse, ErpWarehouseRespVO.class); + return BeanUtils.toBean(warehouse, ErpWarehouseRespVO.class); } @Override @@ -59,7 +81,11 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { validateErpWarehouseExists(updateReqVO.getId()); // 更新 ErpWarehouseDO updateObj = BeanUtils.toBean(updateReqVO, ErpWarehouseDO.class); - erpWarehouseMapper.updateById(updateObj); + if (updateObj.getType().equals("SPLY") && updateObj.getIsEnable().equals("0")) { + erpWarehouseMapper.updateById(updateObj); + } else { + throw exception(ERP_WAREHOUSE_NOT_ALLOW_UPDATE); + } } @Override @@ -91,65 +117,100 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { } } + private void validateErpFactoryExistsNumber(String number, String factoryNumber) { + List list = erpWarehouseMapper.selectList(new LambdaQueryWrapperX()).stream() + .filter(erpWarehouseDO -> erpWarehouseDO.getNumber().equals(number)) + .filter(erpWarehouseDO -> erpWarehouseDO.getFactoryNumber().equals(factoryNumber)) + .toList(); + if (!list.isEmpty()) { + throw exception(ERP_WAREHOUSE_EXISTS); + } + } + @Override public ErpWarehouseDO getErpWarehouse(Long id) { return erpWarehouseMapper.selectById(id); } + @Override + public void enableWarehouseList(List saveReqVOS) { + List updateObj = BeanUtils.toBean(saveReqVOS, ErpWarehouseDO.class); + List count = erpWarehouseMapper.updateById(updateObj); + if (CollUtil.isEmpty(count)) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + } + + @Override public PageResult getErpWarehousePage(ErpWarehousePageReqVO pageReqVO) { - return erpWarehouseMapper.selectPage(pageReqVO); + // 获取分页数据 + List list = erpWarehouseMapper.getPageByReq(pageReqVO); + if (list == null) { + list = CollUtil.newArrayList(); + } + // 分页处理 + int pageNo = pageReqVO.getPageNo(); + int pageSize = pageReqVO.getPageSize(); + int total = list.size(); + // 计算分页起始和结束位置 + int fromIndex = (pageNo - 1) * pageSize; + int toIndex = Math.min(fromIndex + pageSize, total); + // 如果起始位置超出范围,则返回空列表 + if (fromIndex >= total) { + return new PageResult<>(new ArrayList<>(), (long) total); + } + // 截取当前页数据 + List pageList = list.subList(fromIndex, toIndex); + return new PageResult<>(pageList, (long) total); } @Override @Transactional @XxlJob("getErpWarehouseTask") public void callErpRfcInterface() { - try { - OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.库位信息; - String funcnr = funcnrEnum.getFuncnr(); - //防止缓存数据丢失 - String key = "erpMap" + funcnrEnum.getFuncnr(); - if (erpConfig.getRedisCacheMap(key).isEmpty()) { - initializeMap(key); - } - - Map req = new HashMap<>(); - JSONArray dataArrayALL = new JSONArray(); - String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); - Map redisCache = erpConfig.getRedisCacheMap(factKey); - if (CollUtil.isEmpty(redisCache)) { - return; - } - // 1. 调用ERP接口获取数据 - for (String number : redisCache.keySet()) { - req.put("WERKS", number); - // 1. 调用ERP接口获取数据 - JSONArray dataArray = erpConfig.fetchDataFromERP(funcnr, req); - if (dataArray == null || dataArray.isEmpty()) { - continue; - } - // 往每个子项中添加BUKRS字段 - for (int j = 0; j < dataArray.size(); j++) { - JSONObject item = dataArray.getJSONObject(j); - if (item != null) { - item.put("WERKS", number); - } - } - - dataArrayALL.addAll(dataArray); - } - - // 2. 处理公司数据,区分新增和更新 - ProcessingResult result = processData(dataArrayALL, funcnrEnum); - - // 3. 批量保存数据 - saveData(result); - - } catch (Exception e) { - log.error("调用ERP RFC接口失败: {}", e); - throw new RuntimeException("调用ERP RFC接口失败: " + e.getMessage(), e); + OftenEnum.FuncnrEnum funcnrEnum = OftenEnum.FuncnrEnum.库位信息; + String funcnr = funcnrEnum.getFuncnr(); + //防止缓存数据丢失 + String key = "erpMap" + funcnrEnum.getFuncnr(); + if (myRedisConfig.getRedisCacheMap(key).isEmpty()) { + initializeMap(key); } + + Map req = new HashMap<>(); + JSONArray dataArrayALL = new JSONArray(); + String factKey = "erpMap" + OftenEnum.FuncnrEnum.工厂信息.getFuncnr(); + Map redisCache = myRedisConfig.getRedisCacheMap(factKey); + if (CollUtil.isEmpty(redisCache)) { + throw exception(ERP_FACTORY_NOT_EXISTS); + } + // 1. 调用ERP接口获取数据 + for (String number : redisCache.keySet()) { + req.put("WERKS", number); + // 1. 调用ERP接口获取数据 + HashMap dataFromERP = erpConfig.fetchDataFromERP(funcnr, req); + JSONArray dataArray = (JSONArray) dataFromERP.get("E_RESP"); + if (dataArray == null || dataArray.isEmpty()) { + continue; + } + // 往每个子项中添加BUKRS字段 + for (int j = 0; j < dataArray.size(); j++) { + JSONObject item = dataArray.getJSONObject(j); + if (item != null) { + item.put("WERKS", number); + } + } + dataArrayALL.addAll(dataArray); + } + if (dataArrayALL.isEmpty()) { + throw exception(ERP_WAREHOUSE_NOT_EXISTS); + } + + // 2. 处理公司数据,区分新增和更新 + ProcessingResult result = processData(dataArrayALL, funcnrEnum); + + // 3. 批量保存数据 + saveData(result); } /** @@ -157,7 +218,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { */ private ProcessingResult processData(JSONArray dataArray, OftenEnum.FuncnrEnum funcnr) { String key = "erpMap" + funcnr.getFuncnr(); - Map numbers = erpConfig.getRedisCacheMap(key); + Map numbers = myRedisConfig.getRedisCacheMap(key); List toUpdate = new ArrayList<>(); List toInsert = new ArrayList<>(); @@ -185,7 +246,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { Map deleteNumbers = new HashMap<>(); for (String number : numbers.keySet()) { if (!dataArrayNumbers.contains(number)) { - deleteNumbers.put(number,numbers.get(number)); + deleteNumbers.put(number, numbers.get(number)); } } @@ -207,7 +268,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { ); Map numberIdMap = insertedRecords.stream() .collect(Collectors.toMap(asset -> asset.getFactoryNumber() + "-" + asset.getNumber(), ErpWarehouseDO::getId)); - erpConfig.addRedisCacheMap(result.key,numberIdMap); + myRedisConfig.addRedisCacheMap(result.key, numberIdMap); } if (!result.toUpdate.isEmpty()) { erpWarehouseMapper.updateBatch(result.toUpdate); @@ -216,7 +277,7 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { // 使用流式处理和批处理优化删除逻辑 List idsToDelete = new ArrayList<>(result.deleteNumbers.values()); erpWarehouseMapper.deleteByIds(idsToDelete); - erpConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); + myRedisConfig.deleteRedisCacheMap(result.key, new ArrayList<>(result.deleteNumbers.keySet())); } } @@ -238,12 +299,13 @@ public class ErpWarehouseServiceImpl implements ErpWarehouseService { } private void initializeMap(String key) { - List assets = erpWarehouseMapper.selectList(new LambdaQueryWrapperX()); + List assets = erpWarehouseMapper.selectList(new LambdaQueryWrapperX() + .eq(ErpWarehouseDO::getType, "ERP")); Map existingNumbers = new HashMap<>(); for (ErpWarehouseDO asset : assets) { String mapKey = asset.getFactoryNumber() + "-" + asset.getNumber(); existingNumbers.put(mapKey, asset.getId()); } - erpConfig.addRedisCacheMap(key, existingNumbers); + myRedisConfig.addRedisCacheMap(key, existingNumbers); } } \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java new file mode 100644 index 0000000..82d5b65 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/ErpConfig.java @@ -0,0 +1,166 @@ +package com.zt.plat.module.erp.utils; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.zt.plat.module.erp.api.dto.ErpSubmitReqDTO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.client.RestTemplate; + +import java.util.*; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; +import static dm.jdbc.util.DriverUtil.log; + +@Configuration +public class ErpConfig { + + @Value("${erp.address:}") + private String erpAddress; + + @Value("${erp.sapsys:}") + private String sapsys; + + /** + * 调用ERP接口获取erp数据 + */ + public HashMap fetchDataFromERP(String funcnr, Map req) { + try { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/get"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("sapsys", sapsys); + requestBody.put("funcnr", funcnr); // 获取枚举值 + if (req != null) { + requestBody.put("req", req); + } + + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + // 解析响应结果 + String responseBody = response.getBody(); + if (responseBody.isEmpty()) { + throw exception(ERP_NOT_EXISTS); + } + + HashMap resMap = new HashMap<>(); + JSONObject jsonResponse = JSON.parseObject(responseBody); + if (jsonResponse == null) { + throw exception(ERP_NOT_JSON_EXISTS); + } + // 正确获取E_DATA数组 + JSONObject dataObject = jsonResponse.getJSONObject("data"); + //判断 result里的succeed是否为true + boolean succeed = jsonResponse.getBoolean("succeed"); + if (succeed && "S".equals(dataObject.getString("E_FLAG"))) { + String flag = "S"; + JSONArray E_RESP = dataObject.getJSONArray("E_DATA"); + String E_MSG = dataObject.getString("E_MSG"); + resMap.put("E_RESP", E_RESP); + resMap.put("resStr", E_MSG); + resMap.put("flag", flag); + return resMap; + } else { + String E_MSG = dataObject.getString("E_MSG"); + String flag = "E"; + resMap.put("E_RESP", null); + resMap.put("resStr", E_MSG); + resMap.put("flag", flag); + return resMap; + } + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw exception(ERP_ERROR_EXISTS, e); + } + } + + /** + * 调用ERP接口更新erp数据 + */ + public HashMap pushDataToErp(ErpSubmitReqDTO reqDTO) { + try { + // 构建完整URL + String url = "http://" + erpAddress + "/api/rfc/post"; + // 构建请求参数 + JSONObject requestBody = new JSONObject(); + requestBody.put("uuid", UUID.randomUUID().toString()); + requestBody.put("sapsys", sapsys); + requestBody.put("srcsys", "DSC"); + requestBody.put("funcnr", reqDTO.getFuncnr()); + requestBody.put("bskey", reqDTO.getBskey()); + requestBody.put("usrid", reqDTO.getUsrid()); + requestBody.put("usrnm", reqDTO.getUsrnm()); + if (reqDTO.getReq() != null) { + requestBody.put("req", reqDTO.getReq()); + } + // 设置请求头 + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + + // 创建HTTP请求实体 + HttpEntity requestEntity = new HttpEntity<>(requestBody.toJSONString(), headers); + + // 发送POST请求 + RestTemplate restTemplate = new RestTemplate(); + ResponseEntity response = restTemplate.postForEntity(url, requestEntity, String.class); + + // 解析响应结果 + String responseBody = response.getBody(); + if (responseBody.isEmpty()) { + throw exception(ERP_NOT_EXISTS); + } + + JSONObject jsonResponse = JSON.parseObject(responseBody); + if (jsonResponse == null) { + throw exception(ERP_NOT_JSON_EXISTS); + } + + HashMap resMap = new HashMap<>(); + boolean succeed = jsonResponse.getBoolean("succeed"); + JSONObject data = jsonResponse.getJSONObject("data"); + if (data == null) { + log.error("SAP接口返回值为空," + jsonResponse.getString("msg")); + throw exception(ERP_NOT_EXISTS); + } else if (succeed && "S".equals(data.getString("E_FLAG"))) { + String flag = "S"; + String E_RESP = data.getString("E_RESP"); + String E_MSG = data.getString("ET_MSG"); + resMap.put("E_RESP", E_RESP); + resMap.put("resStr", E_MSG); + resMap.put("flag", flag); + } else if (!succeed && "E".equals(data.getString("E_FLAG"))) { + String flag = "E"; + String E_MSG = data.getString("ET_MSG"); + if (StrUtil.isBlank(E_MSG)) { + E_MSG = jsonResponse.getString("msg"); + } + String E_RESP = data.getString("E_RESP"); + resMap.put("E_RESP", E_RESP); + resMap.put("resStr", E_MSG); + resMap.put("flag", flag); + } + return resMap; + } catch (Exception e) { + log.error("调用ERP RFC接口失败: {}", e); + throw exception(ERP_ERROR_EXISTS); + } + } + +} diff --git a/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java new file mode 100644 index 0000000..17f5522 --- /dev/null +++ b/zt-module-erp/zt-module-erp-server/src/main/java/com/zt/plat/module/erp/utils/MyRedisConfig.java @@ -0,0 +1,186 @@ +package com.zt.plat.module.erp.utils; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; +import jakarta.annotation.Resource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +import java.util.*; +import java.util.stream.Collectors; + +import static com.zt.plat.framework.common.exception.util.ServiceExceptionUtil.exception; +import static com.zt.plat.module.erp.enums.ErrorCodeConstants.*; +import static dm.jdbc.util.DriverUtil.log; + + +/** + * @author wuxz + * @create 2022-06-07 20:54 + */ +@Primary +@Configuration +public class MyRedisConfig { + + @Resource + private RedisTemplate redisTemplate; + + @Bean(value = "MyRedisTemplate") + public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { + RedisTemplate redisTemplate = new RedisTemplate<>(); + redisTemplate.setConnectionFactory(redisConnectionFactory); + + // 通过 Jackson 组件进行序列化 + RedisSerializer serializer = redisSerializer(); + + // key 和 value + // 一般来说, redis-key采用字符串序列化; + // redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。 + redisTemplate.setKeySerializer(new StringRedisSerializer()); + redisTemplate.setValueSerializer(serializer); + + redisTemplate.setHashKeySerializer(new StringRedisSerializer()); + redisTemplate.setHashValueSerializer(serializer); + + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + + @Bean + public RedisSerializer redisSerializer() { + //创建JSON序列化器 + Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + // objectMapper.enableDefaultTyping()被弃用 + objectMapper.activateDefaultTyping( + LaissezFaireSubTypeValidator.instance, + ObjectMapper.DefaultTyping.NON_FINAL, + JsonTypeInfo.As.WRAPPER_ARRAY); + serializer.setObjectMapper(objectMapper); + return serializer; + } + + + //list + public Map> numbers(JSONArray dataArray, String key, String dataKey) { + // 使用 Redis 获取缓存数据 + Map> numbers = new HashMap<>(); + List cachedNumbers = (List) redisTemplate.opsForValue().get(key); + if (cachedNumbers == null) { + cachedNumbers = new ArrayList<>(); + } + + // 提取有效的 BUKRS 编号 + List existingNumbers; + if (dataArray != null) { + // 将dataKey按"-"分割成多个部分 + String[] keyParts = dataKey.split("-"); + existingNumbers = dataArray.stream() + .filter(Objects::nonNull) + .map(dataJson -> { + JSONObject jsonObject = (JSONObject) dataJson; + // 根据每个部分逐级获取值并拼接 + StringBuilder sb = new StringBuilder(); + for (String part : keyParts) { + String value = jsonObject.getString(part); + if (value != null) { + if (sb.length() > 0) { + sb.append("-"); + } + sb.append(value.trim()); + } else { + // 如果某一部分为空,则整个值视为无效 + return null; + } + } + return sb.toString(); + }) + .filter(Objects::nonNull) // 过滤掉无效值 + .collect(Collectors.toList()); + } else { + existingNumbers = new ArrayList<>(); + } + + // 找出共同存在的编号 + Set cachedNumberSet = new HashSet<>(cachedNumbers != null ? cachedNumbers : new ArrayList<>()); + List commonNumbers = existingNumbers.stream() + .filter(cachedNumberSet::contains) + .collect(Collectors.toList()); + numbers.put("com", commonNumbers); + + //找出需要删除的字段。只有erp查询全部的接口能用到 + List deleteNumbers = cachedNumberSet.stream() + .filter(num -> !existingNumbers.contains(num)) + .collect(Collectors.toList()); + numbers.put("delete", deleteNumbers); + + // 找出需要新增的编号 + List newNumbers = existingNumbers.stream() + .filter(num -> !cachedNumberSet.contains(num)) + .toList(); + + // 合并所有编号 + List allNumbers = new ArrayList<>(cachedNumbers); + allNumbers.addAll(newNumbers); + numbers.put("all", allNumbers); + + return numbers; + } + + public void updateRedisCache(String key, List allnumbers) { + // 使用 Redis 更新缓存数据 + redisTemplate.opsForValue().set(key, allnumbers); + } + + public List getRedisCache(String key) { + // 使用 Redis 更新缓存数据 + return (List) redisTemplate.opsForValue().get(key); + } + + //map + public Map getRedisCacheMap(String key) { + try { + // 使用 Redis 获取缓存数据 + Map result = (Map) redisTemplate.opsForHash().entries(key); + return result; + } catch (Exception e) { + throw exception(ERP_REDIS_EXISTS); + } + } + + public void addRedisCacheMap(String key, Map allnumbers) { + // 使用 Redis 更新缓存数据 + redisTemplate.opsForHash().putAll(key, allnumbers); + } + + public void deleteRedisCacheMap(String key, List deleteNumbers) { + if (deleteNumbers == null || deleteNumbers.isEmpty()) { + log.debug("No items to delete from Redis hash: {}", key); + return; + } + + try { + Object[] keysToDelete = deleteNumbers.toArray(new String[0]); + Long deletedCount = redisTemplate.opsForHash().delete(key, keysToDelete); + log.debug("Deleted" + deletedCount + "items from Redis hash:" + key); + } catch (Exception e) { + log.error("Failed to delete items from Redis hash:" + key, e); + throw e; + } + } + + +} \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml index 12a0566..fb84721 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpAssetMapper.xml @@ -8,23 +8,4 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - UPDATE sply_erp_ast - - NAME = CASE - - WHEN CPN_NUM = #{item.companyNumber} AND MAIN_AST_NUM = #{item.mainAssetNumber} THEN #{item.name} - - END, - CPN_ID = CASE - - WHEN CPN_NUM = #{item.companyNumber} AND MAIN_AST_NUM = #{item.mainAssetNumber} THEN #{item.companyId} - - END - - WHERE (CPN_NUM, MAIN_AST_NUM) IN - - #{item.companyNumber}, #{item.mainAssetNumber} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml index 85d4dfb..632e44e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpBomMapper.xml @@ -9,18 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - - - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml index f9f4620..0122889 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCompanyMapper.xml @@ -8,15 +8,4 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml index 688d9d4..e7dacd8 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpContractMapper.xml @@ -8,15 +8,4 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml index 498c4e0..54e0e40 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCostcenterMapper.xml @@ -9,61 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - UPDATE sply_erp_cctr - SET - NAME = CASE NUM - - - WHEN #{item.number} THEN #{item.name} - - - ELSE NAME - END, - IS_USE = CASE NUM - - - WHEN #{item.number} THEN #{item.isUse} - - - ELSE IS_USE - END, - SCO_NUM = CASE NUM - - - WHEN #{item.number} THEN #{item.scopeNumber} - - - ELSE SCO_NUM - END, - STRT_DT = CASE NUM - - - WHEN #{item.number} THEN #{item.startDate} - - - ELSE STRT_DT - END, - END_DT = CASE NUM - - - WHEN #{item.number} THEN #{item.endDate} - - - ELSE END_DT - END, - SCO_NAME = CASE NUM - - - WHEN #{item.number} THEN #{item.scopeName} - - - ELSE SCO_NAME - END - WHERE NUM IN - - #{item.number} - - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml index 31f5228..8e76ec1 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpCustomerMapper.xml @@ -8,15 +8,4 @@ 代码生成器暂时只生成 Mapper XML 文件本身,更多推荐 MybatisX 快速开发插件来生成查询。 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml index 4a23831..36139fc 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpFactoryMapper.xml @@ -9,14 +9,36 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - + + + \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml index b59832f..4a1460c 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpInternalOrderMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml index 666dc57..44c148f 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpMaterialMapper.xml @@ -11,26 +11,43 @@ - - UPDATE SPLY_ERP_MTRL - - DOWN_CTR_NUM = #{item.downCtrNum}, - CTR_NUM = #{item.ctrNum}, - CRT_DT = #{item.crtDt}, - MTRL_TP = #{item.mtrlTp}, - MTRL_GRP_DT = #{item.mtrlGrpDt}, - EXT_MTRL_GRP_DT = #{item.extMtrlGrpDt}, - UNT = #{item.unt}, - UNT_DSP = #{item.untDsp}, - MTRL_TP_DSP = #{item.mtrlTpDsp}, - MTRL_GRP_DSP = #{item.mtrlGrpDsp}, - EXT_MTRL_GRP_DSP = #{item.extMtrlGrpDsp}, - MTRL_NAME = #{item.mtrlName}, - MTRL_LEN_DSP = #{item.mtrlLenDsp}, - TENANT_ID = #{item.tenantId}, - - WHERE DOWN_CTR_NUM = #{item.number} - - + + UPDATE SPLY_ERP_MTRL + + DOWN_CTR_NUM = #{item.downCenterNumber}, + CTR_NUM = #{item.centerNumber}, + CRT_DT = #{item.createDate}, + MTRL_TP = #{item.materialType}, + MTRL_GRP_DT = #{item.materialGroupDate}, + EXT_MTRL_GRP_DT = #{item.externalMaterialGroupDate}, + UNT = #{item.unit}, + UNT_DSP = #{item.unitDescription}, + MTRL_TP_DSP = #{item.materialTypeDescription}, + MTRL_GRP_DSP = #{item.materialGroupDescription}, + EXT_MTRL_GRP_DSP =#{item.externalMaterialGroupDescription}, + MTRL_NAME = #{item.materialName}, + MTRL_LEN_DSP = #{item.materialLengthDescription}, + TP = #{item.type}, + TENANT_ID = #{item.tenantId}, + + WHERE DOWN_CTR_NUM = #{item.downCenterNumber} + + + + + + + diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml index f487c8d..b58d773 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessDetailMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml index 433aa98..e7b766e 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProcessMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml index 84cc4c6..e39974f 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveOrderMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml index 9cdaf4c..ae65326 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpProductiveVersionMapper.xml @@ -9,14 +9,10 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - + + UPDATE sply_erp_pdtv_ver + SET IS_ENB = 1 + WHERE FACT_NUM = #{factoryNumber} + AND MTRL_NUM = #{materialNumber} \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml index 2a28feb..eac0416 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpPurchaseOrganizationMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml index 09c59b5..616ebb0 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpSalesOrganizationMapper.xml @@ -9,14 +9,4 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - \ No newline at end of file diff --git a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml index a78b3ab..4308b67 100644 --- a/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml +++ b/zt-module-erp/zt-module-erp-server/src/main/resources/mapper/ErpWarehouseMapper.xml @@ -9,14 +9,36 @@ 文档可见:https://www.iocoder.cn/MyBatis/x-plugins/ --> - - - UPDATE sply_erp_fact - - NAME = #{item.name}, - CPN_ID = #{item.companyId}, - - WHERE NUM = #{item.number} - - + + + \ No newline at end of file